HTTP 200 OK

Memento mori & Carpe diem

CS

event storming이란?

sjoongh 2024. 4. 28. 14:41

정의

DDD설계를 가속화 시킬 수 있는 설계 방법으로 이벤트 중심으로 이해관계자들이 모여 브레인스토밍 하는 워크샵이라 하여 이벤트 스토밍 이라고 부른다.

 

사용이유

MSA를 구축하여 DDD 전략적 설계를 할 때 의존성을 줄이기 위해서는 아키텍처 영역에서 서비스 간 비동기 메시지기반 도메인 이벤트를 활용하는 것이 중요한데 이러한 도메인 이벤트를 통한 의존관계 식별 방법이 용이하지 않기 때문에 이를 한눈에 파악하기 위해 사용한다.

 

 

순서

도메인 이벤트 식별 > 커맨드 식별 > 외부 시스템 도출 > 엑터 식별 > 흐름 설명 > 어그리게잇 식별 > 컨택스트 경계 정의 > 정책 식별 > 컨텍스트 매핑

 

도메인이벤트 도출

  1. 시간의 흐름에 따라 비지니스의 상태 변경을 의미하는 도메인 이벤트를 도출한다. 참여자들은 이벤트 명을 작성하는데 이벤트 명은 과거명으로 작성한다.
  2. 이벤트간의 공간을 두되 이벤트가 연쇄적으로 발행하는 경우 바로 옆에 붙인다.
  3. 같은 시점에 비즈니스 조건에 따라 대체적으로 발생될 수 있는 이벤트는 아래에 같은 라인선상으로 붙인다.
  • 도메인 이벤트는 비즈니스의 어떤 상태를 생성, 변경, 삭제하는 요소이다. 시스템의 화면을 연상하지 말고 비즈니스가 흘러감에 따라 구성 요소들의 상태가 어떻게 변경되는지를 생각하도록 한다.

 

커맨드 도출

  1. 이벤트를 트리거하는 커맨드를 도출한다.
  2. 커맨드는 이벤트를 보면 쉽게 유추할 수 있다. 하나의 커맨드에 의해 여러개의 이벤트가 연속 발생될 수 있으며 커맨드 하나에 조건에 따라 다른 이벤트가 발생할 수 있다.

외부시스템 도출

  • 커맨드 & 이벤트 발생 시 호출되거나 관련되는 레거시 시스템이나 외부 시스템 또는 장비를 도출하여 핑크색 포스트잇에 작성하여 이벤트의 오른쪽 상단에 붙인다.
  • 본 시스템의 구현 대상이 아니지만 시스템의 기능구현을 위해 연계가 필요한 시스템들을 모두 도출한다.

 

엑터 도출

  • 엑터는 사람이나 조직이 될 수 있는데 역할 관점으로 도출한다.
  • 엑터는 추상적으로 식별하지 말고 비즈니스를 수행하는 구체적인 역할로 고려하여 도출한다.
  • 즉 그냥 모든 업무에서 보편적으로 사용되는 회원, 관리자로 뽑지 말고 특정 비즈니스를 실제적으로 수행하는 역할자를 도출하려고 노력해야 한다.
  1. 엑터를 도출하면서 다음과 같이 문장을 만들어 식별한 커맨드와 이벤트를 검토
  2. 관리자가 상품등록을 하여 상품이 등록됨 이벤트가 발생된다.
  3. 주문자가 주문취소를 하여 주문취소됨 이벤트가 발생한다
  • 위 문장이 자연스럽지 않다면 자연스럽게 커맨드와 이벤트를 변경하거나 새로 도출

핫스팟 도출

진행하면서 의문이 들거나 참여하는 사람들이 결정하기 힘든사항 타 부서나 외부에 문의가 필요한 사항이 파악될 때 사용

어그리게잇 도출

  • 커맨드와 이벤트가 영향을 주는 데이터 요소이다.
  • 액터와 마찬가지로 구체적으로 도출하면 좋다.
  • 이벤트가 상태변경하는 요소들을 도출한다.
  • 여러 개가 도출될 경우 이미 도출한 어그리게잇 상단에 포개서 붙인다.
  • 포스트잇을 활용해 큰 벽에 붙이고 진행하는 방식도 존재한다.
  • 역할로 고려하여 도출한다.
  • 즉 그냥 모든 업무에서 보편적으로 사용되는 회원, 관리자로 뽑지 말고 특정 비즈니스를 실제적으로 수행하는 역할자를 도출하려고 노력해야 한다.
  1. 엑터를 도출하면서 다음과 같이 문장을 만들어 식별한 커맨드와 이벤트를 검토
  2. 관리자가 상품등록을 하여 상품이 등록됨 이벤트가 발생된다.
  3. 주문자가 주문취소를 하여 주문취소됨 이벤트가 발생한다
  • 위 문장이 자연스럽지 않다면 자연스럽게 커맨드와 이벤트를 변경하거나 새로 도출

 

 

언택트 Event Storiming 종류 : Miro, Mural

  • 포스트잇을 활용해 큰 벽에 붙이고 진행하는 방식도 존재한다.