Event Storming: Быстрое моделирование бизнес-процессов

Event Storming — метод, позволяющий разработчикам и представителям бизнеса совместно исследовать предметную область за час вместо дней или недель. Он позволяет спроектировать систему в виде бизнес-процессов и разделить её на ограниченные контекстные модули, из которых впоследствии строится архитектура. Альберто Брандолини, создатель метода, описывает его как способ быстрого и эффективного исследования предметной области.

Участники сессии

Для эффективной сессии Event Storming необходимы представители различных отделов:

  • Бизнес: PM, аналитики, техподдержка, отдел продаж и другие.
  • Разработка: Frontend, backend разработчики, архитекторы.
  • Фасилитатор: Руководит процессом и следит за его эффективностью. Важно, чтобы фасилитатор не высказывал собственного мнения и не вступал в полемику.

Основные компоненты

Event Storming использует четыре основных компонента:

  1. События: Все возможные действия в системе (например, «клиент зашёл на сайт», «клиент добавил товар в корзину»).
  2. Агрегаты: Сущности в ограниченном контексте (например, «корзина», «товарная витрина»).
  3. Акторы: Инициируют события или являются их заказчиками (например, пользователь, менеджер, разработчик, скрипт, внешний API-вызов).
  4. Действия: Описание происходящего в рамках определенного события (например, «покупка продукта»).

Этапы сессии

Сессия Event Storming проходит в несколько этапов:

  1. Шторм событий: Генерируются все возможные события. Важно направлять участников, фокусируясь на определённых направлениях (например, события в корзине, личном кабинете, процессе оплаты). Повторяющиеся события не удаляются, так как могут иметь разные контексты и акторов.
  2. Хронологическая последовательность: События выстраиваются в последовательность для понимания бизнес-процесса.
  3. Добавление компонентов: К событиям добавляются акторы, действия и агрегаты, определяя связи между ними. Понимание агрегатов может быть сложным, поэтому данный этап требует тщательного обсуждения.
  4. Анализ результатов: В итоге получаются агрегаты в изолированных контекстах и события, за которые эти агрегаты отвечают. На основе полученных данных строится архитектура системы.

Применение Event Storming

Главная польза Event Storming — синхронизация бизнеса и разработки. Он позволяет:

  • Создать общий словарь терминов.
  • Дать разработке понять желания бизнеса, а бизнесу — ограничения системы.
  • Структурировать сущности системы и разделить их на модули.
  • Быстро оценить сущность, её важность, зависимости и сложность.
  • Смоделировать будущие изменения архитектуры и бизнес-процессов.
  • Определить узкие места в архитектуре.
  • Визуализировать связи между модулями и событиями.

Примеры

  1. Создание системы с нуля: Разработка системы заказа серверов с нуля, включающая взаимодействие трёх команд и различных систем (1С, Битрикс, Python сервисы). Event Storming помог определить зоны ответственности каждой команды, зависимости между системами и общую схему взаимодействия.
  2. Модернизация существующей системы: Модернизация системы облачных серверов. Event Storming позволил создать карту продукта, спроектировать его техническое развитие и спланировать внесение глобальных изменений.
  3. Работа с недокументированной системой: Анализ legacy системы без документации. Event Storming помогает определить основные бизнес-процессы, связи, зависимости и акторов, а также спроектировать архитектуру домена.

Ограничения

Event Storming не заменяет:

  1. Бизнес-требования, ТЗ и другую документацию: Для сложных проектов необходима подробная документация.
  2. Анализ процессов: Event Storming помогает выявить события, но не заменяет анализ их важности, сложности и соответствия стратегии.
  3. Детальное проектирование архитектуры: Event Storming дает общее представление об архитектуре, но не заменяет детальное проектирование.

Event Storming — эффективный инструмент для быстрого моделирования бизнес-процессов и синхронизации работы бизнеса и разработки. Несмотря на свои ограничения, он является ценным дополнением к традиционным методам разработки.

Что будем искать? Например,программа