일관성 없는 모델
‘리드’라는 용어가 서로 다르게 사용된다.
- 마케팅 부서 - 제품에 대한 관심
- 영업 부서 - 영업 프로세스의 전체 생명 주기?
모호성은 의사소통에서는 얘기를 하면서 추론할 수 있어 문제가 되지 않는다.
⇒ 소프트웨어로 표현할 때 문제가 된다.
해결방법
- 모든 종류의 문제에 사용할 수 있는 단일 모델을 설계하는 것
- 모든 것에 적합해야하지만 결국 복잡성에 직면하게 됨
- 용어 앞에 접두사 추가
- 인지부하
- 유비쿼터스 언어와 일치하지 않음 → 얘기를 할 떄 접두사 없이 해도 소통 가능하니까.
즉 일관성 있게 얘기를 해야한다.
바운디드 컨텍스트
- 유비쿼터스 언어를 여러 개의 작은 언어로 나눠서 할당
- 컨텍스트를 명시적이고 중요한 비즈니스 도메인의 요소로 모델링할 수 있다.
모델 경계
모델의 경계를 정의하는 것은 모델링 프로세스의 본질적인 부분
- 지도 - 특정 목적 범위 내에서만 유용하고 일관성이 있다.
- 바운디드 컨텍스트 - 일관성이 유지되는 경계
바운디드 컨텍스트의 범위
- 도메인을 모델링하기 위해 우리는 모델을 분할하고, 세분화된 모델에 적용 가능한 컨텍스트를 엄격히 정의해야함
- 모델 자체로 유용해야하기 때문에 크기에 대한 결정은 도메인에 따라 결정된다.
- 날방 - 시스템 백오피스, 가맹점 백오피스, 유저 프론트 부분도 경계를 나눈것이 아닐까??
바운디드 컨텍스트 대 하위 도메인
하위 도메인과 바운디드 컨텍스트 사이의 상호작용
하위 도메인은 비즈니스 전략
바운디드 컨텍스트는 소프트웨어 설계
- 단일 모델
- 모델이 크고 유지보수하기 어려운 경우 분할 모델
경계
무엇이 들어있는지, 밖으로 나가는지, 범위, 그 무엇이 이동하는지?
바운디드 컨텍스트 패턴은 물리적 경계와 소유권 경계를 규정하기 위한 도메인 주도 설계 도구
물리적 경계
바운디드 컨텍스트는 개별 서비스 / 프로젝트로 구현돼야한다.
구현, 진화, 버전 관리를 각각의 다른 바운디드 컨텍스트와 독립적으로 해야함
- 네임스페이스, 모듈, 패키지
소유권 경계
바운디드 컨텍스트는 한 팀에서만 구현 발전 유지 관리를 해야함
결론
내재된 충돌을 발견할 때마다 유비쿼터스 언어를 여러 개 바운디드 컨텍스트로 분해해야한다.
그리고 바운디드 컨텍스트 안에서는 일관성 있어야한다.
⇒ 설계를 어떻게 하냐에 따라서 달라진다.
⇒ 서로 다른 바운디드 컨텍스트는 독립적이다.
회사 - 시스템 백오피스, 가맹점 백오피스, 유저 프론트 부분도 경계를 나눈것이 아닐까??
'책 > 도메인 주도 설계 첫걸음' 카테고리의 다른 글
아키텍처 패턴 (0) | 2023.02.28 |
---|---|
시간 차원의 모델링 (0) | 2023.02.28 |
간단한 비즈니스 로직 구현과 복잡한 비즈니스 로직 다루기 (0) | 2023.02.28 |
바운디드 컨텍스트 연동 (0) | 2023.02.28 |
비즈니스 도메인 분석하기 (0) | 2023.02.28 |