pile·
아키텍처·마켓컬리마켓컬리 Hello World·

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

컬리가 커머스 플랫폼을 MSA·DDD 기반으로 전환하며 세운 서비스 개발 원칙을 정리한 글이다. DDD의 핵심인 느슨한 결합(Loose Coupling)과 높은 응집(High Cohesion)을 도메인 분리 관점에서 설명하고, 이를 MSA 설계와 마틴 파울러의 MSA 장점 3가지로 연결한다.

핵심 포인트
  • DDD(2003, 에릭 에반스)의 핵심 원칙인 Loose Coupling과 High Cohesion이 MSA 설계의 기준이 됨
  • 도메인 간에는 느슨하게, 도메인 내에서는 높게 응집하도록 도메인을 잘 나누는 것이 가장 중요
  • 도메인 내 마이크로서비스는 sync API 호출과 같은 DB를, 도메인 간에는 async 메시지 통신과 DB 분리로 설계
  • 마틴 파울러의 MSA 장점 3가지(명확한 모듈 경계·독립 배포·기술 다양성)를 두 원칙으로 재해석
  • 도메인을 잘못 나누면 MSA의 분리가 장점이 아닌 핸디캡이 됨
상세 정리
  • DDD 정의: 에릭 에반스가 2003년 소개한 방법론으로 좋은 소프트웨어를 원하면 서비스 도메인에 귀를 기울이라는 슬로건에서 출발해 현재 서비스 개발의 주류가 됐다.
  • 핵심 개념: MSA를 구현하는 필수 개념이 DDD에서 왔고, 좋은 서비스의 기본 요소인 Loose Coupling과 High Cohesion이 MSA 설계 시 기억할 원칙이다.
  • 무엇을 나누나: 대상은 도메인이며, 도메인은 소프트웨어로 풀 문제 영역을 잘라낸 단위다. 도메인을 잘못 나누면 결합해야 할 인터페이스를 응집시키거나 응집해야 할 서비스를 분리해 문제가 생긴다.
  • 지향점: 도메인을 잘게 나누는 것만이 능사가 아니라 어떤 서비스를 하나의 도메인으로 잘 묶어 High Cohesion 할지까지 설계하는 것이 DDD·MSA의 목표다.
  • DDD로 MSA 해석: 도메인 내 마이크로서비스는 API 기반 sync call이나 같은 DB를 볼 수 있고, 다른 도메인의 서비스와 통신할 땐 async 메시지 기반 통신에 DB도 분리해야 한다.
  • MSA 장점 1: Strong Module Boundaries — 모듈 경계가 명확해 변경 시 해당 도메인 마이크로서비스만 이해·처리하면 되며, 경계가 부실하면 분리가 오히려 핸디캡이 된다.
  • MSA 장점 2: Independent Deployment — 의존성을 고려해 설계·구축하므로 각 서비스를 독립 배포하기 쉽고, DevOps CI/CD 자동화가 강화된 배경에 배포 단위까지 고려하는 MSA가 있다.
  • MSA 장점 3: Technology Diversity — 도메인 내부는 High Cohesion으로 유사 기술 스택을, 도메인 밖은 Loose Coupling으로 문제에 더 맞는 기술 스택을 자유롭게 택할 수 있다.
  • 주의: 너무 다양한 기술 도입은 복잡성·비효율을 낳으므로 조직 성숙도에 맞춰 조절하고, 기술 다양성이 커질수록 도메인 간 연동 인터페이스 설계 원칙을 더 면밀히 검토해야 한다.
왜 읽나커머스 플랫폼을 MSA로 전환하며 도메인 경계를 어떻게 그을지 고민하는 아키텍트·백엔드 개발자에게 Loose Coupling/High Cohesion 관점의 설계 원칙 정리.
마켓컬리
마켓컬리 Hello World 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 아키텍처·dropbox-techDropbox Tech·

    Dropbox의 통합 콘텐츠 처리 플랫폼 Riviera, AI 시대로의 진화

    Dropbox가 파일 미리보기 생성용 내부 서비스로 출발한 콘텐츠 처리 플랫폼 Riviera가 약 10년에 걸쳐 Search·Replay·Sign·Dash가 공유하는 플랫폼으로, 나아가 AI 시대의 문서 처리 인프라로 진화한 과정을 다룬다. 미리보기를 '재사용 가능한 변환들의 조합'으로 재정의한 설계가 확장의 핵심이었고, 지금은 100개 넘는 변환 능력으로 초당 수십만 건을 처리한다. 최근엔 공개 API와 MCP로 외부 개발자에게도 열렸다.

  2. 아키텍처·github-engGitHub Engineering·

    AI 시대에 달라진 '예스'의 비용

    GitHub Engineering 에서 AI 코드 생성 도구가 보편화되면서 소프트웨어 엔지니어링 경제학이 어떻게 달라졌는지를 다룬다. 코드를 작성하는 비용은 낮아졌지만 그 코드를 소유하고 유지보수하는 비용은 그대로라는 점을 핵심 논지로, 엔지니어링 팀의 의사결정 방식도 달라져야 한다고 주장한다.

    #engineering-process#ai-code-generation#code-ownership+1
  3. 아키텍처·당근당근 테크블로그·

    천만 MAU를 지탱하는 커뮤니티 시스템 아키텍처

    당근 커뮤니티실이 2021년 약 100 RPS에서 현재 약 20,000 RPS를 처리하는 규모로 성장한 과정과, 이를 가능하게 한 "여러 웹앱 + 하나의 서버앱" 모듈형 모놀리스 아키텍처를 다룬다. 동네생활, 모임, 카페, 아파트 서비스를 소규모 팀이 장기 운영 가능한 구조로 설계한 원칙과, 장애 경험에서 도출한 resilience 패턴까지 단계별로 정리했다.

    #event-driven#kafka#postgres+2