orchestration: conductor at musical orchestra choreography: dancers


Orchestration ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.png single point of failure services depend on orchestrator lots of communication

order placement needs to be highly available

  • orchestrator needs to be highly available
  • order placements needs to be highly available

./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.1.png ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.2.png smaller orchestrator (vs Enterprise Service Bus) eg. Order Placement Orchestrator, Order Cancellation Orchestrator

logic shifts to the orchestrator

error handling becomes a design decision

  • in the orchestrator?
  • in the service?

-> no new lines, so not architecture, but design


Choreography ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.3.png

highly available, only the starting service ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.4.png

event-driven architecture is typically choreographed

error handling ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.5.png what if payment says: “oh, but they removed that credit card”

“where is my order?” -> there is no state owner ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.6.png either:

  • make order placement state owner
  • new customer facing service for state ownership

Hybrid ./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.7.png async or sync


./resources/architecture-the-hard-parts-workflow-choreography-.resources/unknown_filename.8.png