step 0 모놀리식 아키텍쳐 상태에서 MSA를 적용할 때 급박하게 바로 step3로 넘어가는 것은 위험부담이 있어, step을 차례로 진행해 보겠다.
위 사진은 모놀리식 프로젝트의 구조입니다. 이커머스 프로젝트를 진행 중이며 패키지별 간단한 설명을 하고 넘어가겠습니다.
address : 사용자 주소 관련 내용입니다. 사용자 1명이 여러개의 주소를 가질 수 있어 별도로 분리되어있습니다.
global : 설정관련 내용이 담겨있습니다. JWT토큰이나 Global Exception 등이 담겨있습니다.
kakaopay : 결제모듈로 선택한 kakao pay 부분 입니다.
order : 실질적인 주문 내용입니다.
product : 상품 관련 내용입니다.
review : 주문 상품에 대한 리뷰 내용입니다.
s3 : 상품과 리뷰에 관한 이미지 관련 내용입니다.
user : 유저에 관한 내용입니다.
각 도메인 패키지에는 각각 controller, service, repository, entity, dto로 구성되어있다
이를 MSA로 분리해보겠습니다. 예시로 한 부분만 표시하겠습니다.
먼저 모놀리식 아키텍쳐에서 각각의 파트로 코드를 분리하였고, 데이터 베이스를 하나만 사용하고 있으며 각각의 프로젝트가 각각의 기능을 수행하고 있습니다. 다만 여러 문제점 또한 발생하고 있습니다.
우선 분리된 프로젝트의 기능을 정리해보겠다.
User : User 패키지 & Address 패키지
Product : Product 패키지 & S3 패키지
Order : Order 패키지 & KakaoPay 패키지
Review : Review 패키지 & S3 패키지
공통적으로 JWT 토큰 관련 로직, Global Exception부분에서 중복이 발생하였습니다.
다음 게시글에서는 중복이 발생하는 문제에 대해 해결하는 방법에 대해서 다뤄보겠습니다.