К основному содержимому
#DDD

EventStorming

#DDD #Architecture #Processes #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%. Я ее даже как-то читал:) Есть куча выступлений с описанием подхода:

#DDD #Architecture #Processes #EventStorming