Saga
A sequence of local transactions across services where each step has a compensating action that semantically undoes it if a later step fails.
Distributed ACID transactions across services are, in practice, off the table — two-phase commit holds locks across the network and turns every participant into a single point of failure. A saga replaces atomicity with compensation: book the flight, charge the card, reserve the seat; if the seat reservation fails, refund the card and cancel the flight.
Compensation is not rollback. A refund is a new transaction that leaves a visible trace, and some steps cannot be undone at all — an email has been sent, a physical item has shipped. Designing a saga is largely the work of ordering steps so that the irreversible ones come last.
Two shapes: choreography, where each service listens for the previous step's event, which is loosely coupled but has no single place where the flow is visible; and orchestration, where a coordinator drives the steps, which is easier to observe and debug at the cost of a component that knows about everything.