Вопрос проверяет способность сравнивать архитектурные подходы и выбирать модель управления бизнес-процессами в микросервисах.
Оркестрация предполагает наличие центрального компонента, который управляет выполнением шагов процесса.
Хореография не имеет центра управления, сервисы реагируют на события самостоятельно.
Оркестрация упрощает понимание бизнес-логики, но увеличивает связность.
Хореография улучшает масштабируемость, но усложняет сопровождение.
Оркестрация и хореография решают одну и ту же задачу — координацию сервисов, но делают это принципиально разными способами.
Определение:
Оркестрация — это модель, при которой центральный сервис управляет выполнением бизнес-процесса.
Ключевые особенности:
Один сервис знает весь сценарий
Он вызывает остальные сервисы
Он принимает решения о переходах и компенсациях
Пример:
order = create_order()
reserve_payment(order)
reserve_stock(order)
Плюсы:
Прозрачный сценарий
Удобно тестировать
Проще реализовывать Saga
Минусы:
Центральная точка отказа
Повышенная связность
Определение:
Хореография — это модель, в которой сервисы координируют действия через события.
Особенности:
Нет центрального управляющего
Сервисы подписываются на события
Логика распределена
Пример идеи:
emit("OrderCreated")
Оркестрация — контроль и простота понимания.
Хореография — автономность и масштабируемость.