9장 : 도메인 모델과 바운디드 컨텍스트

도메인 모델과 경계

  • 하위 도메인마다 같은 용어라도 의미가 다르고 같은 대상이라도 지칭하는 용어가 다를 수 있기 때문에 한 개의 모델로 모든 하위 도메인을 표현하려는 시도는 올바른 방법이 아니며 표현할 수도 없다. 따라서 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어줘야 한다.

  • 모델은 특정한 컨텍스트 (문맥) 하에서 완전한 의미를 갖는데, 이렇게 구분되는 경계를 갖는 컨텍스트를 DDD에서는 바운디드 컨텍스트라고 부른다.

바운디드 컨텍스트

  • 바운디드 컨텍스트는 모델의 경계를 결정하며 한 개의 바운디드 컨텍스트는 논리적으로 한 개의 모델을 갖는다.

바운디드 컨텍스트 구현

  • 바운디드 컨텍스트는 도메인 모델 뿐 아니라 표현 영역, 응용 서비스, 인프라스트럭처 영역을 모두 포함 한다. 즉, 바운드디 컨텍스트는 도메인 기능을 제공하는 데 필요한 모든 요소를 포함한다.

  • 각 바운디드 컨텍스트는 도메인에 알맞은 아키텍처를 사용한다.

바운디드 컨텍스트 간 통합

  • 두 팀이 관련된 바운디드 컨텍스트를 개발하면 자연스럽게 두 바운디드 컨텍스트 간 통합이 발생한다.

바운디드 컨텍스트 간 관계

  • 바운디드 컨텍스트는 어떤 식으로든 연결되기 때문에 두 바운디드 컨텍스트는 다양한 방식으로 관계를 맺는다. (ex. REST API)

  • 상류 컴포넌트는 일종의 서비스 공급자 역할을 하며 하류 컴포넌트는 그 서비스를 사용하는 고객 역할을 한다. 싱루 컴포넌트는 보통 하류 컴포넌트가 사용할 수 있는 통신 프로토콜을 정의하고 이를 공개한다.

  • 하류 컴포넌트는 상류 서비스의 모델이 자신의 도메인 모델에 영향을 주지 않도록 보호해주는 완충지대를 만들어야 한다. 즉, 내 모델이 깨지는 것을 막아주는 안티코럽션 계층에서 두 바운디드 컨텍스트 단의 모델 변환을 처리해주어야 한다.

  • 두 바운디드 컨텍스트가 같은 모델을 공유하는 경우도 있다. 두 팀이 공유하는 모델을 공유 커널이라고 부른다.

  • 통합하지 않고 서로 독립적으로 모델을 발전시키는 독립 방식이 있다. 독립 방식으로 개발한 두 바운디드 컨텍으트를 통합하기 위해 별도의 시스템을 만들어야 할 수도 있다.

컨텍스트 맵

  • 컨텍스트 맵은 바운디드 컨텍스트 간의 관계를 표시한 것이다.

Last updated