요약

- 애플리케이션의 구성요소를 작은 단위로 쪼개 각 요소를 하나의 독립적인 앱으로 만들고, 요소들을 API로 조합해 애플리케이션으로 만드는 아키텍처
- 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법
- '모놀리식 아키텍처'의 반대개념 → 중앙 집중식 관리 최소화
특징
- 클라우드 기반 환경에 적합
- 대형 소프트웨어 프로젝트의 기능들을 작고 독립적인 모듈로 분해하여 서비스를 제공
- 비즈니스 서비스 중심으로 분리
- REST API, 이벤트 스트리밍 및 메시지 브로커의 조합을 통해 서로 간에 통신
장점
- 더 나은 구조, 낮은 의존성
- 컴포넌트(서비스)마다 적합한 언어, 스택 사용 가능
- 컴포넌트간 독립적인 스케일링, 전개(Deploy) 가능 → 지속적 배포와 전개 가능
- 단일 모듈의 장애 확산 X
단점
- 각 기능별 독립적인 모듈 개발, 모듈간 인터페이스 개발의 복잡성
- 네트워크상의 서비스 간 호출은 모놀리식 서비스 프로세스 내의 프로세스 내 호출과 비교해 네트워크 레이턴시, 메시지 처리 면에서 비용이 더 많이 듬
- 전개(Deploy), 테스트의 어려움 → 테스트 및 전개의 자동화로 극복 가능