Stackbook Logo
data-consistencyestablished · high operational burden

Distributed Transactions Patterns

Also known as: distributed-tx, 2pc, saga, outbox, compensation, eventual-consistency

Intent

Coordinate atomic operations across services without distributed locks: 2PC, Saga, Outbox, Eventual Consistency — trade-offs and implementation.

Problem

Microservices need atomicity across boundaries. 2PC blocks, Saga compensates, Outbox guarantees publish. Need to choose right pattern.

Forces

  • Atomicity: all-or-nothing across services
  • Availability: 2PC blocks on coordinator failure
  • Consistency: strong (2PC) vs eventual (Saga, Outbox)
  • Complexity: 2PC simple concept, hard ops; Saga complex logic

Solution

✓ When to Use

  • Microservices needing cross-service atomicity
  • Long-running business processes
  • Event-driven architectures

✗ When Not to Use

  • Simple CRUD (single service)
  • Strong consistency required everywhere (monolith)
  • Team not ready for eventual consistency

Pros

  • +Enables microservice autonomy
  • +Handles failures gracefully
  • +Scales better than 2PC
  • +Visible business processes

Cons

  • Eventual consistency: mental model shift
  • Compensation complexity: every action needs undo
  • Testing: all failure paths, compensation paths
  • Operational: monitoring, stuck saga recovery

Cost Profile

Infrastructure

Low (Saga, Outbox) to Medium (2PC, Kafka)

Operational

High (Saga monitoring, compensation, stuck recovery)

Cognitive

High (eventual consistency, compensation design)

Failure Modes

  • Saga stuck: compensation fails, manual intervention

  • Outbox relay down: events pile up, lag

  • 2PC coordinator crash: participants blocked indefinitely

  • Compensation fails: data inconsistency, manual fix

  • Eventual consistency violation: read stale data

Real-World Examples

Alternatives

  • 2pc
  • event-sourcing
  • cqrs
  • dual-write
  • saga-pattern

Related Patterns

  • saga-patterns
  • outbox-pattern
  • event-sourcing
  • cqrs
  • idempotency-key
  • compensating-transaction
  • distributed-lock

Competency Domains

data consistencydata statedistribution communicationreliability opseconomics evolution