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.