본문 바로가기

Software Engineering

[DDD]바운디드 컨텍스트(Bounded Context)란?

https://www.connell.dev/domain-driven-boundaries/

바운디드 컨텍스트(Bounded Context)는 무엇인가요?

비지니스를 개념화 시키는 것이 모델링이며, 우리가 모델링을 할때 도메인을 정의를 통해서 모델링을 하게됩니다.

앞서 상품, 청구 각각의 도메인을 정의할때 각각은 서로 구분되어지는 경계 즉 Boundary가 있고,
Boundary를 묶을때 의미(Context)가 동일하고 유사한 것들끼리 묶은 활동을 우리는 바운디드 컨텍스트를 정의 한다고 할수 있습니다.


바운디드 컨텍스트의 범위는 어디까지 일까요?

 

유사한것들 끼리 나누지만 유사의 정도가 차이 있으므로, 아래그림 처럼 경계를 더 크거나 더 작게 나눌 수 있습니다.

 

3가지로 나눈 경우
2개로 나눈경우

 

바운디드 컨텍스트는 어디까지 비지니스 환경이나 시스템 개발 환경에 따라 전략적으로 판단해서 나눌수 있으므로
정답은 없습니다. 

 

예를들어 상품관리에는 상품카탈로그, 상품Rule(가입/해지), 할인Rule(할인조건), 상품구성관리(상품,할인,혜택구성), 상품재고, 배송관리, 상품상담 까지 묶어서 하나로 할수도 있으나, 비지니스의 특성에 따라 배송을 특화해서 배송업체, 배송상태, 송장관리 등 분리할수도 있습니다. 

 

또한, 배달의 민족은 배송이 핵심 도메인이니까 관련 기능은 따로 크게 만들고, 할인Rule(쿠폰,포인트,카드)은 간단해서 상품구성에 포함하고, 상품전시에는 고도화 할 수 도 있습니다. 

 

제가 하고 있는 통신BSS의 경우 대부분의 상품이 통신서비스이므로, 배송은 없고 있다고 해도 외부 시스템 연동으로 처리되는 형태라 배송관리, 재고관리는 중요하지 않거나 없는것이 보통입니다. 

물론, 통신BSS의 경우에도 유선의 경우 조금 다른데 유선읜 "가용(재고와 유사)"이 필수적으로 체크해야합니다.

모든 지역이 동일한 Internet 속도를 제공 받을 수 없습니다. Coverage 한계가 있습니다.

통신의 경우도 5GX도 그러하지만 이동통신의 특수성으로 5GX Coverage 구간은 가입자의 이동에 따라 변화 할 수 있으므로 가용 (혹은 재고)은 사실상 없다고 해도 무방입니다.

 

바운디드 컨텍스트는 하위 도메인과 같을까요?

정답은, 같을 수도 있고, 다를 수도 있습니다.

 

바운디드 컨텍스트는 SW Engineer의 역할로 실제 비지니스를 Software 로 구현하기 위한 전략적 판단에 의해 결정됩니다.

실제 시스템으로 구현 할때는 물리적인 경계로 나눌수도 있고, MSA와 같은환경에는 개별 서버로 구성되기도 합니다.

 

바운디드 컨텍스트 (Bounded Context)를 정의를 어떻게 하나요? 

  • 비지니스를 분석하여 하위 도메인을 분류 한다. ( 핵심, 지원, 일반 )
  • 도메인 분류는 유스케이스와 요구사항들로 만들어 집니다. 
  • 도출된 유스케이스와 하위 도메인의 특성을 정리하여 바운디드 컨테스트의 경계를 정의 합니다.
  • 시스템의 특성이나 비지니스 환경에 따라 전략적으로 바운디드 컨텍스트의 크기를 결정 합니다.
    전략적 판단 : 시스템 복잡도, 비즈니스 복잡도, 운영/유지보수 가용 자원