Vad är Saga-mönster
Distribuerade transaktioner genom händelsesekvenser
Saga-mönster är ett mönster för att hantera distribuerade transaktioner genom en sekvens av lokala transaktioner med kompenserande åtgärder vid fel.
Problemet
- Mikrotjänster har sina egna databaser
- Klassiska ACID-transaktioner är omöjliga
- Konsistens mellan tjänster behövs
Saga-typer
- Koreografi — tjänster utbyter händelser
- Orkestrering — central koordinator hanterar
Koreografi
- Tjänster prenumererar på varandras händelser
- Varje tjänst publicerar sitt resultat
- Ingen enda felpunkt
- Svårare att spåra tillstånd
Orkestrering
- Saga-koordinator hanterar flödet
- Anropar tjänster sekventiellt
- Lättare att spåra och felsöka
- Risk för enda felpunkt
Kompenserande Transaktioner
- Ångra redan slutförda steg
- Måste vara idempotenta
- Semantisk ångring (inte rollback)
- Exempel: återbetala istället för avbryta