피드로 돌아가기
DDD와 MSA 기반으로 좋은 서비스 개발하기
컬리 기술블로그컬리 기술블로그
Backend

DDD와 MSA 기반으로 좋은 서비스 개발하기

컬리가 MSA와 DDD 기반으로 커머스 플랫폼을 전환하면서 도메인 경계를 Loose Coupling과 High Cohesion 원칙으로 재설계

2021년 5월 11일8intermediate

Context

기존 모놀리식 아키텍처 기반의 커머스 플랫폼은 시스템 변경 시 영향 범위를 파악하기 어렵고, 배포 단위가 크며, 기술 선택의 자유도가 낮았다.

Technical Solution

  • 도메인을 Loose Coupling과 High Cohesion 원칙에 따라 재분류: 도메인 간에는 Loose Coupling, 도메인 내에서는 High Cohesion 적용
  • 도메인 내 마이크로서비스 간 통신 방식 변경: API 기반의 Sync Call 또는 동일 DB 사용 가능
  • 도메인 간 마이크로서비스 통신 방식 변경: Async 방식의 메시지 기반 통신 수행
  • 도메인 간 데이터 분리: 각 도메인의 마이크로서비스가 독립적인 DB 운영
  • 도메인 내 기술 스택 통일: High Cohesion 원칙에 따라 유사한 기술 스택 유지, 도메인 간에는 문제 해결에 최적화된 기술 스택 선택 가능

Key Takeaway

DDD와 MSA 구현에서 가장 중요한 것은 도메인을 잘게만 나누는 것이 아니라, 비즈니스 문제를 잘 투영하면서 Loose Coupling과 High Cohesion을 동시에 만족하도록 도메인 경계를 설계하는 것이다.


모놀리식 시스템을 MSA로 전환하는 조직에서는 마이크로서비스 분할 전에 먼저 각 도메인 간의 의존성을 Loose Coupling과 High Cohesion 기준으로 분석해야 한다. 도메인 내부는 Sync Call과 공유 DB로, 도메인 외부는 Async 메시지 기반 통신과 DB 분리로 설계하면 모듈 경계 명확화, 독립적 배포, 기술 다양성이라는 MSA의 3가지 핵심 이점을 모두 달성할 수 있다.

원문 읽기