Saga-Pattern
Das Saga-Pattern koordiniert verteilte Transaktionen über mehrere Services hinweg, indem lokale Transaktionen mit Kompensationen einen konsistenten Gesamtprozess sichern.
Klassifikation
- KomplexitätHoch
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Unvollständige Kompensationen erzeugen Inkonsistenzen
- Doppelte Ausführung bei Retries
- Verteilte Deadlocks durch fehlerhafte Choreografie
- Idempotente Handler verwenden
- Saga-Status persistent halten
- End-to-end Observability aufbauen
I/O & Ressourcen
- Geschäftsprozess-Schritte
- Kompensationslogik
- Service-Schnittstellen
- Konsistenter Gesamtzustand
- Kompensationsereignisse
- Auditierbare Ablaufkette
Beschreibung
Das Saga-Pattern ist ein Architekturkonzept für verteilte Systeme, in dem ein Geschäftsprozess als Sequenz lokaler Transaktionen modelliert wird. Jede lokale Transaktion commitet eigenständig und löst bei Fehlern kompensierende Aktionen aus, um den Gesamtzustand zu korrigieren. Damit wird eventual consistency erreicht, ohne ein zentrales, blockierendes Two-Phase-Commit.
✔Vorteile
- Kein globaler Lock oder 2PC nötig
- Skalierbar über Service-Grenzen
- Fehlerbehandlung über Kompensation möglich
✖Limitationen
- Komplexe Fehler- und Kompensationslogik
- Nur eventual consistency
- Erhöhte Anforderungen an Observability
Trade-offs
Metriken
- Kompensationsrate
Anteil der Sagas, die kompensiert werden müssen.
- Durchlaufzeit
Zeit bis zum Abschluss einer Saga.
- Fehlerquote pro Schritt
Anteil fehlgeschlagener lokaler Transaktionen pro Schritt.
Beispiele & Implementierungen
E‑Commerce Checkout
Zahlung, Lager und Versand werden als Saga‑Schritte behandelt, mit kompensierenden Aktionen bei Abbruch.
Buchungsplattform
Flug, Hotel und Mietwagen sind lokale Transaktionen, die bei Konflikten rückgängig gemacht werden.
Kontowechsel
Nutzerkonto, Abos und Berechtigungen werden schrittweise migriert und bei Fehlern kompensiert.
Implementierungsschritte
Prozess in lokale Transaktionen zerlegen
Kompensationspfade definieren
Orchestrierung oder Choreografie wählen
⚠️ Technische Schulden & Engpässe
Tech Debt
- Uneinheitliche Kompensationslogik
- Manuelle Eingriffe in Saga-Fehler
- Fehlende Wiederanlaufstrategien
Bekannte Engpässe
Beispiele für Missbrauch
- Saga für streng konsistente Finanzbuchungen
- Kompensation ohne Idempotenz
- Choreografie ohne klaren Eventvertrag
Typische Fallen
- Vergessene Nebenwirkungen in Kompensation
- Fehlende Zeitouts und Retries
- Zu geringe Sichtbarkeit des Saga-Status
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Strikte Compliance-Anforderungen
- • Service-Grenzen sind festgelegt
- • Limitierte Transaktionsfenster