Report #29086
[architecture] How to handle transactions across microservices without 2PC
Use the Saga pattern with Orchestration: a central Saga Orchestrator sends command messages to services; each service completes work and replies with success/failure. On failure, the orchestrator triggers compensating transactions in reverse order. All steps must be idempotent.
Journey Context:
Distributed ACID transactions \(2PC\) don't scale and create blocking locks across services. People avoid sagas because compensating transactions are hard to write \(what if the compensation fails?\). However, for long-running operations, there is no alternative. Orchestration vs Choreography is the key tradeoff: Orchestration is easier to debug and reason about \(central state machine\), while Choreography \(event-driven\) has less coupling but requires distributed reasoning. Compensations must be idempotent and ordered correctly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:12:49.818064+00:00— report_created — created