Skip to main content

3. 도메인 복잡성 관리

  • 언어는 명확하고 일관성이 있어야 합니다.

일관성 없는 모델#

  • 여러 팀이 함께 이야기할 때 용어의 정의가 일치해야 합니다.
  • 그러나 거대한 ERD는 효과적인 모델이 될 수 없습니다.
  • 문맥상 정의에 문제가 있는 용어 앞에 접두사를 추가하는 방법도 있으나, 이또한 인비 부하와 구현의 문제가 있습니다.
  • 이때의 해결책이 바운디드 컨텍스트 입니다.

바운디드 컨텍스트란 무엇인가#

  • 도메인 주도 설계에서 솔루션은, 유비쿼터스 언어를 여러 개의 작은 언어로 나눈 다음 각 언어를 적용할 수 있는 명시적인 바운디드 컨텍스트에 할당하면 됩니다.

모델 경계#

  • 모델은 실제 세계의 복사본이 아닌 복잡한 시스템을 이해하는 데 도움을 주기 위한 모델입니다.
  • 유비쿼터스 언어의 용어, 원칙, 비즈니스 규칙은 해당 바운디드 컨텍스트 내에서만 일관성이 있습니다.

정제된 유비쿼터스 언어#

  • 유비쿼터스 언어는 만능이 아니며, 바운디드 컨텍스트에 포함된 모델을 설명하는 데만 집중합니다.

바운디드 컨텍스트의 범위#

  • 유비쿼터스 언어의 일관성은 해당 언어의 가장 넓은 경계를 식별하는 데 도움이 될 뿐입니다.
  • 바운디드 컨텍스트의 크기에 대한 결정은 문제 도메인이 무엇이냐에 따라 달라집니다.
  • 모델을 유용하고 유지하고 바운디드 컨텍스트의 크기를 비즈니스 요구사항과 조직의 제약사항에 맞춥니다.

바운디드 컨텍스트 대 하위 도메인#

하위 도메인#

  • 기업의 비즈니스 전략을 이해하려면 비즈니스 도메인 분석이 필요합니다.

바운디드 컨텍스트#

  • 바운디드 컨텍스트는 소프트웨어 엔지니어에 의해 설계됩니다.

하위 도메인과 바운디드 컨텍스트 사이의 상호작용#

  • 중요한 것은 하위 도메인은 발견하고 바운디드 컨텍스트는 설계한다는 점입니다.

경계#

  • 바운디드 컨텍스트 패턴은 물리적 경계와 소유권 경계를 규정하기 위한 도메인 주도 설계 도구입니다.

물리적 경계#

  • 바운디드 컨텍스트는 모델 경계분만 아니라 이를 구현하는 시스템의 물리적 경계 역할도 합니다.
  • 바운디드 컨텍스트는 여러 하위 도메인을 포함할 수 있습니다.

소유권 경계#

  • 바운디드 컨텍스트는 한 팀에서만 구현, 발전, 유지 관리해야합니다.
  • 팀과 바운디드 컨텍스트 간의 관계는 단방향입니다.

실생활의 바운디드 컨텍스트#

  • 실제로 바운디드 컨텍스트는 비즈니스 도메인과 하위 도메인만큼 분명하지 않지만, 모메인 전문가의 멘탈 모델이 있는 것처럼 존재합니다.

시맨틱 도메인#

  • 시멘틱 도메인(semantic domain) 은 의미 영역과 해당 의미를 전달하기 위해 사용하는 단어 영역으로 구분합니다.

과학#

  • 아이작 뉴턴과 알버트 아인슈타인의 중력 모델은 다릅니다. 이를 다른 바운디드 컨텍스트로 이해하면 편합니다.

냉장고 구입#

  • 모델은 당면한 작업과 관련 없는 정보는 생략해야 합니다.

결론#

  • 도메인 전문가의 멘탈 모델에 내재된 충돌을 발견할 때마다 유비쿼터스 언어를 여러 개 바운디드 컨텍스트로 분해해야 합니다.
  • 하위 도메인이 발견되면 바운디드 컨텍스트도 설계합니다.
  • 바운디드 컨텍스트와 유비쿼터스 언어는 한 팀에서 만들고 유지보수할 수 있습니다.
  • 바운디드 컨텍스트는 시스템을 서비스, 하위 시스템 등의 물리적 구성요소로 분해합니다.
Last updated on