Saga

26.05.2026
5 мин

Что такое паттерн Saga

Saga — паттерн управления распределёнными транзакциями в микросервисной архитектуре. Когда бизнес-операция затрагивает несколько независимых сервисов с собственными базами данных, классическая двухфазная транзакция неприменима. Saga разбивает операцию на последовательность локальных транзакций, каждая из которых имеет компенсирующую транзакцию для отката в случае сбоя.

Как работает

Два варианта реализации. Choreography («хореография»): каждый сервис публикует событие после завершения своей транзакции, следующий сервис реагирует на событие и запускает свою транзакцию. Нет центрального координатора — сервисы взаимодействуют через события. Orchestration («оркестрация»): центральный оркестратор (Saga Orchestrator) управляет последовательностью шагов и при сбое запускает компенсирующие транзакции в обратном порядке.

Пример: операция «оформить заказ» включает шаги «зарезервировать товар», «списать оплату», «создать доставку». При сбое на шаге «создать доставку» Saga компенсирует: «вернуть оплату», «снять резервирование».

Зачем нужен бизнесу

Saga решает проблему согласованности данных в микросервисах без блокирующих распределённых транзакций. Это критично для e-commerce, финансовых операций, логистики — везде, где одна бизнес-операция затрагивает несколько независимых систем. Без Saga разработчики либо идут на компромисс с согласованностью данных, либо создают жёсткие связи между сервисами, уничтожая преимущества микросервисов.

Чем отличается от транзакционности

Двухфазная фиксация (Two-Phase Commit, 2PC) обеспечивает строгую согласованность через блокировку ресурсов на время транзакции. При длительных операциях это создаёт узкие места и проблемы доступности. Saga обеспечивает конечную согласованность (eventual consistency) без блокировок — за счёт компенсирующих транзакций вместо отката.
Готовы обсудить задачи вашей интеграции
Все поля обязательны для заполнения