← Back to microservices patterns map
⚗️
Microservices Pattern

Saga Pattern - Choreography

Services publish and react to events without a central coordinator.

transactions

Detailed Description

Choreography works well when each service can react independently to domain events.

The challenge is understanding the full workflow because no single service owns the whole state machine.

Visual Diagram

Choreography Saga
  OrderSvc   → emit: OrderCreated
  PaymentSvc → hear: OrderCreated
             → process payment
             → emit: PaymentProcessed
  StockSvc   → hear: PaymentProcessed
             → reserve stock
             → emit: StockReserved
  ShipSvc    → hear: StockReserved → ship

  On failure: compensating events
  PaymentSvc → emit: PaymentFailed
  OrderSvc   → hear: PaymentFailed → cancel order

Tradeoffs

Pros

Decentralized, resilient, low coupling

Cons

Harder to visualize and debug

Examples: Kafka choreography, EventBridge rules