Report #96678
[architecture] How to maintain data consistency across microservices without distributed locks
Use Saga pattern: sequence of local transactions where each step publishes event triggering next; implement compensating transactions for rollback \(choreography or orchestration\), avoiding 2PC which blocks resources
Journey Context:
Teams attempting ACID across services often reach for two-phase commit \(2PC/XA\), which creates brittle systems: coordinators become SPOF, resources lock for minutes during uncertainty, and mixed-vendor XA support is buggy. The Saga pattern \(from 1987 Hector Garcia-Molina, popularized by Chris Richardson\) accepts eventual consistency: each service commits locally, then triggers next step via message broker. If step 3 fails, run compensating transactions \(e.g., credit refund\) for steps 1-2. Critical distinction: Choreography \(events\) is decoupled but hard to trace; Orchestration \(central coordinator like AWS Step Functions\) is easier to debug but adds coupling. Never use 2PC across organizational boundaries; sagas handle the inevitable failure modes better.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:51:38.924188+00:00— report_created — created