6~7차에서는 배달의 민족의 주문 시스템을 가지고 애그리거트 DDD를 그려보기로 했다.

6차에서 내가 그린 플로우 차트는 아래와 같다.

다른분들이 그린 플로우차트를 공유하다가 애그리거트라는 개념에 대해 알게되었고,

배달의 민족 앱의 주문 시스템에서만 애그리거트를 분석해보고 7차 스터디에서 DDD를 그려보기로 했다.


배달의 민족 주문 > 딜리버리 전달 > 고객 수령 흐름을 순서로 애그리거트를 그려보기로 했고,

주문 기준 가게등록이 앞단에 있고, 딜리버리 뒤엔 알람, 리뷰 등의 컨텍스트가 포함되어있음을 가정했다.

 

처음에는 애그리거트를 먼저 만들고 그다음 액터, 커멘트 순으로 정하려고 했으나,

의견에 따라서 액터와 커맨드, 도메인 이벤트를 작성한 뒤에 애그리거트를 만드는 것으로 진행했다.

 

우리는 위와같이 애그리거트, 액터, 커맨드, external system, domain event 를 지정했는데

커맨드와 도메인 이벤트를 분리하는것이 조금 어려웠다.

 

결정적으로는 도메인 이벤트는 시스템 내에서 발생한 중요한 사건 알림으로 과거형으로 사용하고

커맨드는 이벤트를 트리거하는 명령을 의미하고 위 이미지와 같이 정의했다.

 

이후 이 링크를 참고하여 DDD를 그리고 액터별로 분리하자 이벤트, 배달 애그리거트가

2개의 액터에서 중복으로 사용되는 부분을 발견하고 주문생성/주문처리 부분도 분리했던것과 같이

이벤트와 배달 할당 정책 부분도 액터별로 애그리거트를 추가 하였다.

이후 이렇게 만든 애그리거트를 기반으로 점선은 Pub/Sub  실선은 Req/Resp 를 작성해보고

테스트케이스 를 만들때 어떤부분을 참고하는지 등에 대해 생각해보려고 한다.