team logo icon
article content thumbnail

이벤트스토밍에 대해 알아보자

이벤트스토밍에 대한 학습과 실습 후기

안녕하세요 윱입니당🐈‍⬛


오늘은 비요에서 프로덕트 설계를 위해 진행한 이벤트스토밍은 무엇이고 어떻게 진행을 했었는지에 대해 소개해드리고자 합니다.


해당 글은 아래의 링크를 참고하여 작성되었음을 알려드립니다😊


비요가 신속 정확하게 프로덕트를 설계하려면

2024년 비요는 축제에서 진행하는 티켓팅, 굿즈 판매, 그리고 푸드트럭 관련 주문 및 결제를 한번에 운영할 수 있도록 돕는 '티켓프렌즈'라는 서비스를 개발/운영하였습니다.

축제에서 진행하는 다양한 판매 형태(티켓 판매/굿즈 판매/음식 판매)에 대하여 각각 운영자, 사용자, 그리고 판매 형태에 대한 흐름이 다르고 다양한 형태에 맞추어 설계를 진행해야 하는 상황이었어요.

그리고 비요에는 프로덕트(product)를 개발/디자인 하는 인원과 운영과 영업을 담당하는 인원이 함께 소규모로 이루어져 있기 때문에 기존의 설계 방식이 아닌 다양한 이해관계자들이 함께 설계에 참여할 수 있는 방법이 필요한 상황이었어요.

📌 티켓프렌즈 설계 방식 채택을 위해 필요한 조건
- 다양한 형태의 흐름에 대하여 상황/사용자/운영자에 대해 맞춤형 설계가 필요함
- 사내 다양한 이해관계자들이 함께 의견을 내며 설계가 가능해야 함
- 사내 모든 구성원들의 align을 맞출 수 있는 구조여야 함

그래서 저희는 다양한 방식 중 '이벤트스토밍'을 통해 다 함께 이벤트스토밍에 대해 공부하고 적용해보는 시간을 가졌습니다.


이벤트스토밍이란?

이벤트스토밍 진행 과정을 보여주는 예시사진 (출처 : FigJam)

이벤트스토밍은 복잡한 도메인의 이벤트에 대해서 다양한 이해관계자들이 함께 모여 빠르고 쉽게 이해하고 소통하여 문제를 해결할 수 있도록 도와주는 방법입니다.

팀 전체가 함께 참여하며 각각의 도메인 이벤트에 대하여 순서와 흐름을 학습하고 모두가 함께 하나의 언어로 소통하면서 모두가 도메인에 대해서 동일하게 이해하도록 도울 수 있습니다.

이벤트스토밍을 진행하는 목적에 대해서는 아래와 같이 설명할 수 있어요.

  1. 도메인 지식 공유

    개발자는 기술적 지식은 있지만 비즈니스에 대한 이해가 부족할 수 있고, 도메인 전문가는 비즈니스를 잘 알지만 기술적 구현 방법을 모를 수 있음.

    이벤트스토밍은 이들이 한 자리에 모여 포스트잇에 이벤트를 작성하고 시각화하면서 서로의 지식을 공유하는 과정.

    예를 들어, 쇼핑몰 시스템에서 "주문 접수됨", "결제 완료됨", "배송 시작됨" 같은 이벤트를 함께 정의하며 서로의 관점을 이해할 수 있게 함.

  2. 비즈니스 프로세스 시각화

    복잡한 업무 흐름을 이벤트 중심으로 시각화하여 이해하기 쉽게 만듦.

    시간 순서대로 벽이나 화이트보드에 이벤트를 붙여나가면서 전체 프로세스의 흐름을 한눈에 볼 수 있게 함.

    시각적 표현을 통해 추상적인 개념을 구체화하고 모든 참여자가 같은 그림을 볼 수 있게 도움.

  3. 공통 언어 구축

    각 부서나 역할마다 같은 개념을 다른 용어로 부르는 경우가 많음.

    마케팅팀의 "프로모션"과 영업팀의 "특별 할인"이 같은 개념일 수 있음.

    이벤트스토밍을 통해 모든 이해관계자가 합의한 통일된 용어(유비쿼터스 언어)를 정의하고 사용함으로써 의사소통 오류를 줄임.

  4. 병목 현상과 문제점 식별

    이벤트 흐름을 시각화하면 프로세스의 비효율적인 부분이나 문제점을 발견하기 쉬움.

    예를 들어 특정 이벤트 사이의 간격이 너무 긴 경우나, 반복적인 확인 과정이 많은 경우 등을 식별할 수 있음.

    "배송 준비 완료" 이벤트와 "배송 시작" 이벤트 사이에 불필요한 지연이 있다면 이를 명확히 확인하고 개선 방안을 논의할 수 있음.


