Decision guide
Choreography vs Orchestration
How should services coordinate a multi-step business process?
Side by side
| Criterion | Choreography | Orchestration |
|---|---|---|
| Coupling | Event contracts between services | Services coupled to coordinator's commands |
| Visibility | Needs tracing to reconstruct | Central state per process |
| Changing the flow | Touches multiple services | Change the orchestrator |
| Failure handling | Distributed compensations | Centralized compensations/timeouts |
| Risk | Hidden cyclic dependencies | Orchestrator becomes a god service |
| Tooling | Brokers + tracing | Temporal, Step Functions, Camunda |
When to choose each
Choreography
Services react to each other's events; no central coordinator.
Choose when
- Short, stable flows (2–3 steps)
- Highly decoupled teams
Avoid when
- Long flows with many branches and timeouts
Orchestration
A coordinator (service or workflow engine) sends commands and tracks state.
Choose when
- Complex flows with compensations and timeouts
- Need for visibility and auditing of each process
Avoid when
- Trivial notifications that don't need coordination
Verdict
Use choreography for simple, stable reactions; use orchestration (often a durable workflow engine) when a process has many steps, timeouts and compensations or when the business needs to see where each instance is.
Learn more
- Messaging, Events and Email Systems
- Event Sourcing & CQRS
- Queues & Background Processing in Depth
- Messaging & Queues
- System Design Problems