인프런 커뮤니티 질문&답변

이실십일님의 프로필 이미지
이실십일

작성한 질문수

Microservice 내부 아키텍처 와 EventStorming 설계

컨텍스트 매핑 정의

도메인, 바운디드 컨텍스트 관련해서 궁금합니다.

해결된 질문

작성

·

392

0

특정 비즈니스 문제를 설명하는 거대한 도메인에 서브 도메인으로 핵심, 지원, 범용이 있다는 것은 알겠는데요.

그럼 바운디드 컨텍스트는 각각의 서브 도메인과 1:1로 동등한 관계로 매칭이 되는걸까요?
아니면 각각의 서브 도메인 안에 바운디드 컨텍스트가 있고 바운디드 컨텍스트의 갯수는 1개가 아니라 여러개가 될 수 있을까요?

또 아니면 바운디드 컨텍스트 안에 서브 도메인이 들어가고 바운디드 컨텍스트 안에 여러개의 서브 도메인이 있을 수 있을까요?

마지막으로 서브 도메인안에 또 작은 도메인들이 있을 수 있을까요??

답변 1

0

han jeong heon님의 프로필 이미지
han jeong heon
지식공유자

움 저도 공부하면서 이러한 부분이 많이 헷갈렸는데요. 우선 서브도메인과 바운디드 컨텐스트간의 차이를 명확히 정의해야 하는데 다음과 같습니다.

  1. 하위 도메인:

    • 하위 도메인은 비즈니스의 뚜렷하고 응집력 있고 잘 정의된 측면을 나타내는 전체 비즈니스 도메인의 일부입니다. 이는 크고 복잡한 문제 공간을 더 작고 관리하기 쉬운 조각으로 나누는 방법입니다. 하위 도메인은 비즈니스 기능과 비즈니스 내의 자연스러운 구분을 기반으로 식별됩니다.

  2. 바운디드 컨텍스트:

    • BC는 특정 모델이 정의되고 적용 가능한 특정 경계입니다. 여기에는 해당 경계 내에서 특정 의미를 갖는 일련의 개념, 용어 및 규칙이 포함됩니다. BC는 서로 다른 모델 간의 언어적, 개념적 경계를 관리하는 것입니다. 이는 시스템의 여러 부분이 동일한 개념에 대해 서로 다른 해석을 할 때 발생할 수 있는 모호함과 충돌을 피하는 데 도움이 됩니다.

본질적으로 하위 도메인은 비즈니스 문제 공간의 논리적 파티션인 반면, BC는 해당 문제 공간의 일부를 해결하기 위해 정의된 특정 모델이 있는 논리적 경계입니다. BC를 도입하는 목적은 시스템의 서로 다른 부분에 있는 모델이 서로 간섭하지 않고 주어진 컨텍스트 내에서 명확성과 일관성이 있는지 확인하는 것입니다.

설명을 위해 전자상거래 시스템을 생각해 보세요.

  • 하위 도메인: 주문 처리, 재고 관리, 고객 관계 관리 및 배송은 전자 상거래 비즈니스 내에서 별개의 하위 도메인이 될 수 있습니다.

  • BC: "주문 처리" 하위 도메인 내에는 주문 접수, 결제 관리, 배송 물류 처리를 위한 다양한 제한된 컨텍스트가 있을 수 있습니다. 이러한 각 컨텍스트에는 해당 범위에 특정한 자체 모델, 용어 및 규칙이 있습니다.

요약하면, 하위 도메인은 문제 공간의 논리적 구분을 나타내는 반면, 제한된 컨텍스트는 해당 하위 도메인의 특정 측면을 다루고 해결하기 위해 모델이 정의되는 명확하고 명시적인 경계를 설정합니다.

따라서 분석 설계를 위해 하위도메인을 가지고 도메인를 파악하고 BC로 도메인 분석/설계 결과를 정리할 수 있습니다.

그럼 원래 질문인 부분으로 넘어가서 답변 드리면

  1. BC와 하위 도메인 간의 1:1 관계:

    • BC가 반드시 하위 도메인과 1:1 관계를 가질 필요는 없습니다. 하위 도메인은 여러 개의 BC에 걸쳐 있을 수 있으며 BC는 여러 하위 도메인을 포함할 수 있습니다. 핵심은 BC 내에서 모델이 일관되고 명확하도록 보장하는 것입니다.

  2. 하위 도메인 내의 여러 바인딩된 BC:

    • 하위 도메인 내에 여러 개의 BC가 있을 수 있습니다. 특히 하위 도메인의 서로 다른 부분에 고유한 모델이나 컨텍스트가 다른 경우 더욱 그렇습니다. 하위 도메인 내의 각 BC는 비즈니스 문제의 특정 측면을 캡슐화합니다.

  3. BC 내의 하위 도메인:

    • BC는 하위 도메인과 연결되는 경우가 많지만 엄격한 규칙은 아닙니다. BC는 시스템의 복잡성과 요구 사항에 따라 하나 이상의 하위 도메인을 포함할 수 있습니다.

  4. 하위 도메인 내의 다른 소규모 도메인:

    • DDD에서 "하위 도메인"이라는 용어는 일반적으로 비즈니스 문제의 논리적으로 응집력 있고 별개의 부분을 나타냅니다. 하위 도메인 내에는 "작은 도메인"이 없을 수도 있지만 하위 도메인 내에서 모델링되는 다양한 영역이나 측면이 있을 수 있습니다.

이상입니다. 적절한 답변이 되었기를 바랍니다. 🙇‍♂

이실십일님의 프로필 이미지
이실십일
질문자

오호 매번 좋은 답변해주셔서 감사합니다. 🙇‍♂

그러면 하위 도메인은 좀 더 큰 문제 영역을 작게 나누기 위한 비즈니스 문제 공간의 논리적 파티션이고, BC는 명확성, 일관성 및 시스템의 다른 부분과의 격리를 보장하기 위해 특정 모델, 언어 또는 규칙이 적용되는 명시적이고 논리적인 경계라고 이해하면 될까요?

han jeong heon님의 프로필 이미지
han jeong heon
지식공유자

네 . 전 도식적으로 서브도메인과 BC가 problem -> solution 관계라고 인식하고 있습니다.

이실십일님의 프로필 이미지
이실십일

작성한 질문수

질문하기