Event Storming — метод, позволяющий разработчикам и представителям бизнеса совместно исследовать предметную область за час вместо дней или недель. Он позволяет спроектировать систему в виде бизнес-процессов и разделить её на ограниченные контекстные модули, из которых впоследствии строится архитектура. Альберто Брандолини, создатель метода, описывает его как способ быстрого и эффективного исследования предметной области.
Участники сессии
Для эффективной сессии Event Storming необходимы представители различных отделов:
- Бизнес: PM, аналитики, техподдержка, отдел продаж и другие.
- Разработка: Frontend, backend разработчики, архитекторы.
- Фасилитатор: Руководит процессом и следит за его эффективностью. Важно, чтобы фасилитатор не высказывал собственного мнения и не вступал в полемику.
Основные компоненты
Event Storming использует четыре основных компонента:
- События: Все возможные действия в системе (например, «клиент зашёл на сайт», «клиент добавил товар в корзину»).
- Агрегаты: Сущности в ограниченном контексте (например, «корзина», «товарная витрина»).
- Акторы: Инициируют события или являются их заказчиками (например, пользователь, менеджер, разработчик, скрипт, внешний API-вызов).
- Действия: Описание происходящего в рамках определенного события (например, «покупка продукта»).
Этапы сессии
Сессия Event Storming проходит в несколько этапов:
- Шторм событий: Генерируются все возможные события. Важно направлять участников, фокусируясь на определённых направлениях (например, события в корзине, личном кабинете, процессе оплаты). Повторяющиеся события не удаляются, так как могут иметь разные контексты и акторов.
- Хронологическая последовательность: События выстраиваются в последовательность для понимания бизнес-процесса.
- Добавление компонентов: К событиям добавляются акторы, действия и агрегаты, определяя связи между ними. Понимание агрегатов может быть сложным, поэтому данный этап требует тщательного обсуждения.
- Анализ результатов: В итоге получаются агрегаты в изолированных контекстах и события, за которые эти агрегаты отвечают. На основе полученных данных строится архитектура системы.
Применение Event Storming
Главная польза Event Storming — синхронизация бизнеса и разработки. Он позволяет:
- Создать общий словарь терминов.
- Дать разработке понять желания бизнеса, а бизнесу — ограничения системы.
- Структурировать сущности системы и разделить их на модули.
- Быстро оценить сущность, её важность, зависимости и сложность.
- Смоделировать будущие изменения архитектуры и бизнес-процессов.
- Определить узкие места в архитектуре.
- Визуализировать связи между модулями и событиями.
Примеры
- Создание системы с нуля: Разработка системы заказа серверов с нуля, включающая взаимодействие трёх команд и различных систем (1С, Битрикс, Python сервисы). Event Storming помог определить зоны ответственности каждой команды, зависимости между системами и общую схему взаимодействия.
- Модернизация существующей системы: Модернизация системы облачных серверов. Event Storming позволил создать карту продукта, спроектировать его техническое развитие и спланировать внесение глобальных изменений.
- Работа с недокументированной системой: Анализ legacy системы без документации. Event Storming помогает определить основные бизнес-процессы, связи, зависимости и акторов, а также спроектировать архитектуру домена.
Ограничения
Event Storming не заменяет:
- Бизнес-требования, ТЗ и другую документацию: Для сложных проектов необходима подробная документация.
- Анализ процессов: Event Storming помогает выявить события, но не заменяет анализ их важности, сложности и соответствия стратегии.
- Детальное проектирование архитектуры: Event Storming дает общее представление об архитектуре, но не заменяет детальное проектирование.
Event Storming — эффективный инструмент для быстрого моделирования бизнес-процессов и синхронизации работы бизнеса и разработки. Несмотря на свои ограничения, он является ценным дополнением к традиционным методам разработки.