Backend, APIs & Daten · Fortgeschritten

Zuverlässigkeit bei Aufrufen an externe Dienste

In einem Satz: Jeder ausgehende Aufruf wird irgendwann fehlschlagen — die einzige Frage ist, ob Sie geplant haben, was dann geschieht.

Vier Mechanismen

Zeitlimit. Bei jedem Aufruf, immer. Ein Aufruf ohne Zeitgrenze hält eine Ressource, bis das System erstickt.

Erneuter Versuch mit wachsender Verzögerung. Nur bei sicher wiederholbaren Aktionen und nur bei vorübergehenden Fehlern. Einen Validierungsfehler zu wiederholen ist Verschwendung.

Sicherung (Circuit Breaker). Nach einer Reihe von Fehlschlägen hört man für eine Weile auf zu versuchen. Das schützt Sie und den bereits kämpfenden Dienst.

Abgestufter Modus. Was das System zeigt, wenn der Dienst nicht verfügbar ist: zwischengespeicherte Daten, Teilfunktion oder eine klare Meldung.

Das Duplizierungsproblem

Scheitert ein Aufruf am Zeitlimit, ist unbekannt, ob die Aktion ausgeführt wurde. Senden Sie bei jeder Aktion mit Wirkung — einer Belastung, einem Versand, einer Erzeugung — einen eindeutigen Schlüssel, mit dem die Gegenseite eine Wiederholung erkennt. Ohne ihn kann ein erneuter Versuch doppelt belasten.

Was zu überwachen ist

Fehlerrate und Antwortzeit je externem Dienst getrennt, und den Zustand der Sicherung. Ein Anbieterausfall, der bei Ihnen als „das System ist langsam“ erscheint, verschwendet Stunden unnötiger Untersuchung.

Im Detail

Trennen Sie eine kritische Abhängigkeit von einer sekundären und stellen Sie sicher, dass eine sekundäre keine Hauptbahn zu Fall bringen kann. Ein Analytik- oder Anreicherungsdienst auf dem synchronen Pfad ist ein Ausfallpunkt ganz ohne geschäftliche Rechtfertigung.