장점
- 각 서비스를 독립적으로 배포가 가능하다.
- 유연한 확장
- 코드 관리가 편리하다. (git conflict 가능성 감소)
- 책임이 명확하게 분리된다.
- 장애 범위가 축소된다.
- 광고 서비스가 장애나도 전체 범위로 확산되지 않음
- 팀별 코드 이해도 증가
- 생산성 증가
- 출시 시간 단축
단점
- 구현 난이도 상승
- API 사용 범위 파악이 어려움
- 해당 API 스펙을 변경하면 예상 치 못한 서비스에서 장애가 날 수 있음
- 리소스 비용이 크다.
- 서버가 많이 필요
- 배포가 훨씬 더 많고 잦음
- 트랜잭션 관리가 복잡함
- 분산 서비스마다 트랜잭션 관리를 처리해야 함
- 메시징 시스템이 필요할 수 있음
- 통합 테스트가 어려움
'Operation > System Architecture' 카테고리의 다른 글
'배민 프론트 서버의 사실과 오해' 정리! (MSA, SAP, DIP, 도메인 설계, ... 등) (0) | 2022.11.19 |
---|---|
MSA에서 트랜잭션을 보장하는 방법(2PC, SAGA) (0) | 2022.08.18 |
스토리지 종류 (파일/블록/객체 스토리지) (0) | 2022.06.27 |
카프카란 무엇인가? (+카프카 구성요소) (0) | 2022.05.17 |
다중 서버에서 Session 관리하는 방법! (Multi-server session) (0) | 2022.04.21 |