Глосарій

Saga Pattern

Saga — патерн управління розподіленими транзакціями без використання 2PC. Довга бізнес-транзакція розбивається на послідовність локальних транзакцій. Кожна локальна транзакція публікує подію або повідомлення. У разі збою — виконуються компенсуючі транзакції.

Два типи

Приклад: оформлення замовлення

CreateOrder → ReserveInventory → ProcessPayment → ShipOrder
  якщо ProcessPayment fails:
    → ReleaseInventory (компенсуюча)
    → CancelOrder (компенсуюча)

Складнощі

Компенсуючі транзакції не завжди можливі (відіслане повідомлення не відклично). Saga дає Eventual Consistency, а не ACID. Дебаг складніший за звичайну транзакцію.