Что такое хореография
Хореография — это подход к координации взаимодействия между сервисами или процессами, при котором каждый участник самостоятельно реагирует на события без централизованного управления. В контексте бизнес-анализа и архитектуры она противопоставляется оркестрации, где есть центральный координатор, и применяется в event-driven архитектуре, BPMN 2.0 и сценариях с высокой автономностью компонентов.
Как это работает
В хореографии нет единого управляющего узла. Каждый сервис или процесс подписан на определённые события и публикует свои собственные. Логика взаимодействия распределена между участниками, а не сосредоточена в одном месте. Это похоже на танец: каждый танцор знает свою партию и реагирует на движения других, а не следует за дирижёром.
Ключевые элементы:
- События — сообщения о фактах, которые произошли в системе (например,
OrderPlaced). - Подписка — сервис заранее объявляет, на какие события он реагирует.
- Публикация — сервис отправляет событие в общую шину или брокер сообщений.
Пример
Рассмотрим обработку заказа в интернет-магазине с микросервисной архитектурой:
- Сервис заказов публикует событие
OrderPlaced. - Сервис оплаты, подписанный на это событие, обрабатывает платёж и публикует
PaymentProcessed. - Сервис доставки, получив
PaymentProcessed, запускает логистику.
Ни один сервис не знает о существовании других напрямую — они общаются только через события. Это позволяет добавлять новых участников без изменения существующих.
Плюсы и минусы
| Плюсы | Минусы |
|---|---|
| Гибкость и масштабируемость: легко добавлять новые сервисы | Сложнее отслеживать поток операций: нет единой точки контроля |
| Отсутствие единой точки отказа: сбой одного сервиса не останавливает всю систему | Риск «зависших» процессов при ошибках: если событие потеряно, цепочка прерывается |
| Высокая автономность компонентов | Сложнее тестировать и отлаживать |
Когда использовать
Хореография подходит для:
- Event-driven архитектуры, где события — основной способ коммуникации.
- Процессов с высокой степенью автономности компонентов, когда сервисы должны работать независимо.
- Сценариев, где требуется горизонтальное масштабирование и устойчивость к сбоям.
Не стоит применять её в простых линейных процессах, где оркестрация с центральным координатором даёт больше контроля и предсказуемости.
Коротко
- Хореография — децентрализованная координация через события, без единого управляющего.
- Каждый сервис сам решает, как реагировать на события, и публикует свои.
- Плюсы: гибкость, масштабируемость, отсутствие единой точки отказа.
- Минусы: сложность отслеживания потока и риск «зависших» процессов.
