Saga
Problem
Ein Auftrag:
1. Bestand reservieren,
2. Karte belasten,
3. Lieferung buchen.
Schritt 3 schlägt fehl, nachdem die Schritte 1 und 2 erfolgreich waren.
Sie können nicht einfach drei unabhängige Systeme wie eine Datenbanktransaktion zurückrollen.
Lösung — Saga
Modellieren Sie die Operation als Schritte mit kompensierenden Aktionen.
Jeder abgeschlossene Schritt erhält eine ausgleichende Aktion: * Bestand reservieren → Reservierung aufheben. * Karte belasten → Betrag erstatten.
Scheitert die Lieferbuchung, machen diese Aktionen die geschäftlichen Auswirkungen der vorherigen Schritte rückgängig.
Bestand reservieren ✓
Karte belasten ✓
Lieferung buchen ✗
↓
Betrag erstatten
Bestand freigeben
Azure Durable Functions zeichnet beispielsweise den Workflowfortschritt auf und führt die Schritte aus; Sie schreiben die Ausgleichsaktionen, die nach Fehlern aufgerufen werden.
Kerngedanke: Sagas koordinieren verteilte Geschäftsvorgänge durch Schritte und zugehörige Ausgleichsaktionen.