Zurück zur Übersicht

Begriff

Saga Pattern

Software Architecture Microservices S3
2 Quellen 0 Lernpfade 1 Backlink enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

In einer einzigen Datenbank gibt es Transaktionen (ACID). "Alles oder nichts". In Microservices geht das nicht (verteilte DBs). Beispiel: Flug buchen + Hotel buchen.

  1. Flug gebucht (Service A).
  2. Hotel voll (Service B fehlschlägt). Jetzt hast du einen Flug ohne Hotel. Chaos! Du musst den Flug stornieren. Eine Saga ist eine Kette von lokalen Transaktionen. Wenn eine fehlschlägt, führt die Saga rückwärts Kompensations-Transaktionen aus ("Undo"), um den Schaden zu beheben.

Merksatz: Ein Muster für verteilte Transaktionen, bei dem ein langer Prozess in Schritte zerlegt wird, wobei jeder Schritt bei Fehler durch eine Gegenmaßnahme (Kompensation) rückgängig gemacht wird.


Quick-Check

  1. Warum kein Two-Phase-Commit (2PC)?
    2PC ("Alle halten an, bis alle fertig sind") ist zu langsam für Cloud-Systeme und blockiert Ressourcen (Locks). Sagas sind asynchron und blockieren nichts.
  2. Was, wenn das Stornieren fehlschlägt?
    Der Super-GAU. Dann muss ein Mensch eingreifen (Admin-Alert). Die Kompensation muss so gebaut sein, dass sie fast immer klappt (z. B. "Geld zurückbuchen").
  3. Ist das neu?
    Nein, das Paper ist von 1987 (für Datenbanken). Microservices haben es nur wiederbelebt.