BOUNDED CONTEXT
도메인마다 같은 용어라도 의미가 다르고 같은 대상이라도 저장하는 용어가 다를 수 있다.
그러므로 도메인을 완벽하게 표현하는 단일 모델을 만드는 것은 불가능 하다.
모델은 특정한 컨텍스트(문맥)하에서 완전한 의미를 갖는다.
이렇게 구분되는 경계를 갖는 컨텍스트를 DDD에서는 BOUNDED CONTEXT라고 부른다.
BOUNDED CONTEXT는 모델의 경계를 결정하며 한 개의 BOUNDED CONTEXT는 논리적으로 한 개의 모델을 갖는다., 하지만 그렇지 않은 경우가 많다.
BOUNDED CONTEXT는 각자 구현하는 하위 도메인에 맞는 모델을 갖는다.
조직 구조에 따라 BOUNDED CONTEXT 결정
예를 들어, 주문 하위 도메인이라도 주문을 처리하는 팀과 복잡한 결제 금액 계산 로직을 구현하는 팀이 있다고 하면 주문 BOUNDED CONTEXT와 결제 금액 BOUNDED CONTEXT가 존재하게 된다.
아직 명확하게 구분되지 않은 경우 두 하위 도메인을 한 BOUNDED COUNTEXT에서 구현하기도 한다.
규모가 작은 기업은 전체 시스템을 한 개 팀에서 구현할 때도 있다.
이런 경우에는 하위 도메인 마다 구분되는 패키지를 갖도록 구현해야 한다.
BOUNDED CONTEXT의 구현
BOUNDED CONTEXT가 도메인 모델만 포함하는 것은 아니다.
도메인 모델뿐만 아니라 기능을 사용자에게 제공하는 데 필요한 표현 영역, 응용 서비스, 인프라 영역 등을 모두 포함한다.
모든 BOUNDED CONTEXT를 반드시 도메인 주도로 개발할 필요는 없다.
복잡하지 않은 기본 CRUD 기능만 사용할 경우 CRUD 방식으로 구현해도 된다.