Hva er Saga-mønster
Distribuerte transaksjoner gjennom hendelsessekvenser
Saga-mønster er et mønster for å håndtere distribuerte transaksjoner gjennom en sekvens av lokale transaksjoner med kompenserende handlinger ved feil.
Problemet
- Mikrotjenester har sine egne databaser
- Klassiske ACID-transaksjoner er umulige
- Konsistens mellom tjenester trengs
Saga-typer
- Koreografi — tjenester utveksler hendelser
- Orkestrering — sentral koordinator administrerer
Koreografi
- Tjenester abonnerer på hverandres hendelser
- Hver tjeneste publiserer sitt resultat
- Ingen enkelt feilpunkt
- Vanskeligere å spore tilstand
Orkestrering
- Saga-koordinator administrerer flyten
- Kaller tjenester sekvensielt
- Lettere å spore og feilsøke
- Risiko for enkelt feilpunkt
Kompenserende Transaksjoner
- Angre allerede fullførte trinn
- Må være idempotente
- Semantisk angring (ikke rollback)
- Eksempel: refunder i stedet for å avbryte