Перейти к основному содержимому

Event Storming

Event Storming — техника коллективного моделирования бизнес-процессов, основана на событиях

Метод помогает за короткое время выявить ключевые процессы, связи и точки интеграции без сложных нотаций BPMN или UML.
Строится вокруг событий, которые отражают значимые изменения состояния системы. Например, «Заказ создан», «Платёж подтверждён», «Товар доставлен».

Цели:

  • Понять, что происходит в системе и почему, визуально зафиксировав все важные события и связи между ними
  • Чтобы разработчики, аналитики, эксперты и менеджеры под одними и теми же словами понимали одно и то же.
  • Увидеть все "узкие места", противоречия и пробелы бизнес-процесса.
  • Создать основу для проектирования архитектуры

Примеры применения

  • запуск новой системы;
  • проектирование микросервисной архитектуры;
  • анализ существующего (legacy) решения перед рефакторингом;
  • уточнение сложных или неявных процессов между подразделениями.

Основные принципы

  • Фокус на событиях, а не на действиях или ролях.
  • Совместная работа: участвуют бизнес, аналитики, архитекторы и разработчики.
  • Минимум формализма: главное — содержание, а не визуальная строгость.
  • Динамика: быстро фиксировать идеи, не вдаваясь в детали на раннем этапе.
  • Причинно-следственные связи: каждое событие должно иметь причину и следствие.

Типы Event Storming-сессий

Big Picture

Используется для получения общего представления о домене.
Позволяет увидеть ключевые процессы и зависимости между ними.

Пример: визуализация полной цепочки «Заказ → Оплата → Доставка → Возврат».

Process Level

Детализирует конкретный бизнес-процесс.
Помогает определить события, команды и участников внутри него.

Пример: разбор процесса «Возврат товара» — от запроса покупателя до перевода средств.

Design Level

Уточняет модель до уровня архитектуры и bounded contexts.
Используется при проектировании микросервисов и взаимодействий между ними.

В DDD большая система декомпозируется на ограниченные контексты (bounded contexts).
Bounded Context — четко определённая граница в DDD, внутри которой термины и правила имеют единый смысл, а взаимодействие с другими частями системы происходит через явные интерфейсы.

Пример: разбиение домена e-commerce на контексты — «Заказы», «Платежи», «Доставка», «Уведомления».

Ключевые "строительные блоки"

Используются разноцветные стикеры под каждый вид.

  • Domain Event (Событие предметной области): Главный элемент. Факт, который уже произошел в системе. Всегда используется прошедшее время.
    • Пример: Заказ размещён, Платёж подтверждён, Товар отправлен клиенту.
  • Command (Команда): Действие, которое инициирует выполнение операции и приводит к событию. Часто является реакцией на предыдущее событие.
    • Пример: Разместить заказ, Подтвердить платёж, Отправить товар.
  • Actor (Актор): Пользователь или внешняя система, которая вызывает команду.
    • Пример: Покупатель, Оператор кол-центра, Платёжный шлюз.
  • Aggregate (Агрегат): Ключевое понятие из DDD. Это "кластер" из связанных сущностей (например, Заказ с его позициями), который обрабатывает команды и порождает события. Агрегат — это граница согласованности данных.
  • Policy (Политика / Бизнес-правило): Автоматическая реакция на событие. Формулируется как "Когда [Событие X], тогда [Команда Y]".
    • Пример: Когда "Платёж подтверждён", тогда "Отправить товар".
  • Read Model (Модель чтения): Данные, которые видит пользователь, чтобы принять решение и выполнить команду.
    • Пример: Страница со списком товаров в корзине.

Пример как проходит Event Storming

  1. Определить границы процесса.
    Пример: «От момента оформления заказа до его доставки».

  2. Зафиксировать доменные события в прошедшем времени:
    «Заказ создан», «Платёж подтверждён», «Уведомление отправлено».

  3. Добавить команды, которые инициируют события:
    «Создать заказ», «Подтвердить платёж».

  4. Указать акторов.
    Кто выполняет действие — пользователь, система, внешний сервис.

  5. Добавить агрегаты и сущности.
    Они изменяют состояние при выполнении команд.

  6. Зафиксировать политики и правила. «После подтверждения платежа — отправить заказ».

  7. Сгруппировать события по смыслу.
    Формируются bounded contexts — логические границы между частями системы.

  8. Проверяются связи, исключения, альтернативные сценарии.

  9. Результат: карта событий, отражающая процессы и зависимости.

Пример схемы доски Event Storming

+-------------------------------------------------------------+
| Event Storming |
+-------------------------------------------------------------+

[Актор] [Команда] [Событие] [Сущность]
Покупатель ---> Размещает заказ ---> Заказ создан ---> Система заказов
│ │
▼ ▼
Подтверждает оплату ---> Платёж подтверждён ---> Платёжный сервис


Заказ отправлен ---> Уведомление доставлено ---> Сервис уведомлений

Группировка по контекстам:

  • Контекст заказов
  • платежей
  • уведомлений

Каждый контекст можно выделить в отдельный микросервис.

