orchestration: conductor at musical orchestra choreography: dancers
Orchestration
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
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
highly available, only the starting service
event-driven architecture is typically choreographed
error handling
what if payment says: “oh, but they removed that credit card”
“where is my order?”
-> there is no state owner
either:
- make order placement state owner
- new customer facing service for state ownership
Hybrid
async or sync