Перейти к содержанию

Оркестрация и Хореография

Оркестрация и хореография — это паттерны взаимодействия между сервисами в распределённых системах (чаще всего — в микросервисной архитектуре). Они описывают как сервисы “общаются” и координируют действия, особенно в сложных бизнес-процессах.


Оркестрация vs Хореография

Оркестрация (Orchestration)

  • Есть центральный координатор (оркестратор), который управляет вызовами других сервисов.

  • Сервисы не знают друг о друге, только о оркестраторе.

  • Подходит для явного управления процессом (workflow).

Пример:

Сервис A вызывает B, потом C, потом D — всё по команде оркестратора.

Пример инструмента: Camunda, Temporal, AWS Step Functions


Хореография (Choreography)

  • Нет центра управления.

  • Каждый сервис реагирует на события, публикует свои и слушает чужие.

  • Подходит для слабосвязанных, событийных архитектур.

Пример:

Сервис A публикует событие “Заказ создан” →

Сервис B реагирует и создаёт счёт →

Сервис C реагирует и отгружает → и т.д.

Используется с: Kafka, RabbitMQ, EventBridge


Где применяются?

Архитектура Оркестрация Хореография
Монолит ✔️ (внутри функций)
Микросервисы ✔️ ✔️
Событийно-ориентированные системы ✔️

Итог

  • Оркестрация — централизованное управление.

  • Хореография — распределённое реагирование.

Это паттерны взаимодействия и часть архитектурных решений, особенно в микросервисах и EDA (event-driven architecture).