도메인 주도 설계 구현-도메인, 서브도메인, 바운디드 컨텍스트(2)

도메인 주도 설계 구현

도메인, 서브도메인, 바운디드 컨텍스트

왜 전략적 설계가 엄청나게 필수적인가

팀은 반듯이 비즈니스 도메인과 그에 따른 서브도메인은 물론 이고 그들이 개발하고 있는 바운디드 컨텍스을 이해하고 있어야 된다.

현실의 도메인과 서브도메인

도메인은 문제점 공간과 해결책 공간을 모두 갖고 있다.

  • 문제점 공간은 새로운 핵심 도메인을 만들기 위해 개발하는 전체 도메인의 일부다.
  • 해결책 공간은 하나 이상의 바운디드 컨텍스트이며 구체적인 소프트웨어 모델 집합이다.

서브도메인을 1:1로 바운디드 컨텍스트와 묶으려는 시도는 바람직한 목표다.

프로젝트의 바른 방향으로 전환을 위해 다음 질문에 답을 얻어야 한다.

  • 전략적 핵심 도메인의 이름과 비전은 무엇인가?
  • 어떤 개념을 전략적 핵심 도메인의 일부로 고려할 것인가?
  • 필요한 지원 서브도메인과 범용 서브도메인은 무엇인가?
  • 도메인의 각분야에선 누가 일하나?
  • 올바른 팀이 조직될수 있는가?

우리는 각각의 유비쿼터스 언어를 주시하고 있기 때문에 잘 분리된 바운디드 컨텍스트의 측면에서 심사숙고 해야 한다.

  • 이미 존재하는 소프트웨어 자산은 무엇이며, 재사용할수 있는가?
  • 새롭게 구하거나 만들어야 하는 자산은 무엇인가?
  • 서로 어떻게 연결 또는 통합됐는가?
  • 추가적으로 필요한 통합은 무엇인가?
  • 기존의 자산과 새로 만들어야 하는 자산들을 고려했을 때 필요한 노력은 무엇인가?
  • 전략적 이너셔티브와 모든 지원 프로젝트는 성공할 확률이 높은가? 아니면 그중 어떤 하나가 전체 프로그램을 지연시키거나 심지어 실패하도록 만들 수 있는가?
  • 완전히 구분되는 유비쿼터스 언어의 용어는 무엇인가?
  • 바운디드 컨텍스트 사이에 개념이나 데이터의 중복 또는 공유가 일어나는 위치는 어디인가?
  • 바운디드 컨텍스트 사이에 공유되는 용어나 중복된 개념이 어떻게 매핑되고 변환되는가?
  • 핵심 도메인을 지칭하는 개념을 담고 있는 바운디드 컨텍스트는 무엇이고 모델링을 위해선 전술적 패턴중 머엇을 사용해야 하는가?

참조