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