MSA(Micro Service Architecture)란?
단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법입니다.
독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크
각 컴포넌트가 독립적으로 기능하기 때문에 해당 기능이 마비되더라도, 전체적인 서비스에 영향을 주지 않습니다.
vs Monolithic
- 모놀리틱이란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태입니다.
- 소규모 프로젝트라면 모놀리틱 방식을 채택하는 것이 이상적이지만, 수백명 이상의 개발자가 투입되는 대규모 프로젝트라면 단점이 뚜렷하게 보입니다.
장점
각각의 서비스는 모듈화가 되어있으며 이러한 모듈까리는 RPC 또는 message-driven API등을 이용하여 통신한다. 이러한 MSA는 각각 개별의 서비스 개발을 빠르게 하며, 유지보수도 쉽게할 수 있도록 한다.
서비스별 개별 배포가 가능하다.
독립되어 있기 때문에 기능별 Scale Out이 가능하다.
한 서비스가 마비되더라도, 전체적인 서비스에 영향을 주지 않는다.
팀 단위로 적절한 수준에서 기술 스택을 다르게 가져갈 수 있다.
단점