TEKO Schweizerische FachschuleEAI IntegrationslaborTheorie · Resilienz

Theorie 04 · Unter Störung

Resilienz und
Fehlerbehandlung

Resiliente Integration verhindert nicht jeden Ausfall. Sie begrenzt seine Wirkung, bewahrt Arbeit und ermöglicht eine kontrollierte Wiederherstellung.

RetryBackoffDLQIdempotenzObservabilityca. 20 min
Lernziele
Du kannst Fehler klassifizieren, Retry und Backoff begründen, Idempotenz sowie DLQ erklären und einen beobachtbaren Wiederherstellungsweg für Handels- und Spitalintegrationen entwerfen.
Definition

Robust ist nicht dasselbe wie fehlerfrei

Resilienz ist die Fähigkeit eines Systems, unter Störungen einen kontrollierten Dienst zu erbringen und danach in einen bekannten Zustand zurückzukehren. Ein resilientes System erkennt Grenzen, verliert angenommene Arbeit nicht unbemerkt und lässt sich diagnostizieren. Es verspricht nicht, dass jedes Ziel immer erreichbar ist.

Fehler müssen zuerst klassifiziert werden. Ein vorübergehender technischer Fehler kann ein Timeout, DNS-Problem oder HTTP 503 sein. Ein späterer Versuch kann erfolgreich sein. Ein dauerhafter technischer Fehler ist beispielsweise eine falsche URL oder ungültige Konfiguration. Ein fachlicher Fehler liegt vor, wenn eine SKU unbekannt, ein Kunde gesperrt oder eine DICOM-Studie unvollständig ist. Wiederholen ohne Zustandsänderung behebt solche Fehler normalerweise nicht.

Hinzu kommen Überlastung, Teilfehler und ungewisse Resultate. Nach einem Timeout weiss der Client möglicherweise nicht, ob der Server vor dem Verbindungsabbruch geschrieben hat. In verteilten Systemen ist diese Unsicherheit normal. Die Architektur muss deshalb nicht nur Fehler anzeigen, sondern Doppelwirkungen und unkontrollierte Wiederholungen verhindern.

Zeichnung

Der kontrollierte Fehlerweg

Verarbeitung einer Nachricht mit Erfolg, Retry und Dead-Letter Queue Eine Queue liefert eine Nachricht an einen Worker. Bei Erfolg wird bestätigt. Ein vorübergehender technischer Fehler führt über Backoff zurück zur Queue. Ein dauerhafter oder fachlicher Fehler führt in eine Dead-Letter Queue, von wo er nach Analyse und Korrektur kontrolliert erneut abgespielt werden kann. Queue haltbare Nachricht Worker prüfen · ausführen Erfolg ACK + Nachweis DLQ prüfen · korrigieren gültig dauerhaft temporär: Backoff + neuer Versuch kontrolliertes Replay
Grundsatz: Temporäre Fehler werden begrenzt wiederholt. Nicht automatisch lösbare Fälle werden mit Ursache und Kontext isoliert – niemals still gelöscht.
Wiederholen

Retry, Backoff und Jitter

Ein Retry ist sinnvoll, wenn der Fehler wahrscheinlich vorübergehend ist und die Operation sicher wiederholt werden kann. Sofortige, unbegrenzte Wiederholungen verschlimmern einen Ausfall: Tausende Clients belasten einen bereits gestörten Dienst zusätzlich. Exponentieller Backoff vergrössert den Abstand zwischen Versuchen, zum Beispiel eine, zwei, vier und acht Sekunden. Jitter fügt eine kleine Zufallsabweichung hinzu, damit nicht alle Instanzen gleichzeitig erneut senden.

Jede Retry-Policy braucht eine Obergrenze, eine maximale Gesamtdauer und eine Liste geeigneter Fehler. Ein 503 oder Netzwerkabbruch kann wiederholt werden; ein 401 verlangt meist korrigierte Zugangsdaten; ein 422 verlangt veränderte Fachdaten. Nach Ausschöpfen der Versuche braucht es einen sichtbaren nächsten Zustand statt endloser Verarbeitung.

Ein Circuit Breaker stoppt Aufrufe an ein erkennbar gestörtes Ziel für eine begrenzte Zeit. Dadurch werden Ressourcen geschützt und schnelle, kontrollierte Fehler möglich. Er ersetzt weder Monitoring noch Retry, sondern verhindert aussichtslose Dauerlast.

Doppelwirkung

At-least-once und Idempotenz

Viele Nachrichtensysteme arbeiten mit At-least-once Delivery: Eine Nachricht wird mindestens einmal, möglicherweise mehrfach zugestellt. Wenn ein Worker die Fachaktion erfolgreich ausführt, aber vor der Bestätigung abstürzt, liefert die Queue dieselbe Nachricht erneut. Das schützt vor Verlust, erzeugt jedoch Duplikatrisiko.

Idempotenz verhindert den zweiten fachlichen Effekt. Im Handel kann eine eindeutige externe Bestellreferenz nur einen ERP-Auftrag erlauben. Im Spital kann die Kombination aus StudyInstanceUID, Ziel und Verarbeitungstyp einen Transfer eindeutig machen. Eine Event-ID kann zusätzlich die konkrete Nachricht deduplizieren. Die Prüfung muss atomar mit der Verarbeitung koordiniert werden; ein blosses „zuerst nachsehen, dann schreiben“ besitzt bei parallelen Workern ein Rennen.

