← Back to microservices patterns maptransactions
⚗️
Microservices Pattern
Saga Pattern - Choreography
Services publish and react to events without a central coordinator.
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 orderTradeoffs
Pros
Decentralized, resilient, low coupling
Cons
Harder to visualize and debug
Examples: Kafka choreography, EventBridge rules