Оркестрация и Хореография¶
Оркестрация и хореография — это паттерны взаимодействия между сервисами в распределённых системах (чаще всего — в микросервисной архитектуре). Они описывают как сервисы “общаются” и координируют действия, особенно в сложных бизнес-процессах.
Оркестрация vs Хореография¶
Оркестрация (Orchestration)¶
-
Есть центральный координатор (оркестратор), который управляет вызовами других сервисов.
-
Сервисы не знают друг о друге, только о оркестраторе.
-
Подходит для явного управления процессом (workflow).
Пример:
Сервис A вызывает B, потом C, потом D — всё по команде оркестратора.
Пример инструмента: Camunda, Temporal, AWS Step Functions
Хореография (Choreography)¶
-
Нет центра управления.
-
Каждый сервис реагирует на события, публикует свои и слушает чужие.
-
Подходит для слабосвязанных, событийных архитектур.
Пример:
Сервис A публикует событие “Заказ создан” →
Сервис B реагирует и создаёт счёт →
Сервис C реагирует и отгружает → и т.д.
Используется с: Kafka, RabbitMQ, EventBridge
Где применяются?¶
| Архитектура | Оркестрация | Хореография |
|---|---|---|
| Монолит | ✔️ (внутри функций) | ❌ |
| Микросервисы | ✔️ | ✔️ |
| Событийно-ориентированные системы | ❌ | ✔️ |
Итог¶
-
Оркестрация — централизованное управление.
-
Хореография — распределённое реагирование.
Это паттерны взаимодействия и часть архитектурных решений, особенно в микросервисах и EDA (event-driven architecture).