MSA란?
모든 구성요소를 한 프로젝트에 통합하여 하나의 패키징으로 배포하는 형태인 Monolithic Architecture와는 달리 서비스를 작게 나누어 연결한 구조를 말한다.
구조가 나뉘어 있어 일부분만 업데이트가 가능해 유연하다는 특징이 있다.
분리되어 있기 때문에 유지 보수가 쉽고, 부분별로 다른 기술스택을 사용해도 연결에 크게 무리가 없다.
서비스별로 독립적인 배포가 가능하다.
하지만 나뉘어있기 때문에 어떻게 내부 시스템 통신을 할지 결정해야 한다는 복잡한 면이 있다.
트랜잭션을 어떻게 유지할지 결정하기 어렵다는 점과 통합 테스트가 어렵다는 점도 단점이다.
만약 서비스 하나를 재배포하는 경우, 다른 서비스들과 정상적으로 연계가 이루어지는지 확인 작업이 필요하다.