정의
DDD설계를 가속화 시킬 수 있는 설계 방법으로 이벤트 중심으로 이해관계자들이 모여 브레인스토밍 하는 워크샵이라 하여 이벤트 스토밍 이라고 부른다.
사용이유
MSA를 구축하여 DDD 전략적 설계를 할 때 의존성을 줄이기 위해서는 아키텍처 영역에서 서비스 간 비동기 메시지기반 도메인 이벤트를 활용하는 것이 중요한데 이러한 도메인 이벤트를 통한 의존관계 식별 방법이 용이하지 않기 때문에 이를 한눈에 파악하기 위해 사용한다.
순서
도메인 이벤트 식별 > 커맨드 식별 > 외부 시스템 도출 > 엑터 식별 > 흐름 설명 > 어그리게잇 식별 > 컨택스트 경계 정의 > 정책 식별 > 컨텍스트 매핑
도메인이벤트 도출
- 시간의 흐름에 따라 비지니스의 상태 변경을 의미하는 도메인 이벤트를 도출한다. 참여자들은 이벤트 명을 작성하는데 이벤트 명은 과거명으로 작성한다.
- 이벤트간의 공간을 두되 이벤트가 연쇄적으로 발행하는 경우 바로 옆에 붙인다.
- 같은 시점에 비즈니스 조건에 따라 대체적으로 발생될 수 있는 이벤트는 아래에 같은 라인선상으로 붙인다.
- 도메인 이벤트는 비즈니스의 어떤 상태를 생성, 변경, 삭제하는 요소이다. 시스템의 화면을 연상하지 말고 비즈니스가 흘러감에 따라 구성 요소들의 상태가 어떻게 변경되는지를 생각하도록 한다.
커맨드 도출
- 이벤트를 트리거하는 커맨드를 도출한다.
- 커맨드는 이벤트를 보면 쉽게 유추할 수 있다. 하나의 커맨드에 의해 여러개의 이벤트가 연속 발생될 수 있으며 커맨드 하나에 조건에 따라 다른 이벤트가 발생할 수 있다.
외부시스템 도출
- 커맨드 & 이벤트 발생 시 호출되거나 관련되는 레거시 시스템이나 외부 시스템 또는 장비를 도출하여 핑크색 포스트잇에 작성하여 이벤트의 오른쪽 상단에 붙인다.
- 본 시스템의 구현 대상이 아니지만 시스템의 기능구현을 위해 연계가 필요한 시스템들을 모두 도출한다.
엑터 도출
- 엑터는 사람이나 조직이 될 수 있는데 역할 관점으로 도출한다.
- 엑터는 추상적으로 식별하지 말고 비즈니스를 수행하는 구체적인 역할로 고려하여 도출한다.
- 즉 그냥 모든 업무에서 보편적으로 사용되는 회원, 관리자로 뽑지 말고 특정 비즈니스를 실제적으로 수행하는 역할자를 도출하려고 노력해야 한다.
- 엑터를 도출하면서 다음과 같이 문장을 만들어 식별한 커맨드와 이벤트를 검토
- 관리자가 상품등록을 하여 상품이 등록됨 이벤트가 발생된다.
- 주문자가 주문취소를 하여 주문취소됨 이벤트가 발생한다
- 위 문장이 자연스럽지 않다면 자연스럽게 커맨드와 이벤트를 변경하거나 새로 도출
핫스팟 도출
진행하면서 의문이 들거나 참여하는 사람들이 결정하기 힘든사항 타 부서나 외부에 문의가 필요한 사항이 파악될 때 사용
어그리게잇 도출
- 커맨드와 이벤트가 영향을 주는 데이터 요소이다.
- 액터와 마찬가지로 구체적으로 도출하면 좋다.
- 이벤트가 상태변경하는 요소들을 도출한다.
- 여러 개가 도출될 경우 이미 도출한 어그리게잇 상단에 포개서 붙인다.
- 포스트잇을 활용해 큰 벽에 붙이고 진행하는 방식도 존재한다.
- 역할로 고려하여 도출한다.
- 즉 그냥 모든 업무에서 보편적으로 사용되는 회원, 관리자로 뽑지 말고 특정 비즈니스를 실제적으로 수행하는 역할자를 도출하려고 노력해야 한다.
- 엑터를 도출하면서 다음과 같이 문장을 만들어 식별한 커맨드와 이벤트를 검토
- 관리자가 상품등록을 하여 상품이 등록됨 이벤트가 발생된다.
- 주문자가 주문취소를 하여 주문취소됨 이벤트가 발생한다
- 위 문장이 자연스럽지 않다면 자연스럽게 커맨드와 이벤트를 변경하거나 새로 도출
언택트 Event Storiming 종류 : Miro, Mural
- 포스트잇을 활용해 큰 벽에 붙이고 진행하는 방식도 존재한다.
'CS' 카테고리의 다른 글
Decode, Encode, Parse, Stringify 개념과 사용 (0) | 2024.02.17 |
---|---|
Nginx Proxy vs API Gateway(Part. 2) (0) | 2023.12.20 |
Nginx Proxy vs API Gateway(Part. 1) (0) | 2023.12.09 |
Connection Pool 테스트와 고찰(2) (0) | 2023.11.07 |
Connection Pool 테스트와 고찰(1) (0) | 2023.11.07 |