Saga pattern implementujeme půl roku. Začali jsme s choreografií — každá služba reaguje na eventy. Fungovalo to do 5 služeb. Pak přišel chaos.
Choreografie — decentralizovaná koordinace¶
Každá služba poslouchá eventy a reaguje. Žádný centrální koordinátor. Výhoda: loose coupling. Nevýhoda: distribuovaná logika — nikdo nevidí celý flow. Debugging je noční můra. „Kde se ta objednávka zasekla?”
Orchestrace — centrální koordinátor¶
Orchestrátor (saga coordinator) řídí celý flow. Posílá příkazy službám, čeká na odpovědi, rozhoduje o compensations. Výhoda: viditelnost celého flow, jednodušší debugging. Nevýhoda: single point of failure, tighter coupling.
Náš hybridní model¶
Jednoduché flows (2-3 kroky) → choreografie. Komplexní flows (4+ kroků, větvení, timeouty) → orchestrace přes Temporal.io. Temporal: workflow engine s durable execution, automatickými retries a plnou visibility.
Neexistuje „správný” přístup¶
Choreografie pro jednoduché, orchestrace pro komplexní. Většina systémů potřebuje obojí.