본문 바로가기

기타

EventStorming을 도입하자!

EventStorming을 도입하자!

⛳ 목표 설정                                                     

  • DomainEvent, Aggregates, BoundedContext 등 키워드를 출현시키려고 노력하지 말아 주세요.
  • 필요에 따라 자연스럽게 등장할 테니, 이해관계자들과 함께 어떤 좋은 서비스를 만들고 싶은지 고민해주세요.
  • EventStorming의 핵심은 다양한 이해관계자들의 제안과 피드백입니다. 이를 이해해야 합니다.
  • 비즈니스 모델은 지속해서 변화하므로 반복해서 도입을 목표해 봅니다.

🔖 주제                                                            

  • EventStorming은 복잡한 업무를 분석하고, 논의하는 과정을 통해 도메인을 모델링하는 방법론입니다.
  • 모두가 이해할 수 있는 단어(유비쿼터스 언어)를 사용하여, 이해 관계자들과 피드백을 진행합니다.
  • 특정 이해관계자에게 특정 업무의 정보가 몰리는 것을 방지하며, 전반적인 이해도를 높일 수 있습니다.
  • 즉, 요구사항에 부합하는 좋은 서비스를 만들 수 있는 방향이 될 수 있습니다.

📓 설명                                                            

1️⃣ EventStorming의 목표는?

제품에 어떠한 [Event]가 존재하는지, 연관된 추가적인 요소가 무엇이 있을지 시각화합니다.

최종적으로 연관된 [Event]를 군집화하여 도메인을 그려내는 것이 목표입니다.

 

2️⃣ 참여자를 모집해요!

목표를 위해서 가장 우선해야 할 것은 여러 포지션의 이해관계자들과 함께하는 것입니다.

혼자 진행한다면 굳이 해당 과정에 대해 고민하고 배우는 것보단 평소 하던 개발방식이 진행에 도움이 될 것입니다.

 

3️⃣ 스티커를 나누어 주어요!

EventStorming다양한 색상의 포스트잇에 의미를 두고 의견을 시각화하는 것으로 시작합니다.

포스트잇의 색상과 의미는 참여자들과 의논하여 결정하면 되지만 일반적으로 사용되는 내용을 알려드리겠습니다.

 

Name Color Desc Example
DomainEvent 주황 시스템 내에서 발생한 상태 변화를 표현합니다. 해당 이벤트에 관심을 갖을 이벤트가 있을지 고민해주세요. 회원가입됨.
축하 메세지 전송됨.
Command 하늘 이벤트를 발생시키는 트리거를 표헌합니다. 회원가입 요청함 축하 메세지 전송 요청함.
Policy 파랑 커맨드를 호출하는 특정 조건 및 규칙을 표현합니다. 즉, 이벤트를 일으키는데 필요한 조건 및 규칙을 의미합니다. 회원가입이 되었다면 가입 축하 메세지 전송을 요청합니다.
ReadModel 초록 이벤트에 필요한 데이터 모델링 정보입니다. 닉네임,성별,이메일
Problem 분홍 이벤트 동작 과정에서 발생할 수 있는 문제를 의미합니다. 또는 특정 스티커의 궁금한 내용을 적어주시면 됩니다. 성별은 필수 입력인가요?
메세지는 꼭 발송되어야하나요?
ExternSystem 보라 모델링하고 있는 도메인의 외부에 있는 시스템을 의미합니다. 회원 기준 → 메세지

 

다시 한번 상기하자면, 핵심은 좋은 제품을 만드는 것에 있습니다.

EventStorming은 도구일 뿐이니, 예시로 알려드린 스티커의 의미를 너무 깊게 고민하지 말고 시도해 주세요.

예를 들어 ReadModel은 예시와 다르게 [동작에 필요하거나 표현할 정보]로 표현해도 좋습니다.

 

 

4️⃣ 필요한 것을 쓰고 붙여보아요

이제 시도해 볼 것은 손에 주황색 포스트잇을 들고 제품에 있을 법한 이벤트를 작성하는 것입니다.

제품, 상황, 팀원 성향에 따라 결과는 변하므로, 대화를 통해 하나하나 맞추며 진행해 주세요.


  • 작성에 시간 제한 두기
  • 모든 참여자들이 이해할 수 있는 단어를 사용하기
  • 조회는 일반적으로 [이벤트]가 아니에요!
  • 포스트잇은… 아끼면 안된다고 생각해요…
  • 중복, 작성방법 고민하지 않기

5️⃣ 질문이요!

잔뜩 붙여진 이벤트를 보고 있으면 질문하고 싶은 내용이 떠오르지 않나요?

생각하는 내용이 당연하지 않을 수 있으니, 나와 동일한 생각을 하여 이벤트를 붙인 건지 질문해 보아요.

  • 적극적으로 참여하기
  • 모든 참여자들이 이해할 수 있는 단어를 사용하기!
  • 세부적인 메커니즘 질문은 피하기
  • 시간순으로 정리해보기
  • 지금 당장 존재하지 않을 일에 대해 고민하지 말아요

6️⃣ 답변이요!

답변하기 쉬운 질문들이 보이나요? 내가 작성한 이벤트가 아니어도 상관없어요.

다 함께 질문에 대해 의논하여 답변을 작성해 주세요.

  • 작성에 시간 제한 두기!
  • 커맨드 == API가 아니에요!
  • 이벤트는 혼자 발생할 수 없어요!
  • 이벤트 구독(sub)은 Policy로 표현해보아요
  • 메커니즘 고민은 EventStorming 끝나고 해요

 

7️⃣ 나열해 볼까요?

Command, Event, Policy, Problem을 작성했어요!

이제부터는 작성된 내용들로 무엇이 필요한지 시각화할 차례예요

  • 어떤 데이터를 주고 받아야할지 시각화해보아요
  • 질문/답변을 치우고 시간순으로 정리해보아요
  • 필요한 정보가 비슷한 스티커는 근처에두어요
  • UI관계자가 참여했다면 UI관련도 표현해보아요

 

8️⃣ 정리해 볼까요?

연관성이 높은 스티커가 뭉쳐졌나요?

그러면 그 스티커들을 뭐라고 부를지 정해보아요.


  • 바운디드컨텍스트는 도메인 모델이 적용되는 특정한 경계를 뜻해요
  • Boris, Snap-E, DomainModel 등을 작성할 수 있어요.

 

 

📚 정리                                                            

학습한 내용을 토대로 의뢰에 대한 EventStorming을 표현

'기타' 카테고리의 다른 글

비바리움 만들기-0회차  (0) 2024.05.16
IntelliJ 라이브 템플릿 기능 사용하기  (0) 2021.06.30
Maven 소개  (0) 2021.05.03
Tomcat 설치  (0) 2021.05.03
Type vs Interface  (0) 2021.04.26