Хореография + Domain-Driven Design: как они сочетаются

Хореография + Domain-Driven Design: как они сочетаются

Представьте, что ваша система — это оркестр, где каждый музыкант знает свою партию, но никто не машет палочкой. Вместо хаоса — гармония бизнес-процессов. В этом посте разберем, как Domain-Driven Design (DDD) и хореография в распределенных системах создают именно такую синергию: от моделирования событий до масштабируемой архитектуры.

DDD — подход, который позволяет разрабатывать сложные системы на основе моделирования бизнес-процессов и правил.

Хореография — это технический подход к реализации распределенных систем, когда части системы или сервисы взаимодействуют друг с другом через обмен событиями.

Сегодня я хочу рассказать, как хореография идеально подходит в качестве реализации DDD.

Ограниченные контексты DDD и слабая связность

Одним из ключевых элементов DDD является понятие Bounded Context (Ограниченный контекст). Вся система разделяется на самостоятельные ограниченные области — контексты. Которые представляют собой отражение бизнес-процесса или группы бизнес-процессов, решающих определенную задачу. Основные преимущества ограниченных контекстов:

  • Контексты изолированы друг от друга (Low coupling / Слабая связанность).
  • Контексты развиваются независимо друг от друга.
  • Вся система строится как набор автономных доменных модулей / контекстов.

Domain Events как основа хореографии

Основа для взаимодействия контекстов — Domain Events. События о значимых для бизнеса изменениях в одном контексте обрабатываются в других заинтересованных контекстах. Например, событие «Заказ оплачен» из контекста, отвечающего за обработку платежей, будет обработано другими контекстами доставки / логистики или обработки заказов.

События становятся естественной основой для хореографии — нет единого оркестратора, никто не координирует действия. Все контексты лишь реагируют на интересующие их события. К тому же DDD редко требует синхронной согласованности, и можно использовать подход конечной согласованности (Eventually Consistency), что идеально сочетается с хореографией.

Моделирование через Event Storming

Очень часто для моделирования бизнес-процессов используется практика event storming. В процессе сессий команды описывают, выделяют и моделируют:

  • ограниченные контексты, которые реагируют на события;
  • агрегаты, которые генерируют события доменной области;
  • ключевые события домена.

В результате получается карта взаимодействия, которую можно использовать как схему хореографии!

Преимущества для DDD

В результате использования хореографии вместе с подходом Domain Driven Design мы получаем следующие важные преимущества:

  • Чёткие границы контекстов и декомпозиция системы.
  • Слабая связность между контекстами — общение происходит в основном через события.
  • События отражают реальные бизнес-процессы.
  • Масштабирование системы вследствие того, что все взаимодействия асинхронные.
  • Архитектура легко эволюционирует вместе с доменом.
  • При использовании подхода event storming мы сразу документируем взаимодействие между контекстами. При изменении бизнес-процессов мы будем вносить изменения в наши схемы взаимодействия, а значит поддержка документации будет естественным процессом.

Вывод: почему DDD и хореография — идеальный дуэт?

Domain Driven Design и хореография — две концепции, которые идеально дополняют друг друга.

Хореография становится естественным способом реализации подхода Domain Events, который лежит в основе реализации взаимодействия между ограниченными контекстами.

DDD представляет язык и принципы для моделирования бизнес-процессов. А хореография предоставляет инфраструктуру для воплощения этого языка и модели в жизнь.

Подпишись на мой канал в telegram

Начать дискуссию