[도메인명] 도메인 이벤트 스토밍
본 문서는 제공된 요구사항을 기반으로 Event Storming 방식으로
- 도메인 이벤트
- 정책(When–Then)
- 액터와 명령
- Aggregate 매핑
- 타임라인/프로세스 흐름 (필요시)
을 도출한 결과입니다.
1. 도메인 이벤트
과거형으로 작성 (예: ~됨, ~완료됨, ~생성됨)
| Event | Description |
|---|---|
| CallPlanCreated | 콜 계획이 생성됨 |
| OutboundCallCompleted | 아웃바운드 콜이 완료됨 |
| ... | ... |
2. 정책 (When → Then)
이벤트 간 연쇄 반응 및 조건부 후속 처리
후속 액션이 있는 경우만 기록
When 컬럼에 조건이 있는 경우 괄호로 표시
Then 컬럼에 여러 결과는 쉼표로 나열
| When | Then |
|---|---|
| OutboundCallCompleted | CallBannerUpdated 발생 |
| OutboundCallCompleted (금액 100만원 초과) | ApprovalRequested 발생 |
| OutboundCallCompleted (3회 이상 시도 실패) | EscalationCreated 발생, NotificationSent 발생 |
| CallCompletionRejected | NotificationSent 발생 |
| ApprovalRequested | ManagerNotified 발생 |
| ... | ... |
3. 액터와 명령
Command는 동사 원형으로 작성 (예: CompleteCall, CreateMemo)
Actor는 역할별로 작성 (예: Operator, Manager, Admin)
| Command | Actor | Event |
|---|---|---|
| CreateCallPlan | Operator | CallPlanCreated |
| CompleteOutboundCall | Operator | OutboundCallCompleted |
| ... | ... | ... |
4. Aggregate 매핑
이벤트, 정책, 커맨드를 바탕으로 Aggregate 후보 도출
트랜잭션 경계 결정 및 이유 설명
4.1 [Aggregate명 - 예: AppUserOutboundCallPlan]
트랜잭션 경계: 콜의 생명주기 전체를 원자적으로 관리
담당 Command:
- CreateCallPlan
- CompleteOutboundCall
- CancelCall
- AddMemo
발행 Event:
- CallPlanCreated
- OutboundCallCompleted
- CallCancelled
- MemoAdded
적용된 정책:
- OutboundCallCompleted → CallBannerUpdated
4.2 [다음 Aggregate명]
위 구조 반복
5. 타임라인 / 프로세스 흐름 (필요시)
복잡한 워크플로우가 있는 경우에만 작성
Mermaid 다이어그램 사용