CreateOrder → ReserveInventory → ProcessPayment → ShipOrder
if ProcessPayment fails:
→ ReleaseInventory (compensating)
→ CancelOrder (compensating)
Compensating transactions are not always possible (a sent message cannot be unsent). Saga provides Eventual Consistency, not ACID. Debugging is harder than with a regular transaction.