도메인 주도 개발 시작하기 도메인 모델과 바운디드 컨텍스트 ch9

김종완·2023년 11월 7일
0

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

바운디드 컨텍스트

  • 등장 배경: 한개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 오히려 모든 하위 도메인에 맞지 않는 모델을 만들게 된다.
  • 모델은 특정한 컨텍스트(문맥) 하에서 완전한 의미를 갖는다. 같은 제품이라도 카탈로그 컨텍스트와 재고 컨텍스트에서 의미가 서로 다르다. 이렇게 구분되는 경계를 갖는 컨텍스트를 DDD에서는 바운디드 컨텍스트라고 부른다.
  • 바운디드 컨텍스트는 모델의 경계를 결정하며 한 개의 바운디드 컨텍스트는 논리적으로 한 개의 모델을 갖는다.
  • 여러 하위 도메인을 하나의 바운디드 컨텍스트에서 개발할 때 주의할 점은 하위 도메인의 모델이 섞이지 않도록 하는 것이다.
  • 물리적인 바운디드 컨텍스트가 하나일 경우 내부적으로 패키지를 활용해서 논리적으로 바운디드 컨텍스트를 만들 수 있다.
  • 바운디드 컨텍스트는 도메인 기능을 사용자에게 제공하는 데 필요한 표현 영역, 응용 서비스, 인프라스트럭처 영역을 모두 포함 한다.
  • 바운디드 컨텍스트는 도메인 기능을 제공하는 데 필요한 모든 요소를 포함한다.
  • 각 바운디드 컨텍스트는 서로 다른 구현 기술을 사용할 수 있다.

바운디드 컨텍스트들의 통합 방식

직접 통합 방식

두 바운디드 컨텍스트가 직접적으로 통신하는 방식이다. 예를 들어, 한 바운디드 컨텍스트가 다른 바운디드 컨텍스트의 메서드를 호출하거나, 두 바운디드 컨텍스트가 공유 데이터에 접근하는 경우 직접 통합 방식을 사용할 수 있다.

  • 장점

    • 통합이 쉽다. 두 바운디드 컨텍스트가 직접적으로 통신하므로, 통합을 위해 별도의 작업이 필요하지 않다.
    • 효율적이다. 두 바운디드 컨텍스트가 직접적으로 통신하므로, 데이터 전송에 소요되는 시간이 단축된다.
  • 단점

    • 바운디드 컨텍스트의 결합도가 높아진다. 두 바운디드 컨텍스트가 직접적으로 통신하기 때문에 한 바운디드 컨텍스트의 변경이 다른 바운디드 컨텍스트에 영향을 미칠 수 있다.
    • 확장성이 떨어진다. 두 바운디드 컨텍스트가 직접적으로 통신하므로, 새로운 바운디드 컨텍스트를 추가하기 어렵다.

간접 통합 방식

간접적인 통합 방식은 두 바운디드 컨텍스트가 중간자(mediator)를 통해 통신하는 방식이다. 중간자는 두 바운디드 컨텍스트 간의 통신을 중재하는 역할을 한다.

  • 장점

    • 바운디드 컨텍스트의 결합도가 낮아진다. 중간자가 두 바운디드 컨텍스트 간의 직접적인 통신을 중재하므로, 한 바운디드 컨텍스트의 변경이 다른 바운디드 컨텍스트에 영향을 미치지 않는다.
    • 확장성이 좋다. 새로운 바운디드 컨텍스트를 추가하기 쉽다.
  • 단점

    • 통합이 어렵다. 중간자를 구현하고 두 바운디드 컨텍스트를 중간자와 통합하기 위해서는 별도의 작업이 필요하다.
    • 효율성이 떨어진다. 중간자를 통해 데이터를 전송하므로, 데이터 전송에 소요되는 시간이 증가한다.
profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글