📌 Event Storming
Event Storming — техника коллективного моделирования бизнес-процессов
Строится вокруг событий (domain events), которые отражают значимые изменения состояния системы (заказ создан», платёж подтверждён, товар доставлен)
Помогает
🔵выявить ключевые процессы, связи и точки интеграции
🔵создать основу для проектирования архитектуры
🔵увидеть все "узкие места", противоречия и пробелы бизнес-процесса
Примеры приименения
➡️ запуск новой системы
➡️ проектирование микросервисной архитектуры
➡️ анализ существующего (legacy) решения перед рефакторингом
➡️ уточнение сложных или неявных процессов между подразделениями
Основные принципы
⚪фокус на событиях, не на действиях или ролях
⚪участвуют бизнес, аналитики, архитекторы и разработчики
⚪главное — содержание, а не визуальная строгость
⚪быстро фиксировать идеи, не вдаваясь в детали на раннем этапе
⚪каждое событие должно иметь причину и следствие
Типы Event Storming-сессий
✳️ Big Picture
Используется для получения общего представления о домене
Позволяет увидеть ключевые процессы и зависимости между ними
➡️ пример: визуализация полной цепочки "Заказ → оплата → доставка → возврат"
✳️ Process Level
Детализирует конкретный бизнес-процесс
Помогает определить события, команды и участников внутри него
➡️ разбор процесса "возврат товара" — от запроса покупателя до перевода средств
✳️ Design Level
Уточняет модель до уровня архитектуры и bounded contexts
Используется при проектировании микросервисов и взаимодействий между ними
➡️ разбиение домена 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. Результат: карта событий, отражающая процессы и зависимости
📎 Материалы
1. Event storming
2. Моделирование микросервисов с помощью Event storming
3. Event Storming: как построить модель вокруг событий
4. Введение в Event Modeling
5. 10 аналогов Miro от российских и иностранных разработчиков
📚 Книги
Предметно-ориентированное проектирование: паттерны, принципы и методы - Скотт Миллетт, Ник Тью
#управление_проектами
➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу
Post #665
10.6K
- 🔥 14
- ❤ 11
- 👍 6
- 👏 2