Подготовка к сессии

Пример участников

  • бизнес-заказчик / product owner;
  • системные аналитики;
  • архитекторы;
  • разработчики.

Инструменты:

Правила:

  1. Один модератор управляет темпом.
  2. Все участники вносят события без обсуждения деталей.
  3. После сбора проводится обсуждение, группировка и уточнение.

Артефакты и результаты

После сессии остаются:

  • Event Map — визуальная карта всех событий.
  • Bounded Contexts — определённые области ответственности.
  • Команды, акторы и политики — основа будущей архитектуры.
  • Понимание точек интеграции и последовательности действий.
  • Единое понимание предметной областиу всех участников.

Связь с DDD и микросервисами

Event Storming тесно связан с Domain-Driven Design (DDD).
DDD определяет подход к проектированию модели домена, а Event Storming помогает эту модель выявить.

Как работает:

  1. События → контексты.
    События группируются по смыслу и становятся границами bounded contexts.

  2. Контексты → доменные модели.
    В каждом контексте определяются свои сущности, агрегаты и команды.

  3. Доменные модели → микросервисы.
    Границы bounded contexts превращаются в границы сервисов.

Пример:

  • событие «Платёж подтверждён» — контекст «Платежи»;
  • событие «Заказ отправлен» — контекст «Логистика»;
  • между ними нет прямых зависимостей — значит, разные микросервисы.

Event Storming помогает избежать ошибок при разбиении монолита и определении интеграционных интерфейсов.

Плюсы и минусы

  • Быстрое формирование общего понимания предметной области.
  • Минимальные требования к подготовке.
  • Легко визуализировать и высокая вовлечённость участников.
  • Сочетается с DDD и микросервисным подходом.
  • Можно выявить скрытые зависимости и проблемные зоны.

  • Требует активного участия бизнеса и модерации.
  • При отсутствии дисциплины может превратиться в хаос.
  • Не даёт детальной модели сразу — требует доработки после сессии.
  • Сложно провести результативно без опыта

Материалы

  1. Event storming
  2. Моделирование микросервисов с помощью Event storming
  3. Event Storming: как построить модель вокруг событий
  4. Введение в Event Modeling
  5. Event Storming: что будет, если запереть 10 человек в одной комнате
  6. Шаблоны для проведения Event Storming
  7. Event Storming: как с помощью стикеров и онлайн-досок повышать эффективность бизнес-процессов
  8. Event Storming: как построить модель вокруг событий
  9. Ивент шторминг (Event Storming) при работе над игровыми проектами
  10. Как навести порядок в AI-продукте: опыт внедрения методологии Event Modeling
  11. Event Storming: метод анализа сложных процессов
  12. Event Storming — методика, которая экономит месяцы на анализе
  13. Event Storming на практических кейсах
  14. 10 аналогов Miro от российских и иностранных разработчиков
  15. Аналоги Miro: 9 интерактивных онлайн-досок для командной работы
  16. Топ-10 лучших аналогов Miro для работы и личных дел: обзор онлайн досок
  17. 10 лучших аналогов Miro в 2025 году
  18. Аналоги Miro в России: подборка 13 российских онлайн-досок для командной работы и обучения

Видео

  1. Что такое EVENT STORMING за 15 минут
  2. Сергей Баранов «Воркшоп Event Storming»
  3. Мастер-класс. Event Storming – моделируем систему без UML и регистрации. Евгений Пешков
  4. Highload Architect: Декомпозиции системы на микросервисы по бизнес-аспектам и Event Storming

Конференции

  1. Analystdays: Event storming. Способы применения
  2. ArchDays 2022: Как Event Storming, DDD и чистая архитектура помогают запустить стартап. Евгений Лукьянов
  3. ArchDays 2022: Модификация Event Storming для использования в команде. Егор Урванов
  4. TechLead Conf X 2020: Моделирование микросервисов с помощью Event Storming / Сергей Баранов (ScrumTrek)
  5. DUMP 2023 и UWDC 2023: Event Storming — удачное пополнение в арсенале методов фасилитации общения о процессе
  6. Flow 2023: Event Storming: методика ускорения аналитических работ в ИТ-проекте - Денис Бесков
  7. Systems Design Online 2025: Проектируем сервисы с умом DDD + Event Storming - Кирилл Ветчинкин
  8. Nextconf: Как DDD и Event Storming помогает декомпозиции на сервисы -Кирилл Ветчинкин (CEO microarch.ru)
  9. True Tech Day 2.0: Event Storming — правильные микросервисы сразу - Михаил Федяев
  10. Event Storming - Alberto Brandolini - DDD Europe 2019 (en)

Книги

  1. Зелёная книга (для начала) : Предметно-ориентированное проектирование. Самое основное - Вон Вернон
  2. Красная книга (для погружения): Реализация методов предметно ориентированного проектирования - Вон Вернон
  3. Синяя книга (для полного просветления): Предметно-ориентированное проектирование (DDD) - Эрик Эванс
  4. Предметно-ориентированное проектирование: паттерны, принципы и методы - Скотт Миллетт, Ник Тью