Page History
...
예> 화물의 이동에따라 , 화물에대한 책임변화를 나타낸 모델
위와같이 모델개발은 자연어와 함께, 전달하고자 하는 아이디어에 대한 그림한장 이면 충분하며,
도메인 전문가와 지속적인 모델을 만들어내는것에 대해 노력을 해야한다란점을 해야한 다란점을 강조하고있다.
- 개발자와 도메인 전문가 모두 문서가 대화를 지배하는 상황을 피해야한다.
- 최고의 보편언어는 서로 협업하며 나오는 피드백에의해 만들어진다.
- 이 과정에서 팀의 화합된 멘탈 모셀을 모델을 만들수 있으며, 이러한 지식탐구는 도메인에대한 통찰로 이루어진다.
덩어리를 나누고 바켓에 담기
여기서는 큰 진흙덩어리(진흙공)이 되는것을 어떻게 방지하고 또한 기존 덩어리를 분리(리팩토링)
할것인가에대한 이야기입니다.
| 진흙공(mud ball) | 덩어리 나누기 : 바운디드 컨텍스트 |
|---|---|
다른 사업부의 정책을 모두 하나의 정책으로 통합하려고 한다면 문제가 발생하게된다.
DDD에서는 서로다른 개념들을 , 다른 바운디드 컨텍스트 안으로 분리해 놓음으로 개념간 차이를 중시하고 각
기 다른 언어와 그에 따른 기능이 존재하는것을 인정하는것이다.
도메인의 특성을 먼저이해하고(도메인 전문가와 충분한 이야기후) 그다음 해야할것이 바운디드 컨텍스트를 올바르게
나누는것이고 이것을 올바르게 나누는것이 사실 가장 어렵다.
그리고 올바르게 나뉘었다고 하면 다음 해야할것은 이것을 누가 할것인가? 팀을 구분하고 바운디드 컨텍스트를 팀의 바구니에 담는것이다.
마이크로 서비스를 어떻게 책임단위로 잘 구분할것인가? 사실상 MSA 를 잘 수행하는 전략적 패턴에도 DDD는 많은 영향을 끼치고 있다.
바켓에담기
- 바운디드 컨텍스트는 단일팀에 할당이되고, 독립적인 소스코드 리파지토리가 있어야한다.
- 한팀은 다수의 바운디드 컨텍스트에 대해 일을 할수 있다.
- 다수의 팀이 하나의 바운디드 컨텍스트를 함께 수행할수는 없다.
- 공식 인터페이스를 통해, 다른팀의 바운디드 컨텍스트를 이용할수 있다.
보편언어개발
팀에서 해야할 바운디드 컨텍스트가 정해졌으면, 여기서 사용되는 언어를 바운디드 컨텍스트 내에서
발견을 가속화하는것이다.
- 바운디드 컨텍스트내에서 , 유용한 보편언어를 개발한다.
- 보편언어는 개발자와 도메인전문가와 번역이 필요없는 합의된 용어이다.
발견을 가속화 하는 방법으로는 이벤트 스토밍이 사용될수가 있다.
이벤트 스토밍
도메인 전문가와 개발자가 어떻게 같이 참여를 하여,어떻게 전략적 설계를 효율적으로 할것인가에 대한 방법중 하나로
이벤트 스토밍이 소개되고 있다. 그리고 여기서 생성된 유용한 이벤트는 실제 도메인 이벤트로 구현이된다.
- 시간이 지남에 따라 발생하는 이벤트를 과거형으로 나열
- 개발적요소(클래스,데이터베이스)가 아닌 이벤트와 비지니스 프로세스에 집중
- 팀은 이해의 폭을 획기적으로 증신시키고, 비지니스모델을 잘 이해한다고 생각한 전문가도 이해의 폭을 다시 넗히고 새로운 통찰력을 가지게됨
- 모든사람이 무언가를 배우게된다.
...
- https://www.eventstorming.com/#events
- https://www.lucidchart.com/blog/ddd-event-storming
- https://spring.io/blog/2018/04/11/event-storming-and-spring-with-a-splash-of-ddd
덩어리를 나누고 바켓에 담기
...
...
컨텍스트 매핑
여기서는 다른팀에서 혹은 분리되어 각각 개발된 바운디드 컨텍스트가 서로 통합하여 상호운영할수 있는가?
에 대한 전략적인 내용과 준수해야할 사항및 표현방법을 포함하고 있다.
- 고객-공급자 : 고객이 언제 무엇을 받게될지 공급자가 결정을 하지만 고객의 요구를 받아들이기도함
- 준수자 : 상류팀이 하류팀의 요구사항에 지원할 동기가 없는 경우, 하류팀이 상류팀의 모델을 그대로 따라야할때
- 반부패계층 : 가장 방어적이며 , 상류모델로부터 독립을 시키고 번역계층을 만들어 통합에 용이한 모델 개념을 독립적으로 만들수 있음
- 공개 호스트 서비스 : 이 프로토콜은 공개가 되어있고 API화가 잘되어 있다. 반부패계층을 만들시간이 없다고하면 이 모델의 준수자가 되는것을 선택할수도 있다.
- 각자의길 : 바운디드안에서만 의미가 있고 다른 컨텍스트와 통합이 될필요없는경우
다른 사업부의 정책을 모두 하나의 정책으로 통합하려고 한다면 문제가 발생하게된다.
DDD에서는 서로다른 개념들을 , 다른 바운디드 컨텍스트 안으로 분리해 놓음으로 개념간 차이를 중시하고 각
기 다른 언어와 그에 따른 기능이 존재하는것을 인정 한다.
바켓에담기
- 바운디드 컨텍스트는 단일팀에 할당이되고, 독립적인 소스코드 리파지토리가 있어야한다.
- 한팀은 다수의 바운디드 컨텍스트에 대해 일을 할수 있다.
- 다수의 팀이 하나의 바운디드 컨텍스트를 함께 수행할수는 없다.
- 공식 인터페이스를 통해, 다른팀의 바운디드 컨텍스트를 이용할수 있다.
보편언어개발
- 바운디드 컨텍스트내에서 , 유용한 보편언어를 개발한다.
- 보편언어는 개발자와 도메인전문가와 번역이 필요없는 합의된 용어이다.
...




