피드로 돌아가기
DDD를 Merchant 시스템 구축에 활용한 사례를 소개합니다
LINE Engineering
Backend

DDD를 Merchant 시스템 구축에 활용한 사례를 소개합니다

ABC Studio가 DDD와 클린 아키텍처를 기반으로 Merchant 시스템을 구축해 핵심 도메인을 외부 변화로부터 독립적으로 유지

2025년 7월 28일10intermediate

Context

기존 음식 배달 시스템을 소매 상품 판매에 무리하게 적용하면서 '휴지를 파는 음식점' 형태의 비효율이 발생했습니다. 소매 상품 판매에 특화된 독립적인 시스템의 필요성이 대두되었습니다.

Technical Solution

  • 도메인을 5개로 명확히 정의: 점포(shop), 상품(item), 카테고리(category), 재고(inventory), 주문(order)으로 제한해 핵심 정보만 처리
  • 클린 아키텍처를 개발 아키텍처로 도입: 도메인 엔티티 중심으로 설계해 계층 간 의존성을 내부 방향으로만 제한
  • 각 도메인을 API와 엔진 2개 모듈로 구분: gRPC로 API를 제공하고 Apache Kafka로 비동기 통신
  • Kafka 작업 큐 라이브러리인 Decaton을 사용해 파티션을 감소시키면서 처리량 증대
  • 비동기 구조로 전체 설계: 빠른 API 응답과 최종 일관성(eventual consistency) 확보
  • ADR(Architectural Decision Record) 문서화: 조직 간 논의 결정사항을 기록해 시간 경과 후 혼란 방지
  • 팀 구성을 아키텍처에 맞게 조직: Core 팀(한국, 핵심 도메인), Link 팀(일본, 소비자 플랫폼 연계), BFF 팀, Merchant Link 팀

Key Takeaway

여러 소비자 플랫폼이 추가되더라도 핵심 도메인의 변화는 최소화되고 연계 계층에만 영향이 미치는 구조를 확보했습니다. 이는 도메인의 역할과 책임을 명확히 정의한 후 조직 구성까지 일관되게 적용한 콘웨이의 법칙의 결과입니다.


여러 외부 소비자 플랫폼과 협력하는 마이크로서비스 환경에서 DDD와 클린 아키텍처를 결합할 때, 도메인의 역할과 책임을 먼저 명확히 정의하고 이를 바탕으로 팀 조직을 구성하면, 외부 환경 변화가 핵심 비즈니스 로직에 미치는 영향을 격리할 수 있습니다.

원문 읽기