EventStorming (Рубрика Architecture)
Сегодня провел день в роли фасиллитатора сессии event storming, которая была посвящена домену a/b экспериментов. Это было занимательно и утомительно:) Этот подход придумал Alberto Brandolini для того, чтобы пошарить знания между экспертами доменной области и разработчиками максимально эффективно.
Сама техника представляет из себя воркшоп из следущего набора шагов (часто глубина проработки может быть не такой детальной)
- 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
На приложенных фотографиях
- Кусочек получившейся сегодня схемы - ребята отлично поработали, собрали timeline сложного процесса, выделили actors и проработали разделение на bounded contexts
- Примерная поэтапная схема проведения воркшопа
P.S. У автора подхода есть книга, которая уже много лет написана на 70%. Я ее даже как-то читал:) Есть куча выступлений с описанием подхода:
- с конференции GOTO в 2018
- с конференции DDD Europe в 2019
- с конференции USI Events в 2021
#DDD #Architecture #Processes #EventStorming