서브도메인과 바운디드 컨텍스트의 차이 ( subdomain bounded context difference )
DDD(Domain-Driven Develop) 에서 빠지지 않고 등장하는 두 개념의 차이점에 대해서 알아보겠습니다.
서브도메인(subdomain)
서브도메인은 비지니스 도메인을 더 작은 부분으로 나누는 것을 의미합니다.
각 서브도메인은 비지니스 도메인의 고유한 측면에 집중하며, 자체의 용어, 개념, 규칙을 가지고 있습니다.
예를 들면, 쇼핑몰에서 "주문", "결제", "배송" 과 같은 영역은 서브도메인으로 볼 수 있습니다.
바운디드 컨텍스트(bounded context)
바운디드 컨텍스트는 비지니스 도메인에서 모델의 경계를 결정합니다.
다른 말로는 모델의 일부로써 특정 서브도메인이나 관련된 서브도메인을 포함할 수 있고,
실제로 사용자에게 기능을 제공하는 물리적인 시스템으로 바운디드 컨텍스트 안에서 도메인을 구현합니다.
각 바운디드 컨텍스트는 자체의 책임을 가지고 있고, 다른 바운디드 컨텍스트와 독립적으로 동작 할 수 있습니다.
예를 들면, "주문" 서브 도메인에서는 "주문 생성", "주문 결제" 바운디드 컨텍스트를 포함할 수 있습니다.
아래 그림에서 주문과, 주문결제 바운디드 컨텍스트는 서로 다른 팀에서 개발하는 서로 독립적인 개념입니다.
바운디드 컨텍스트는 비즈니스 도메인이 커지고 복잡해질 때 모델의 일관성을 유지하고 이해하기 쉽도록 도움을 주는 강력한 도구로 사용됩니다.
DDD를 설계하는 것 자체가 어색하고 실무에서 적용하기까지 많은 시행착오가 있을 듯 합니다만,
확실한 건 설계해두면 인수인계가 편하고 스파게티식 프로젝트가 되는 걸 방지해주는 효과는 있는 듯 합니다.
