Оркестрация полагается на центральный контроллер (оркестратор), который явно направляет каждый сервис — определяя что делать и когда. Типичный пример — workflow engine, вызывающий сервисы последовательно.
Хореография исключает центрального координатора. Вместо этого каждый сервис слушает события и реагирует независимо, следуя собственной логике без явных указаний что делать.
Преимущества оркестрации:
Недостатки оркестрации:
Преимущества хореографии:
Недостатки хореографии:
Используй оркестрацию, когда тебе нужна чёткая видимость процесса — например, в финансовых транзакциях или многоэтапных воркфлоу согласования, где важна аудитируемость.
Используй хореографию, когда ты делаешь ставку на масштабируемость и слабую связанность — например, в event-driven микросервисах, где сервисы публикуют и читают сообщения из брокера типа
Kafka или RabbitMQ
Выбор зависит от приоритетов твоей системы. Оркестрация жертвует гибкостью ради контроля и наблюдаемости. Хореография жертвует видимостью ради отказоустойчивости и масштабируемости. Многие реальные системы используют гибридный подход: оркестрацию внутри bounded context'ов и хореографию между ними.
В паттерне оркестрации центральный оркестратор явно направляет каждый сервис, определяя что делать и когда, тогда как в хореографии сервисы слушают события и реагируют независимо без указаний.
Новый — ещё не проверен сообществом
Вы