„Exactly once“ ist oft nur innerhalb eines begrenzten technischen Systems garantiert. Über Queue, Datenbank und Fremd-API hinweg ist ein genau einmal wirkender fachlicher Effekt durch Idempotenz realistischer als ein globales Transportversprechen.

Isolieren

Dead-Letter Queue und Replay

Eine Dead-Letter Queue (DLQ) nimmt Nachrichten auf, die nach einer definierten Behandlung nicht verarbeitet werden konnten. Sie ist kein Papierkorb, sondern eine Quarantäne mit Originalnachricht, Fehlerklasse, Zeitstempel, Versuchszahl und Correlation-ID. Ohne Alarm, Besitzer und Bearbeitungsfrist wird sie zum versteckten Friedhof.

Beim Replay wird ein Fall nach Analyse erneut verarbeitet. Die ursprüngliche Nachricht sollte für die Nachvollziehbarkeit unverändert bleiben. Korrigiert werden beispielsweise Stammdaten, Konfiguration oder eine explizite neue Ersatznachricht. Vor dem Replay muss geklärt sein, ob bereits ein Teil der Fachwirkung eingetreten ist. Idempotenz bleibt deshalb auch beim manuellen Wiederanlauf wichtig.

Beobachten

Ohne Nachweis keine Resilienz

Logs beantworten einzelne Ereignisse, Metriken zeigen Mengen und Trends, Traces verbinden Stationen eines Ablaufs. Eine Correlation-ID begleitet Request, Event, Retry und Zielobjekt. Wichtige Metriken sind Queue-Tiefe, Alter der ältesten Nachricht, Fehlerrate, Retry-Zahl, DLQ-Zuwachs und Verarbeitungsdauer. Ein Alarm sollte eine Handlung auslösen, nicht bloss Geräusch erzeugen.

Im Spitalbeispiel dürfen Logs keine echten Patientennamen oder unnötigen DICOM-Tags enthalten. Im Handel gehören Passwörter, Tokens und Zahlungsdaten nicht ins Log. Beobachtbarkeit und Datenschutz müssen gemeinsam entworfen werden.

Metapher

Laborprobe mit Barcode und Quarantänefach

Was die Metapher erklärt

Eine Probe trägt einen eindeutigen Barcode, wird quittiert und kann zwischengelagert werden. Fehlt eine Angabe, kommt sie ins Nachbearbeitungsfach statt in den Abfall. Der Barcode verhindert, dass dieselbe Probe als neuer Fall gezählt wird. Eine Fallnummer verbindet Übergaben und Befunde.

Wo die Metapher endet

Digitale Nachrichten können perfekt kopiert und parallel verarbeitet werden. Eine technische Bestätigung kann verloren gehen, obwohl die Fachaktion gelang. Außerdem darf ein Unterrichtsmodell keine klinische Sicherheitsgarantie vortäuschen: Reale Spitalprozesse benötigen validierte Verfahren, Datenschutz und klare Eskalation.

Gegenbeispiel

Retry als Universalreparatur

Eine unbekannte SKU oder eine DICOM-Studie ohne Pflichtkennung wird jede Sekunde erneut verarbeitet. Gleichzeitig senden alle Worker ohne Backoff gegen das gestörte Ziel. Die Queue wächst, Logs werden unlesbar und ein manuell korrigierter Fall erzeugt wegen fehlender Idempotenz zwei Zielobjekte. Mehr Wiederholungen haben hier nicht mehr Resilienz, sondern einen grösseren Ausfall geschaffen.

Entscheiden

Praktische Regeln

  1. Klassifiziere Fehler vor der Wahl einer Reaktion: temporär, dauerhaft technisch, fachlich oder Überlastung.
  2. Begrenze Retries nach Anzahl und Dauer; verwende Backoff und Jitter.
  3. Mache jede wiederholbare Schreiboperation fachlich idempotent.
  4. Definiere DLQ-Besitzer, Alarm, Diagnoseinformationen, Frist und Replay-Verfahren.
  5. Bewahre Originalnachrichten und protokolliere Korrekturen nachvollziehbar.
  6. Überwache Queue-Tiefe, Nachrichtenalter, Fehler, Retries und DLQ.
  7. Teste Ausfall, Wiederanlauf und Doppelzustellung – nicht nur den Happy Path.
Kontrolle

Fragen zum Verständnis

  1. Welche Fehlerklassen benötigen unterschiedliche Reaktionen?
  2. Warum kann sofortiger unbegrenzter Retry einen Ausfall verstärken?
  3. Wie unterscheiden sich Event-ID, fachlicher Schlüssel und Correlation-ID?
  4. Warum ist eine DLQ ohne Monitoring kein resilientes Konzept?
  5. Wie verhinderst du bei doppelter Zustellung einen zweiten ERP-Auftrag oder Studientransfer?
  6. Welche Nachweise müssen nach einem kontrollierten Replay vorhanden sein?
Merksatz
Resilienz entsteht durch begrenzte Wiederholung, idempotente Wirkung, sichtbare Quarantäne und überprüfbare Wiederherstellung – nicht durch die Hoffnung, dass nichts ausfällt.