일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nodejs
- 다익스트라 알고리즘
- AWS
- BFS
- EC2
- 완전탐색
- spring
- 동적프로그래밍
- Spring Boot
- mysql
- 백준
- 브루트포스
- java
- EventListener
- 라우터
- react
- 자료구조
- url parsing
- Algorithm
- 탐욕법
- 서버구축
- Router
- 리액트
- sort
- 토이프로젝트
- 정렬
- 스터디
- 알고리즘
- 백준알고리즘
- ELB
- Today
- Total
목록전체 글 (111)
공부하는 블로그
사이드 프로젝트를 진행하면서 서버 비용에 대한 부담을 조금이라도 절감하기 위해서 프리티어 계정으로 옮겨 다니기로 팀원들과 결정하였습니다. Elastic IP는 다른 계정으로 IP 주소를 그대로 옮기는 기능이 있었는데, S3 버킷을 다른 계정으로 기존 이름 그대로 마이그레이션하는 기능은 찾지 못하여 Source 버킷의 접근 권한을 변경하고, 버킷의 객체들을 CLI의 sync 명령어를 이용하여 다른 계정에서 전부 땡겨가는 방식으로 진행하였습니다. Source Bucket 버킷 정책 추가 마이그레이션 대상이 되는 데이터가 위치한 Source Bucket에 Destination Account에서 접근할 수 있도록 접근 권한을 추가합니다. 1. Destination Account ID 확인 우측 상단의 계정 이름..
@Transactional? 데이터 베이스에 트랜잭션 범위를 알린다. @Transactional이 선언된 메서드가 수행될 때, DB는 auto commit을 일시적으로 껐다가 메서드가 종료되는 시점에 메서드 결과에 따라 commit 또는 rollback을 수행하고 auto commit 옵션을 다시 켠다. Propagation @Transactional 어노테이션에 옵션 중 하나로 트랜잭션의 전파 레벨을 설정할 수 있다. 전파 레벨은 하나의 트랜잭션이 수행 중일 때, 같은 TransactionManager 내에서 추가 트랜잭션이 발생하게 된다면 어떤 방식으로 새로운 트랜잭션을 진행할 지 결정하는 것이다. 스프링에서는 7가지의 전파 레벨을 지원한다. REQUIRED 기존 트랜잭션이 있으면 그 트랜잭션을 사용..
MockServer? 테스트 코드를 작성하다보면 다른 서버로 웹 요청을 날리는 로직에 대해 어떻게 처리해야할지 고민하게 된다. 실제 웹 서버로의 요청을 날리기엔 네트워크 상태에 따라 테스트 케이스가 깨지는 경우도 발생하고, 실제 웹 서버에 테스트용 데이터가 전송되는 것도 이상하다. 결제 서비스의 경우 실제 요청이 진행될 경우 결제가 일어나게 되기도 한다. 이를 막기 위해서는 웹 서버를 Mocking 해야하는 상황이 발생한다. 이 때, Mock Server 라이브러리를 사용하면 간단하게 요청을 받을 웹 서버를 생성 가능하다. Spring Test With MockServer MockServer를 이용해서 다른 웹 서버로 요청을 날리는 클라이언트에 대해 단위 테스트를 진행해보자. 먼저 MockServer 라..
@TransactionalEventListener 이벤트 처리 로직에서 트랜잭션을 적용해야 하는 경우 사용한다. phase 옵션으로 어떤 식으로 트랜잭션 내에서 동작을 할 지 결정할 수 있다. TransactionPhase.AFTER_COMMIT 기본값 트랜잭션이 commit 되었을 때 이벤트 로직을 실행한다. TransactionPhase.AFTER_ROLLBACK 트랜잭션이 rollback 되었을 때 이벤트 로직을 실행한다. TransactionPhase.AFTER_COMPLETION 트랜잭션이 완료(commit 또는 rollback) 되었을 때 이벤트 로직을 실행한다. TransactionPhase.BEFORE_COMMIT 트랜잭션이 commit 되기 전에 이벤트를 실행한다. Example 옵션값 ..
Event Driven Programing 특정 동작에 대해 이벤트를 발생시키고 해당 이벤트를 구독하고 있는 여러 서비스에 이벤트를 전달시켜 동작하게하는 프로그래밍 방식이다. MSA 환경에서 이벤트 기반의 서비스 운영을 위해서 Kafka, RabbitMQ와 같은 다양한 메세지큐 시스템이 이미 개발되어 있다. Spring Application Event? 스프링에서 ApplicationEventPublisher을 이용하여 이벤트 기반의 프로그래밍을 할 수 있다. ApplicationEventPublisher를 통해 이벤트를 발행하면, 다른 Bean에서도 @EventListener를 이용하여 이벤트 데이터를 가져올 수 있다. Kafka가 외부 다른 어플리케이션끼리 메세지를 주고받을 수 있다면, 스프링 내부에..
BDD? Behavior Driven Development. 행위 주도 개발의 줄임말로, 사용자의 행위에 중심을 두고 짜여진 시나리오를 기반으로 테스트 코드를 작성한다. 즉, 주어진 환경에서 유저의 행위에 대한 결과 검증을 진행한다. Given, When, Then BDD의 정형화된 테스트 형식이다. - Given : 시나리오에서 유저에게 주어진 환경 - When : 유저의 행위 - Then : 행위의 예상되는 결과 예를 들어, 나는 빵집 리뷰 플랫폼을 만드는 개발자인데 "서울지역 이외의 빵집을 사용자가 리뷰로 등록할 때, 리뷰 등록이 불가능하다." 라는 유저 시나리오가 있다고 가정하면, - Given : 서울 이외의 지역 입력 - When : 사용자가 리뷰 등록 - Then : 예외 발생 로 나누어 테..
Mockito? 자바에서 단위 테스트를 위한 목업 객체를 편하게 만들 수 있도록 제공되는 프레임워크입니다. 어노테이션을 선언하여 간단하게 Mocking이 가능합니다. Mock @ExtendsWith(Mockito.class) 테스트 클래스 상단에 선언하여 Mockito를 사용함을 스프링 애플리케이션에 알립니다. @Mock 타겟 필드를 Mock으로 만들어줍니다. Mock으로 만들 멤버 객체에 선언하여 사용합니다. @InjectMock 해당 어노테이션이 선언된 타겟 필드에 @Mock 어노테이션이 붙은 Mock 객체를 주입시켜줍니다. 단위 테스트의 대상이 될 클래스에 선언하여 사용합니다. @ExtendsWith(MockitoExtension.class) // 테스트 클래스에 선언 class MyServiceT..
* 토이 프로젝트를 진행하면서 AWS를 이용하여 Spring 기반의 운영 서버를 구축한 내용을 정리했습니다. 이번 포스팅에서는 ELB에 https 접속을 위한 SSL 인증서를 연결하는 방법에 대해 알아보겠습니다. 선행 내용들은 이전 포스팅을 참고해주세요! 0. SSL? Secure Sockets Layer(SSL)은 웹사이트와 브라우저 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술입니다. 웹서비스에서 사용되는 프로토콜인 HTTP에 보안을 위한 SSL 인증서를 적용하면 HTTPS 프로토콜이 됩니다. 보안이 중요해진 요즘 웹서비스를 안전하게 운영하기 위해서는 HTTPS 적용은 필수적이라 할 수 있습니다. 1. AWS Certification Manager(ACM) SSL/TLS ..