들어가기
첫번째 학원을 끝마치고, 현재 심화과정으로 학원을 추가로 수강 중 MSA구조와 레거시 모놀리틱 구조가 있다는 사실을 심화과정을 통해 처음 알게 되었는데.. "작성자가" 작성하면서 기억하기 위해 기록하며 MSA위주로 포스팅 될 글이다.
MSA? Monolithic?
MSA와 모놀리틱 도대체 무슨 차이가 있을까?

위의 사진을 보면 한 폴더를 회원가입부터, 카테고리, 주문, 결제, 상품 등의 서비스가 구성해, 하나의 구조물과 같은 느낌을 받는다.

그러나 위의 사진을 보면 MSA구조로 만들었기 떄문에 src폴더 내에는 "하나의 서비스"만 들어가 있으며, 다른 서비스는 아예 분리된 다른 폴더에서 코드가 짜여있다.

다음은 쉽게 이해 할 수 있는 모놀리틱과 MSA의 차이다. 맨 처음 사진의 기능을 하나하나 분할해서 각기 다른 폴더로 코드가 짜이고, 유지보수가 된다면 두번째 사진과 같이 MSA구조로 변경되는 것이다.
특징과 장,단점

위의 사진은 모놀리틱 구조이다.
사진과 같이 하나의 서비스 내에 회원, 상품, 주문으로 구성되어 있고 하나의 데이터 소스만 사용하는 것이 특징이다.
그럼 이 모놀리틱 구조의 장, 단점은 뭘까?
장점
- 간단하게 구현하기 좋다
- 하나의 서비스, 하나의 데이터소스를 사용하기 때문에 데이터 일관성이 지켜진다.
단점
- 데이터를 확장하는 경우 전체 코드를 신경써야 한다.
- 하나를 변경하더라도 결합성이 짙어 개발 소요 시간이 증가한다.

다음 그림은 모놀리틱 구조를 MSA구조로 변경한 경우이다.
더이상 하나로 구성되지 않고 서비스라는 구조를 각 폴더들 (회원, 상품, 주문)이 구성하며 각각 자신의 데이터소스를 갖고 있는 것이 특징이다. MSA 구조의 장, 단점은 다음과 같다
장점
- 확장성: 특정 서비스만 확장하여 성능을 최적화할 수 있다
- 독립적 배포: 개별 서비스의 변경 사항을 독립적으로 배포할 수 있다
- 유연성: 서비스별로 적합한 기술 스택을 선택할 수 있다
단점
- 복잡성 증가: 서비스 간 통신, 데이터 일관성 유지 등의 복잡성이 증가한다
- 운영비용 증가: 각 서비스의 모니터링, 로깅 등을 개별적으로 관리해야 한다
위의 장, 단점을 분석해보면 항상 MSA구조가 옳은 것은 아니다. 상황에 맞게 단순 프로그램이라면 모놀리틱을 사용하는 것이. 시간이 지나 기업의 크기가 더 커지는 경우에 MSA구조로 변경하는 것이 더 효율적일수도 있다.
마무리
사실 MSA(Micro service Architecture) 에 대해서 더 설명할 것 들이 많지만.. 한, 두개 포스팅으론 절대 안될 것 같아서 (GateWay, OAuth2.0, Jwt, Data암호화 등등..) 여기서 마무리하겠다
