Встречается на 13% собеседований по Analytics

Что такое хореография

Хореография — это подход к координации взаимодействия между сервисами или процессами, при котором каждый участник самостоятельно реагирует на события без централизованного управления. В контексте бизнес-анализа и архитектуры она противопоставляется оркестрации, где есть центральный координатор, и применяется в event-driven архитектуре, BPMN 2.0 и сценариях с высокой автономностью компонентов.

Как это работает

В хореографии нет единого управляющего узла. Каждый сервис или процесс подписан на определённые события и публикует свои собственные. Логика взаимодействия распределена между участниками, а не сосредоточена в одном месте. Это похоже на танец: каждый танцор знает свою партию и реагирует на движения других, а не следует за дирижёром.

Ключевые элементы:

  • События — сообщения о фактах, которые произошли в системе (например, OrderPlaced).
  • Подписка — сервис заранее объявляет, на какие события он реагирует.
  • Публикация — сервис отправляет событие в общую шину или брокер сообщений.

Пример

Рассмотрим обработку заказа в интернет-магазине с микросервисной архитектурой:

  1. Сервис заказов публикует событие OrderPlaced.
  2. Сервис оплаты, подписанный на это событие, обрабатывает платёж и публикует PaymentProcessed.
  3. Сервис доставки, получив PaymentProcessed, запускает логистику.

Ни один сервис не знает о существовании других напрямую — они общаются только через события. Это позволяет добавлять новых участников без изменения существующих.

Плюсы и минусы

ПлюсыМинусы
Гибкость и масштабируемость: легко добавлять новые сервисыСложнее отслеживать поток операций: нет единой точки контроля
Отсутствие единой точки отказа: сбой одного сервиса не останавливает всю системуРиск «зависших» процессов при ошибках: если событие потеряно, цепочка прерывается
Высокая автономность компонентовСложнее тестировать и отлаживать

Когда использовать

Хореография подходит для:

  • Event-driven архитектуры, где события — основной способ коммуникации.
  • Процессов с высокой степенью автономности компонентов, когда сервисы должны работать независимо.
  • Сценариев, где требуется горизонтальное масштабирование и устойчивость к сбоям.

Не стоит применять её в простых линейных процессах, где оркестрация с центральным координатором даёт больше контроля и предсказуемости.

Коротко

  • Хореография — децентрализованная координация через события, без единого управляющего.
  • Каждый сервис сам решает, как реагировать на события, и публикует свои.
  • Плюсы: гибкость, масштабируемость, отсутствие единой точки отказа.
  • Минусы: сложность отслеживания потока и риск «зависших» процессов.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы