Learning
토픽 156 / 192·시스템 설계 및 아키텍처 패턴

서비스 분해 패턴

서비스 분해 패턴

모놀리스를 마이크로서비스로 분해할 때 서비스 경계를 식별하고 단계적으로 전환하기 위한 전략과 기법의 집합

특징: 점진적 전환, 비즈니스 영향 최소화, DDD 기반 경계 식별

분해 전략 (경계 식별)

  • 비즈니스 능력(Business Capability) 기반: 조직의 비즈니스 기능 단위로 분해 (예: 주문, 결제, 배송, 재고), 안정적 경계, 비즈니스 조직 구조 반영
  • 하위 도메인(Subdomain) 기반 (DDD):
  • 바운디드 컨텍스트(Bounded Context): 동일 용어가 다른 의미를 갖는 경계 식별, 컨텍스트별 독립 모델, 컨텍스트 맵으로 관계 정의

분해 실행 전략

  • Strangler Fig 패턴: Facade로 요청 라우팅, 기능 단위 점진적 이전
  • Branch by Abstraction: 추상화 계층 도입 → 새 구현 추가 → 전환 → 레거시 제거
  • 병렬 실행(Parallel Run): 기존/신규 동시 실행, 결과 비교 검증 후 전환

데이터 분리 전략: Database per Service(서비스별 독립 DB), 공유 DB 금지(결합도 증가), 데이터 동기화(이벤트 기반/CDC), API 조합(여러 서비스 데이터 결합)

분해 시 고려사항: 서비스 크기(2 Pizza Rule), 트랜잭션 경계(Saga 패턴), 데이터 일관성, 팀 역량/조직 구조(Conway's Law)

기술요소: API Gateway, 이벤트 브로커, CDC(Change Data Capture), Anti-Corruption Layer

적용사례: 레거시 현대화, MSA 전환, 대규모 리팩토링

비교: 비즈니스능력(조직 기반/안정적/하향식) vs 하위도메인(DDD 기반/유연/도메인 전문가 필요) vs Strangler Fig(점진적/저위험) vs Big Bang(일괄/고위험)

연관: MSA, DDD, Bounded Context, 레거시 현대화, Strangler Fig