Sobes.tech
Назад к вопросам
Senior
5

Расскажи про паттерн SAGA, два типа — оркестрация и хореография, в чём отличие

Компании, где спрашивали
Сбер Право

Ответ от нейросети

sobes.tech AI

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

Есть два основных типа реализации SAGA:

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

  2. Хореография — децентрализованный подход. Каждый сервис самостоятельно реагирует на события, публикуемые другими сервисами, и запускает свои локальные транзакции. Нет центрального контроллера, координация происходит через обмен событиями.

Отличия:

  • Оркестрация даёт централизованный контроль и упрощает управление сложной логикой, но создаёт точку отказа и может усложнять масштабирование.
  • Хореография более гибкая и отказоустойчивая, но сложнее отследить полный поток и отладить ошибки, так как логика распределена по сервисам.

Пример оркестрации: есть сервис-оркестратор, который вызывает сервис оплаты, затем сервис доставки, и при ошибке вызывает компенсирующие операции.

Пример хореографии: сервис оплаты публикует событие "Оплата успешна", на которое подписывается сервис доставки и запускает свою часть работы.