MusterKapitel II · Daten · Baustein 9 von 9

Saga

Eine Saga verbindet mehrere lokale Transaktionen zu einem fachlichen Ablauf. Fehlschläge werden durch ausdrücklich entworfene Kompensationen behandelt.

  1. Lokaler SchrittJeder Dienst schreibt für sich.
  2. FehlschlagErgebnis ist ein fachliches Signal.
  3. KompensationFachlich rückgängig machen.

Einordnung

Warum das wichtig ist

Über mehrere Dienste gibt es keine gemeinsame Transaktion. Scheitert ein Schritt, bleibt der vorherige bestehen, wenn du ihn nicht ausdrücklich rückgängig machst. Die einzelne atomare Grenze ist ein eigener Baustein.

Dieser Baustein erklärt verteilte fachliche Abläufe und Kompensation. Für eine einzelne atomare Grenze siehe Transaktionsgrenzen.

Auf einen Blick · Saga mit Kompensation

Eine Kette lokaler Teilschritte; schlägt einer fehl, machen Kompensationen die bereits erledigten Schritte in umgekehrter Reihenfolge rückgängig.
Shop-Beispiel · Szenario durchspielen

Bestellsaga bei Fehlschlag

Variante: Lager und Zahlung laufen als getrennte Dienste, weil unabhängiger Betrieb fachlich begründet wurde. Bestellung koordiniert die Reservierung und den extern angebundenen Zahlungsanbieter.

So liest du das Bild

  1. Lokaler Schritt Das Lager meldet „Reservierung R-77 gebunden“, die Zahlung „Zahlung belastet“, jeweils für sich.
  2. Fehlschlag Bei „Zahlung abgelehnt“ zeigt der Zahlungsdienst „keine Belastung“ und die Bestellung bekommt das Signal.
  3. Kompensation Mit Saga sendet die Bestellung „R-77 freigeben“ und das Lager zeigt „R-77 freigegeben“.
Ausgang
Absicherung
  • läuftBestellungAblauf abgeschlossen
  • läuftLagerdienstReservierung R-77 gebunden
  • läuftZahlungsdienstZahlung belastet
  • läuftVersanddienstLieferauftrag angelegt

keineOffene Rückabwicklung

Alle lokalen Schritte gelingen. Ohne Fehler braucht der Ablauf keine Kompensation.

Wähle den Ausgang für B-1042 und ob eine Saga mit Kompensationen läuft. Du siehst, was gebunden bleibt.

Nutzen & Grenzen

Hilft, wenn

  • Mehrere lokale Transaktionen behalten mit einer Saga gemeinsamen Prozessfortschritt und Folgeaktionen.
  • Eine fachlich mögliche Kompensation beschreibt, wie eine frühere Wirkung gezielt ausgeglichen wird.
  • Ein dauerhafter Prozessstatus ermöglicht Fortsetzung und Klärung über Neustarts hinweg.

Grenzen

  • Unumkehrbares, etwa eine versendete Ware, lässt sich nicht kompensieren und braucht einen fachlichen Klärungsprozess.
  • Auch Kompensationen können scheitern. Speichere den Zustand der Saga, damit sie wiederholt oder von Hand geklärt werden kann.
  • Nicht jeder Ablauf braucht eine Saga: Liegt er in einer atomaren Grenze, genügt eine Transaktion, siehe Transaktionsgrenzen.

In der Praxis

  1. Lege Schritte, Verantwortliche und dauerhafte Zwischenzustände fest. Jeder Teilnehmer commitet lokal; der Koordinator kann nach Neustart am gespeicherten Fortschritt ansetzen.
  2. Beschreibe Kompensationen als eigene fachliche Aktionen und prüfe, ob sie zulässig sind. Ein fehlgeschlagener Ausgleich braucht einen sichtbaren Klärungspfad.
  3. Beobachte Status, Wiederholungen und manuelle Eingriffe je Vorgang. Orchestrierung & Choreografie vertieft Steuerungsformen; Idempotenz behandelt sichere Wiederholung.
Ausführliche Erklärung lesen

Eine Saga koordiniert lokale Transaktionen über mehrere Teilnehmer hinweg. Ein Prozess hält den Fortschritt fest und bestimmt Folgeaktionen. Eine Kompensation ist eine neue fachliche Aktion, die eine frühere Wirkung ausgleicht; der ursprüngliche Vorgang bleibt Teil der Historie.

Orchestrierung speichert die Steuerung zentral, Choreografie verteilt Reaktionen über Ereignisse. Beide brauchen dauerhafte Status, Kennungen und Wiederaufnahme. Kompensation hängt von der fachlichen Konsistenzanforderung ab; für nicht ausgleichbare Wirkungen ist ein Klärungszustand nötig.

Orchestrierung beschreibt, wer den Fortgang steuert; Idempotenz ordnet Wiederholungen derselben lokalen Wirkung zu. Kompensationen bleiben fachliche Entscheidungen.

Der Pivot-Schritt (Point of no return) ist der Schritt, ab dem vorwärts abgeschlossen statt kompensiert wird; im Shop ist das typischerweise die Belastung beim Zahlungsanbieter. Schritte davor sind kompensierbar, Schritte danach wiederholbar, mit Idempotenz. Kompensation heißt auf Englisch Compensating Transaction.

Selbst prüfen

Teste dich in drei Stufen

  1. AblesenIm Bild nachsehen

    Was bleibt bei abgelehnter Zahlung ohne Kompensation gebunden?

    Lösung mit Begründung ansehen

    Die Reservierung R-77 im Lagerdienst.

  2. AnwendenAuf eine neue Lage übertragen

    Die Zahlung wird angenommen, aber vorher scheiterte die Reservierung. Was gilt für die Saga?

    Lösung mit Begründung ansehen

    Es gäbe keine Reservierung zum Zurücknehmen; eine Zahlung dürfte erst gar nicht beauftragt werden, bevor R-77 vorliegt. Im Bild folgt die Zahlung auf die Reservierungsbestätigung.

  3. BewertenEine Alternative abwägen

    Wäre eine globale Transaktion über Lager und Zahlung einfacher als eine Saga? Wie wägst du ab?

    Lösung mit Begründung ansehen

    Sie wäre einfacher zu denken, bindet aber unabhängig betriebene Dienste eng aneinander. Die Saga hält sie getrennt, verlangt dafür Kompensationen wie „R-77 freigeben“.

Weiter im Lernpfad

Damit hast du Daten & Zustand durchlaufen. Weiter geht es mit Kommunikation & APIs.