Saga Pattern

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

Проблема

Distributed transactions (2PC) не масштабируются в микросервисах. Каждый сервис — своя БД. Требуется atomicity бизнес-процесса без глобальной транзакции. Saga заменяет ACID на eventual consistency + компенсации.

Виды

Choreography: сервисы обмениваются событиями, каждый решает что делать. Decentralized, но сложнее debug. Orchestration: центральный orchestrator (state machine) командует сервисами. Явный flow, легче наблюдать. Camunda, Temporal, Netflix Conductor — orchestrators.

Компенсации

Каждый шаг имеет compensating action. Если шаг 3 упал — откатить шаги 1-2 через compensations. Compensations должны быть идемпотентными. Не всегда возможно (нельзя un-send email) — важен порядок шагов.

iGaming пример

Withdrawal: reserve funds в wallet → KYC verify → antifraud check → payment provider call → email confirm. Если KYC fail — release funds. Если payment fail — release funds + refund KYC-fee. Обязательный паттерн для платежных flows.