9장 도메인 모델과 BOUNDED CONTEXT
한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하게 되면 모든 하위 도메인에 맞지 않는 모델을 만들게 된다.
-
상품이라는 모델을 생각해보자. 카탈로그에서의 상품, 재고 관리에서의 상품, 주문에서의 상품은 이름만 같지 실제로 의미하는 것은 다르다. 카탈로그에서 물리적으로 한 개인 상품이 재고 관리에서는 여러 개 존재 할 수 있다.
-
회원 도메인에서는 회원이, 주문 도메인에서는 주문자가 될 수 있다.
하위 도메인마다 사용하는 용어가 다르기 때문에 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다.
모델은 특정한 컨텍스트(문맥)하에서 완전한 의미를 갖는다. 이렇게 구분이 되는 경계를 갖는 컨텍스트를 DDD에서는 BOUNDED CONTEXT라고 부른다.
BOUNDED CONTEXT
모델의 경계를 결정하며 한 개의 BOUNDED CONTEXT는 논리적으로 한 개의 모델을 갖는다.
BOUNDED CONTEXT는 용어를 기준으로 구분한다.
BOUNDED CONTEXT는 실제로 사용자에게 기능을 제공하는 물리적 시스템으로 도메인 모델은 이 BOUNDED CONTEXT 안에서 도메인을 구현한다.
이상적으로는 하위 도메인과 BOUNDED CONTEXT가 일대일 관계를 가지면 좋지만 현실은 그렇지 않을 때가 많다.
-
조직에 따라서, 회사 규모에 따라서 달라짐.
-
비록 한 개의 BOUNDED CONTEXT에서 여러 하위 도메인을 포함하더라도 하위 도메인바다 구분되는 패키지를 갖도록 구현해야 하위 도메인을 위한 모델이 서로 뒤섞이지 않아서 하위 도메인마다 BOUNDED CONTEXT를 갖는 효과를 낼 수 있다.
BOUNDED CONTEXT의 구현
도메인 모델뿐만 아니라 도메인 기능을 사용자에게 제공하는 데 필요한 표현 영역, 응용 서비스, 인프라 영역 등을 모두 포함한다.
컨텍스트 맵
BOUNDED CONTEXT 간의 관계를 표현한 것.
컨텍스트 맵은 전체 구조를 보여준다.
'책' 카테고리의 다른 글
[자바성능튜닝이야기] 01 디자인 패턴 꼭 써야 한다 (0) | 2020.09.13 |
---|---|
DDD 10장 이벤트 (0) | 2020.08.25 |
[UML DISTILLED 3판] 5장 클래스 다이어그램 : 고급 개념 (0) | 2020.08.08 |
[UML DISTILLED 3판] 4장 시퀀스 다이어그램 (0) | 2020.08.08 |
[DDD START] 8장 애그리거트 트랜잭션 관리 (0) | 2020.08.02 |