EventStorming
Это крутая техника проведения воркшопов для коллаборативного изучения сложного бизнес домена ... Этот подход придумал и дал ему определение Alberto Brandolini. Но что это значит на пальцах? Суть в том, что иногда домен настолько сложен, что никто точно не понимает как это работает. В этом случае можно собрать всех включая экспертов доменной области и разработчиокв и поговорить ... а Event Storming позволяет структурировать этот разговор так, чтобы ценное время специалистов не было потрачено зря.
Если кратко сутруктурировать технику Event Storming, то получим следующий набор шагов в рамках воркшопа
- Unstructured exploration — на этом шаге в режиме брейншторма все участники группы самостоятельно накидывают на доску domain events
- Timelines — сгенерированные на предыдущем шаге domain events выстраиваются в хронологическом порядке, начиная с happy path
- Commands — на этом шаге добавляются commands, которые описывают что именно триггерит событие или поток событий. У части команд есть actor, который и запускает выполнение команды
- Policies — на этом шаге идет разбор команд, которые не имеют actor. У таких команд есть policy, когда запускается такая команда, обычно она завязана на наступление какого-то другого domain event
- External systems — на этом шаге модель расширяется внешними системами, которые не являются частью домена, что разбирается, но которые участвуют в процессе, например, исполняют command или получают нотификации о domain events
- Aggregates — когда все команды и события на месте, участники могут начать задумываться об оптимизации и выделении aggregates, которые получают команды и генерируют события
- Bounded contexts — на последнем шаге время посмотреть на всю картину. Группы тесно связанных aggregates являются естественными кандидатами на определение границ для bounded contexts
У Alberto есть книга, которая уже много лет написана на 70%. Я ее даже как-то читал:) Есть куча выступлений с описанием подхода:
- с конференции GOTO в 2018
- с конференции DDD Europe в 2019
- с конференции USI Events в 2021
#DDD #Architecture #Processes #EventStorming