서브도메인과 전략적 설계

이진호·2023년 1월 25일
0

3.서브도메인과 전략적 설계

  • 바운디드 컨텍스트마다 하나의 서브도메인, 각 서브도메인마다 하나의 바운디드 컨텍스트.
  • 하나의 바운디드 컨텍스트 안에 다수의 서브도메인이 잇을 수도 있지만, 이 경우 최적의 모델을 구성했다고 보기는 어려움.

서브도메인은 무엇인가?

  • 서브도메인은 전체 비즈니스 도메인의 하위 부분.
  • 거대하고 복잡한 프로젝트에서 문제 영역을 이해할 수 있도록 전체 비즈니스 도메인을 논리적으로 쪼갠 부분.
  • 명확한 전문 지식 영역별로 정의된 부분.
  • 서브도메인을 개발하는 데 DDD를 사용했다면 명확한 바운디드 컨텍스트를 구현할 수 있다.

서브도메인의 유형

핵심 도메인

  • 보편언어를 신중하게 만들기 위한 전략적 투자 영역.
  • 주요 자원을 할당하는 명시적인 바운디드 컨텍스트.
  • 잘 정의된 도메인 모델.
  • 높은 우선순위.

지원 서브도메인

  • 이미 존재하는 제품으로 해결할 수 없는 맞춤 제작 개발이 필요한 모델링 영역.
  • 너무 큰 투자를 하지 않기 위해 아웃소싱을 고려할 수 있음.
  • 지원 서브도메인 없이 핵심 도메인을 성공시킬 수는 없기 때문에 여전히 중요한 소프트웨어 모델.

일반 서브도메인

  • 기존 제품 구매를 통해 바로 충족시킬 수 있는 경우.

복잡성 다루기

  • 문제 영역에 대해 논의하기 위한 도구로 서브도메인을 사용.
  • 제한된 경계가 없는(unbounded) 레거시 시스템은 큰 진흙 덩어리와 같음.
  • 그 안에서 몇 개의 논리적(Logical) 도메인을 서브도메인으로 정의.
  • 바운디드 컨텍스트와 서브도메인은 일대일(1:1) 관계로 구성. 이는 바운디드 컨텍스트를 정확하게 유지시키고 핵심 전략 목표를 집중하는 데 도움을 줌.
  • 핵심 도메인 안에 존재하는 동일한 바운디드 컨텍스트 안에 다른 모델을 만들어야 하는 상황이라면, 핵심 도메인으로부터 완전히 분리된 모듈 형태로 그 모델을 별도의 영역에 정의.

요약

  • 서브도메인이 무엇이고, 문제 영역과 해결 영역에서 어떻게 사용하는가?
  • 핵심 도메인과 지원 서브도메인, 일반 서브도메인의 차이
  • 큰 진흙 덩어리 레거시 시스템과의 통합을 고려할 때, 서브도메인을 사용할 수 있는 방법
  • DDD의 바운디드 컨텍스트와 서브도메인을 일대일 관계로 맺는 것의 중요성
  • 핵심 도메인과 지원 서브도메인을 2개의 서로 다른 바운디드 컨텍스트로 분리하는 것이 현실적이지 않을 때, DDD 모듈로 그것을 분리하는 방법

0개의 댓글