모놀리식 vs MSA
단일 코드베이스에 모든 기능을 통합하는 모놀리식 아키텍처와, 기능별로 독립 서비스로 분리하는 MSA를 비교합니다.
비교표
| 항목 | 모놀리식 아키텍처 | MSA |
|---|---|---|
| 배포 단위 | 전체 애플리케이션 | 서비스별 독립 배포 |
| 데이터베이스 | 단일 DB 공유 | 서비스별 독립 DB |
| 스케일링 | 전체 서버 증설 | 서비스 단위 증설 |
| 트랜잭션 | ACID 보장 (단일 DB) | 분산 트랜잭션 — Saga/Outbox 패턴 |
| 장애 격리 | 장애 전파 위험 | 서킷 브레이커로 격리 가능 |
| 기술 스택 | 단일 스택 고착 | 서비스마다 자유 선택 |
| 개발 복잡도 | 낮음 | 높음 (분산 시스템 이해 필요) |
| 운영 복잡도 | 낮음 | 높음 (서비스 수만큼 파이프라인) |
| 적합한 규모 | 소규모 팀, 초기 서비스 | 대규모 팀, 명확한 도메인 경계 |
언제 무엇을 선택하나?
서비스 초기 단계
→ 모놀리식으로 빠르게 시작
→ 도메인 경계가 안정화되면 점진적으로 분리
규모가 커진 모놀리식의 신호
→ 빌드/배포 시간이 너무 길어짐
→ 특정 기능만 스케일링하고 싶음
→ 팀 간 코드 충돌이 잦아짐
→ 작은 변경이 다른 기능을 깨뜨림
모놀리식 → MSA 전환 전략
단번에 전환하지 않고 Strangler Fig 패턴으로 점진적으로 분리합니다.
1. 모놀리식 앞에 API Gateway 배치
2. 신규 기능은 별도 서비스로 개발
3. 기존 기능을 하나씩 서비스로 분리
4. 모놀리식이 빈 껍데기가 되면 제거