Choreography and orchestration, and the debugging difference

A multi-service flow can be a chain of events where each service reacts, or a coordinator that calls each in turn — and the difference shows up when something breaks.

choreography   no central place to look. the flow exists only
               as a diagram somebody drew once. adding a step
               is a deploy of one service.

orchestration  one place that knows the whole flow. it is a
               dependency and a bottleneck, and it is where
               you look at 3am.

small flows: choreography. flows with more than about four
steps or any compensation: orchestration.

The debugging asymmetry is the deciding factor more often than the coupling argument. A choreographed flow with six steps has no artefact describing it, so understanding what should have happened requires reading six services — and the correlation id is the only thing making that tractable at all. An orchestrator is a single point of failure and a single place to read, and the second is worth more than the first costs.