이벤트스토밍 진행 방식에 대해


이벤트스토밍은 포스트잇을 사용하여 시각적으로 표현할 수 있고, 색깔별로 규칙을 세워 규칙에 맞는 내용을 순서대로 써보며 도메인에 대한 이해도를 높일 수 있습니다.

포스트잇 색깔에 따른 규칙

이벤트스토밍은 크게 3단계에 걸쳐서 진행됩니다.

  1. 빅픽쳐(Big picture) 이벤트스토밍 단계

    • 도메인의 전체적인 구조와 흐름을 이해하는 단계입니다.

    • 주요 도메인 이벤트를 식별하고 시간 순으로 배열합니다.

    • 'Event' 포스트잇을 활용하여 시간순으로 일어나는 주요 이벤트를 과거형을 작성하고 나열합니다.

  2. 프로세스 모델링(Process Modeling) 단계

    • 1단계에서 시간순으로 주요 이벤트를 나열한 것에서 더 상세히 분석하고 프로세스를 모델링하는 단계입니다.

    • 시간순으로 나열된 이벤트에 대해 관련 Command, Actor, Read model, Policy, Issue를 추가합니다.

    • 정리된 이벤트에 대하여 External System과 연계하고, Bounded context을 통해 특정 프로세스를 구분합니다.

    • 구분된 프로세스 모델에 대한 워크플로우를 정의하고 프로세스가 어떻게 진행되는지 시각화할 수 있습니다.

  3. 소프트웨어 디자인(Software Design) 단계

    • 앞의 두 단계의 결과를 바탕으로 소프트웨어 구현을 위한 상세 설계를 진행합니다.

    • 각 프로세스에 따라 필요한 Read Model을 구체화합니다.

    • 이벤트별 흐름을 명시화하고 도메인 로직이 올바르게 수행되고 있는지 확인합니다.

해당 규칙과 절차대로 진행하는 것이 정석이지만 적용을 희망하는 프로세스나 도메인의 특성에 따라 일부 변경하여 적용하여도 원하는 결과를 얻을 수 있습니다.

상황과 특성에 따라서 필요한 부분들만 골라서 유연하게 사용할 수 있습니다.

비요의 이벤트스토밍에 사용된 요소들

비요의 이벤트스토밍 방법

앞서 설명드렸던 것과 같이 비요는 티켓프렌즈의 도메인 이벤트를 정리하기 위해 이벤트스토밍을 진행하였어요.

대부분의 인원이 이벤트스토밍을 처음 접하거나 실습하였기 때문에 쮼님께서 먼저 이벤트스토밍에 대해서 간략하게 소개해주시고 하는 방법에 대해 설명하면서 실습을 진행했습니다.

다같이 모여서 진행하는 이벤트스토밍
이벤트스토밍에 대해서 설명하고 경청하는 중

비요에서 이벤트스토밍을 진행할 때는 다양한 인원이 동시에 볼 수 있고, 모두의 참여가 필요했기 때문에 이벤트스토밍 협업툴인 피그잼을 활용하여 이벤트스토밍을 진행하였습니다.

FigJam에서는 다양한 템플릿을 통한 예시도 많이 접할 수 있어요

