개념

하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처

특징

애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션을 제공

각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포됨

서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON 같은 경량 통신 프로토콜을 사용

기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관 → 애플리케이션을 다양한 언어와 기술로 구축할 수 있음

Monolithic 한계점

소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 서비스 → 한 프로젝트에 통합되어 있다보니 동일한 개발툴을 사용함

Monolithic 형태는 간단하기 때문에 소규모의 프로젝트에서 많이 선호됨

일정 규모 이상을 넘어가면 Monolithic은 많은 한계점에 봉착

MSA의 장점

배포