step1. Domain Event정의
- 이벤트는 어떤 대상자(Actor)가 행동(Action)을 해서 발생한 결과
- 이벤트가 발생하는 시간 순서대로 붙인다. 동시 수행되는 이벤트는 수직으로 붙인다.
- 비지니스 용어로 무슨 일이 발생했는지를 적는 것이지, 시스템 내에서 발생되는 것을 찾는게 아님.(개발자 언어로 말하지 말라는 말, 일반 사람들의 언어를 사용해서 의사소통)
- 각자 생각나는 Event를 적고 더 이상 생각이 안날때까지 붙인다(포스트잇을 이용해도 좋음)
- 서로 상이하면서 중복된것을 없애거나 합친다.
step2. 프로세스 그룹핑
- 도메인 이벤트 정의단계가 끝나면 나열된 이벤트를 관련있는것끼리 묶어준다.
- 그리고 프로세스가 진행되는 순서또는 로직대로 그룹핑된것을 나열한다.
step3. Command 정의
- 사용자의 행위가 Command 됩니다.
- Command는 일반적으로 '무엇을 CRUD 요청한다.' 또는 "무엇을 XX한다"의 형태가 됩니다.
- 각 Event별로 그 Event를 발생시키는 Command가 무엇인지 생각하여 Event 왼쪽에 붙입니다. Command 하나에 1개 이상의 Event가 발생할 수 있습니다.
왼쪽이 Command: 오른쪽이 Event
ex) 음식점 선택: 음식점이 선택되었다, 메뉴선택: 음식 메뉴가 선택되었다,
배송지입력: 배송지가 입력되었다, 주문 최종확인: 주문접수가 되었다
step4. Trigger 정의
- Command를 수행하는 Actor를 정의한다. Actor를 Command의 왼쪽 하단에 겹쳐서 붙인다.
- Event 발생과 관련된 외부 시스템이 있다면 Event의 우측 상단에 겹쳐서 붙인다.
step5. Aggregate 정의
step6. Bounded Context 정의
step7. Bounded Context간의 도식화