우선 모두가 각자 티켓프렌즈 안에서 일어나는 이벤트에 대해서 정리해보는 시간을 가졌는데요.

모든 상황에 대해서 쓰기에는 양이 너무 방대했기 때문에 각각 임의로 섹션을 나누어서 진행해보았습니다.

구매를 위해서 사용자가 겪는 Event에 대해서 각자 써보았어요
분주하게 움직이는 팀원들의 마우스포인트

그리고 각자 작성한 Event에 대해서 소개하고 논의를 한 이후 모두의 논의를 통해 CommandPolicy, Read Model 작성, 프로세스 별 주의해야 할 Issue 살피기를 진행했어요.

이용자가 티켓프렌즈를 사용하기 위해 필수로 진행하는 이벤트에 대해

비교적 간단한 부분으로 먼저 이벤트스토밍을 진행하면서 팀원들의 이해도를 높이고 이후 더 복잡한 도메인에 대해서도 조금 덜 부담스럽게 진행해 볼 수 있었습니다.

다같이 이벤트스토밍을 진행하기 위해서는 생각하기 / 토론하기 / 결정하기 등의 과정들이 필요하기 때문에 생각보다 더 시간과 체력이 많이 필요해요.

그래서 티켓프렌즈의 수많은 프로세스 중 가장 확실하게 정리가 필요했던 사용자의 티켓프렌즈 가입 절차에 대해서 가장 먼저 진행하고 티켓팅 절차에 대해서 각자 생각하는 프로세스에 대해서 우선 정리를 하고 토론을 진행하여 결정하는 순서로 진행해보았어요.

티켓팅 절차 중 각자 Aggregate를 맡아 먼저 정리해보기
티켓팅 시스템에 대해 최종적으로 정리한 결과

이벤트스토밍을 진행하며

다같이 이벤트스토밍을 하면서 가장 좋았다고 생각한 부분은 '팀원 모두가 어떠한 도메인 이벤트에 대하여 일치된 생각을 할 수 있다' 라는 점이었어요.

그동안 각자의 배경지식 / 사용하는 단어 / 소속되어 있는 팀에 따라서 제각각으로 분산 되어 있던 정보들을 한 곳에 모아서 함께 토론하고 결정하면서 무언가 흐릿하게 보이는 것만 같던 부분들을 명확하게 시각화 할 수 있었고, 정리되어 있는 자료를 기준으로 전체적인 프로세스에 대해서 좀 더 쉽게 이해할 수 있도록 해주었던 것 같아요.

바쁘게 개발하고 운영하던 와중에도 이벤트스토밍을 위해 모두가 한자리에 모여 생각을 공유하고, 저희의 서비스의 도메인 이벤트에 대해서 명확하게 정리해보며 중간 중간 발생할 수 있는 혼란스러운 상황들을 많이 줄일 수 있었다고 생각합니다!


저희와 비슷한 조직 규모이거나 서비스는 비대 해지는데 프로세스에 대한 정리가 명확하지 않아서 고민이신 팀들은 이벤트스토밍을 통해 더욱 효율적으로 일할 수 있는 기회가 있을 것 같아요!


저는 그럼 또 다른 이야기로 돌아오겠습니당 안뇽~~ 🐈‍⬛

이벤트스토밍 현장에 침범한 오잌오잌의 외계인을 끝으로..
최신 아티클
Article Thumbnail
정유빈
|
2025.05.15
민첩하게 일하기_애자일(Agile)이란?
민첩하게 일하기 시리즈 (1). 애자일(Agile)이란? / beyo의 조직 문화인 애자일 프레임워크(Agile Framework)에 대해 알아봅니다.
Article Thumbnail
송송맨보샤
|
2025.05.07
컴패니언 카드 키트 워크샵
우리 서비스는 사용자에게 어떤 존재일까?
Article Thumbnail
정유빈
|
2025.04.24
Framer를 통해 팀페이지 만들어보기
쏭교수님의 Framer workshop 에서 배운 내용을 토대로 팀페이지 제작해보기