MSA (Micro Service Architecture)
- 하나의 큰 application을 여러 개의 작은 application으로 나눠서 변경과 조합이 가능하게 만든 구조
- 반대의 말로는 Monolithic Architecture가 있다.
장점
- 배포 관점에서 서비스별 개별 배포 가능 (하나 배포할 때 모든 서비스 중단 없음)
- 특정 서비스에 대한 확장이 용이
- 장애가 전체 서비스로의 확장될 가능성이 적다.
- 부분적 장애에 대해 격리가 수월하다.
단점
- 성능
- 서비스간 호출시에 API를 사용하게되면서 통신비용, latency가 증가
- 테스트 / 트랜잭션
- 서비스가 분리되어있기에 테스트와 트랜잭션의 복잡도가 증가
- 많은 자원이 필요
- 데이터관리
- 데이터가 여러 서비스에 걸쳐 분산, 한 번에 조회가 힘들다.
- 정합성에 관리가 어렵다.