모놀리식 vs MSA

단일 코드베이스에 모든 기능을 통합하는 모놀리식 아키텍처와, 기능별로 독립 서비스로 분리하는 MSA를 비교합니다.

비교표

항목모놀리식 아키텍처MSA
배포 단위전체 애플리케이션서비스별 독립 배포
데이터베이스단일 DB 공유서비스별 독립 DB
스케일링전체 서버 증설서비스 단위 증설
트랜잭션ACID 보장 (단일 DB)분산 트랜잭션 — Saga/Outbox 패턴
장애 격리장애 전파 위험서킷 브레이커로 격리 가능
기술 스택단일 스택 고착서비스마다 자유 선택
개발 복잡도낮음높음 (분산 시스템 이해 필요)
운영 복잡도낮음높음 (서비스 수만큼 파이프라인)
적합한 규모소규모 팀, 초기 서비스대규모 팀, 명확한 도메인 경계

언제 무엇을 선택하나?

서비스 초기 단계
  → 모놀리식으로 빠르게 시작
  → 도메인 경계가 안정화되면 점진적으로 분리

규모가 커진 모놀리식의 신호
  → 빌드/배포 시간이 너무 길어짐
  → 특정 기능만 스케일링하고 싶음
  → 팀 간 코드 충돌이 잦아짐
  → 작은 변경이 다른 기능을 깨뜨림

모놀리식 → MSA 전환 전략

단번에 전환하지 않고 Strangler Fig 패턴으로 점진적으로 분리합니다.

1. 모놀리식 앞에 API Gateway 배치
2. 신규 기능은 별도 서비스로 개발
3. 기존 기능을 하나씩 서비스로 분리
4. 모놀리식이 빈 껍데기가 되면 제거

CSLOG에서 보기