DDD(도메인 주도 설계)의 실용적 접근
DDD(도메인 주도 설계)의 실용적 접근
도메인 주도 설계는 복잡한 비즈니스 도메인을 다루는 시스템에서 특히 유용한 접근법이다. 온라인 쇼핑몰 같은 복잡한 도메인에서 DDD의 핵심 개념들을 어떻게 실제로 적용할 수 있는지 살펴보자.
바운디드 컨텍스트(Bounded Context)로 도메인 나누기
온라인 쇼핑몰을 하나의 거대한 도메인으로 다루면 복잡도가 관리 불가능한 수준까지 올라간다. 대신 비즈니스 영역별로 명확한 경계를 그어서 바운디드 컨텍스트(어떤 개념이나 용어가 의미를 갖는 ‘맥락(Context)’의 범위를 명확히 구분하는 것)로 나누는 것이 효과적이다.
쇼핑 컨텍스트는 고객의 상품 검색부터 주문 완료까지를 담당한다. 이 영역에서 "고객"은 상품을 구매하는 사람이고, "상품"은 구매 가능한 아이템 목록이다. 상품 검색, 장바구니 관리, 주문 생성, 결제 처리가 이 컨텍스트의 핵심 업무다.
판매 관리 컨텍스트는 상품 등록, 재고 관리, 주문 처리를 담당한다. 여기서 "고객"은 주문을 넣은 사람 정도의 의미이고, "상품"은 관리해야 할 재고 아이템을 의미한다. 같은 용어라도 컨텍스트에 따라 다른 의미와 속성을 가진다.
물류 컨텍스트는 배송 계획, 배송 추적, 배송 완료를 담당한다. 이 영역에서는 "주문"이 배송해야 할 물건 정도의 의미이고, "고객"은 배송받을 사람이다. 지리적 위치와 배송 일정이 핵심 요소다.
각 컨텍스트는 독립적으로 발전할 수 있다. 쇼핑 컨텍스트에서 새로운 결제 방식을 추가해도 물류 컨텍스트에는 영향이 없다. 판매 관리 컨텍스트에서 재고 관리 방식을 바꿔도 다른 컨텍스트는 그대로 유지된다.
도메인 이벤트로 컨텍스트 간 협력
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.