본문 바로가기

전체 글47

[MSA] API Gateway - 마이크로 서비스 Routing 처리하기(feat. Spring Cloud Gateway) 본 포스팅은 Spring Cloud 를 기반으로 MSA 구조를 학습하고자 작성하는 포스팅입니다. 아래 포스팅을 먼저 보고 오시면 이해가 수월하시니 참고바랍니다. https://byunsw4.tistory.com/31 [MSA] Micro Service Architecture(MSA) 시작하기 - Eureka Server & Client 1. 모놀리식 vs MSA MSA 를 공부하게 되면, 자연스럽게 모놀리식 이라는 개념 또한 접하게 됩니다. 모놀리식이란, 여러 도메인을 하나의 아키텍처에 구성해놓은 서비스로, 과거에 흔히 개발됐던 하 byunsw4.tistory.com 1. API Gateway 란? MSA 구조에서 꼭 필요한 구성 중 하나는, 클라이언트의 요청이 각각 어떤 마이크로 서비스에서 실행되어야 .. 2023. 9. 28.
[Spring MVC] @WebMvcTest 에서 Multipart 테스트 하기. 0. 개요 Controller 를 대상으로 단위테스트를 작성해보고자 했는데, 테스트 하고자 했던 API 가 상품 등록 API 였습니다. 상품 등록 시, 필요한 정보는 아래와 같았습니다. 1. 상품명, 상품가격, 재고수량, 상품의 상/하위 카테고리 정보, 상품 설명 2. 상품을 표시할 때 사용할 대표 이미지 1번의 내용만 필요했다면 단순했겠지만, 문제는 2. 상품을 표시할 때 사용할 대표 이미지 입니다. 통상적으로 File 같은 정보가 API 에 Request 에 포함되게 하기 위해선, Content-Type 을 application/json 방식이 아닌 multipart/form-data 방식을 사용해야 합니다. 따라서, 해당 API 를 테스트하기 위해선 multipart/form-data 방식의 요청을.. 2023. 9. 22.
[MSA] Micro Service Architecture(MSA) 시작하기 - Eureka Server & Client 1. 모놀리식 vs MSA MSA 를 공부하게 되면, 자연스럽게 모놀리식 이라는 개념 또한 접하게 됩니다. 모놀리식이란, 여러 도메인을 하나의 아키텍처에 구성해놓은 서비스로, 과거에 흔히 개발됐던 하나의 프로젝트에 애플리케이션 전체가 구현된 형태를 뜻합니다. 그에 반대되는 MSA는 여러 작은 서비스들이 함께 동작하는 서비스로, 각자의 독립적인 서비스가 외부통신을 통해 데이터를 주고 받고, 시스템에 요구되는 처리를 수행하는 형태를 뜻합니다. 모놀리식과 대비되는 MSA의 장점은 아래와 같습니다. 각각의 서비스에 최적의 아키텍처를 설계할 수 있다. 하나의 서비스의 장애가 전체 서비스에 영향을 주지 않는다. MSA 를 구성하는 작은 서비스 하나를 마이크로 서비스 라고 부르며, 각 마이크로 서비스마다 도메인에 맞.. 2023. 9. 10.
[DDD] CQRS - Command 와 Query 의 분리 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 출처: 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) 1. CRUD 를 처리하는 Service 객체지향을 추구하면서 개발을 하다보면, 가장 힘든 일 중 하나가 "class 들의 역할을 적절히 배분하는 것" 일 것 입니다. 개발을 하다보면 아래와 같이 코드를 작성하는 경우가 자주 발생합니다. @RequiredArgsConstructor @Transactional(readOnly = true) @Service public class CartService { private final CartRepository cartRepository; private final CartQueryRepository cartQue.. 2023. 9. 7.
[DDD] 이벤트 처리하기 : 3. 이벤트 저장소 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 출처: 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) 이벤트를 비동기 방식으로 처리하는 방법 중 하나는 이벤트저장소를 활용하는 방법입니다. 처리할 이벤트를 DB 같은 저장소에 모아두고, 이벤트를 일정 주기를 두고 조회해가서 이벤트를 실행하는 방식입니다. 위 내용을 그림으로 표현하면 아래 처럼 표현됩니다. 이벤트 저장 : 이벤트 생성 주체에서 이벤트를 생성하고 나서 이벤트 정보를 이벤트 저장소를 저장합니다. 이벤트 조회 : 이벤트를 사용하는 주체에서 저장된 이벤트 목록을 조회한다. 이벤트 실행 : 조회된 이벤트를 실행한다. 이벤트 저장소를 활용하기 위해 필요하다고 생각되는 부분은 바로 "일정 주기를 통해 실.. 2023. 8. 24.
[DDD] 이벤트 처리하기 : 2. 메시지 큐 (Message Queue feat. Kafka) 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 출처: 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) spring 에서 지원하는 이벤트 기능은 같은 서비스 내에서만 적용이 가능하다는 한계가 존재합니다. 하지만, 서비스가 커져서 각각의 도메인별로 시스템을 나누어 운영하는 MSA 구조를 도입하게 된다면, 이벤트 기능은 사용할 수 없게됩니다. 이럴경우, 시스템 간 메세지를 주고받아 데이터를 동기화하거나 특정 로직의 후처리를 진행하게 되는데 이때 사용하는 시스템을 메시지 큐(Message Queue) 라고 부르고, 대표적으로 카프카(Kafka) 라는 오픈소스 솔루션이 존재합니다. 오늘은 비동기처리를 메세지 큐, 그 중에서도 kafka 로 처리하는 방법을 간단히.. 2023. 8. 1.