Fallback
Ersatzantwort, wenn ein Aufruf scheitert
Die Idee und ihr Nutzen
Das Kundenportal einer Versicherung zeigt zu jeder Schadenakte zusätzlich Werkstattempfehlungen, die es bei einem Partnerdienst abfragt, dem Programm eines Partnerunternehmens. Antwortet der Partnerdienst nicht rechtzeitig, soll der Kunde trotzdem seine Schadenakte sehen, und im Bereich für Empfehlungen steht ein Hinweis, dass die Empfehlungen gerade fehlen. Eine solche vorher festgelegte Ersatzreaktion auf einen gescheiterten Aufruf heißt Fallback, auf Deutsch Rückfallebene. Ein Fallback muss erkennen lassen, was fehlt oder veraltet ist: Eine leere Empfehlungsliste ohne Hinweis würde den Kunden glauben lassen, es gebe keine Werkstatt in seiner Nähe.
Wie funktioniert es?
Eine Kundin öffnet im Kundenportal die Akte zu ihrem Wasserschaden. Das Kundenportal lädt Status und Dokumente der Schadenakte aus der eigenen Datenbank der Versicherung. Zusätzlich fragt das Kundenportal beim Partnerdienst nach Werkstätten in der Nähe der Kundin und wartet darauf höchstens zwei Sekunden. Der Partnerdienst antwortet sonst meist in weniger als einer halben Sekunde; die zwei Sekunden lassen ihm Spielraum, ohne dass die Kundin lange auf die Seite wartet. Der Partnerdienst antwortet innerhalb von zwei Sekunden nicht, und das Kundenportal bricht die Anfrage ab. Nun greift die Ersatzreaktion, die das Team des Kundenportals für genau diesen Aufruf festgelegt hat: Die Kundin sieht ihre vollständige Schadenakte mit Status und Dokumenten, und im Empfehlungsbereich steht „Werkstattempfehlungen sind gerade nicht verfügbar. Bitte versuchen Sie es später erneut.“ Das Kundenportal zeigt keine Werkstatt als passend an, die nicht aktuell geprüft wurde.
Anders ist es beim Tarifrechner, der Interessenten einen verbindlichen Beitrag für eine neue Versicherung nennt. Ein Interessent fragt beim Tarifrechner nach dem Beitrag, und die Berechnung im Tarifrechner fällt aus. Ein alter oder geschätzter Betrag wäre hier keine zulässige Ersatzantwort, denn der Interessent könnte den Vertrag zu einem falschen Preis abschließen. Der Tarifrechner antwortet deshalb mit einer klaren Fehlermeldung, dass der Beitrag gerade nicht berechnet werden kann. Ein Angebot per E-Mail zu einem späteren Zeitpunkt kommt nur infrage, wenn der Interessent das möchte und seine Anfrage verlässlich gespeichert wurde.
Für jeden Aufruf, der scheitern kann, legt das Team des Kundenportals im Voraus fest, was stattdessen geschieht, und stimmt diese Ersatzreaktion mit der Fachabteilung ab. Übliche Ersatzreaktionen sind:
- Zwischengespeicherter Wert: Das Kundenportal zeigt das letzte erfolgreiche Ergebnis mit einem Hinweis auf sein Alter. Ein Beispiel ist die Werkstattliste von gestern.
- Unbedenklicher Standardwert: Das Kundenportal zeigt eine Vorgabe, die niemanden in die Irre führt, und macht das kenntlich. Die Vorgabe kann auch lauten, gar keine Empfehlung anzuzeigen. Ein Preis oder eine Deckungszusage eignet sich nicht als Standardwert.
- Andere Quelle: Das Kundenportal fragt einen zweiten Anbieter oder nutzt eine eigene Berechnung, die mit weniger Angaben auskommt. Ein Beispiel ist eine Liste der Partnerwerkstätten mit der Postleitzahl der Kundin aus der eigenen Datenbank der Versicherung.
- Aufschieben: Der Auftrag wird gespeichert und später erledigt, und der Nutzer erfährt „wird bearbeitet“. Diese Meldung ist nur richtig, wenn der Auftrag verlässlich gespeichert ist.
- Deutlicher Hinweis: Der betroffene Teil der Seite zeigt „gerade nicht verfügbar“, der Rest der Seite funktioniert. Diese Ersatzreaktion hat das Team des Kundenportals für die Werkstattempfehlungen gewählt.
Der Fallback behebt die Störung beim Partnerdienst nicht. Der Fallback erkennt die Störung auch nicht selbst: Dass ein Aufruf gescheitert ist, erkennt das Kundenportal an einer abgelaufenen Zeitgrenze oder an einer Fehlermeldung, und erst dann greift die Ersatzreaktion. Antwortet der Partnerdienst mit einem Fehler statt gar nicht, greift dieselbe Ersatzreaktion wie nach zwei Sekunden ohne Antwort. Einen solchen Fehler meldet der Partnerdienst zum Beispiel, wenn er überlastet ist. Das Kundenportal zählt jeden Einsatz der Ersatzreaktion, damit die Betriebsüberwachung bemerkt, wenn der Partnerdienst über längere Zeit nicht antwortet.
Fallback: Empfehlungen dürfen fehlen, ein Preis nicht
Wann ist es sinnvoll und wann nicht?
Ein Fallback lohnt sich
- Ein Inhalt ergänzt eine Seite nur. Beispiele sind Empfehlungen, Bewertungen, Hinweise und Statistiken. Reicht das Kundenportal den Fehler an die Kundin weiter, sieht die Kundin eine Fehlerseite, obwohl ihre Schadendaten vollständig vorhanden sind und nur ein ergänzender Teil fehlt. Mit dem Fallback erscheint die Seite nach höchstens zwei Sekunden, statt dass die Kundin auf eine Antwort wartet, die nicht kommt.
- Eine Lücke soll als Lücke erkennbar sein. Zeigt das Kundenportal stillschweigend eine leere Empfehlungsliste, glaubt die Kundin, es gebe keine Partnerwerkstatt in ihrer Nähe. Der Hinweis „Empfehlungen gerade nicht verfügbar“ verhindert diesen Fehlschluss.
- Ein kurz veralteter Wert ist fachlich unbedenklich und kann als veraltet gekennzeichnet werden. Die Werkstattliste von gestern ist zum Beispiel noch brauchbar, wenn darüber „Stand: gestern“ steht. Ohne Fallback sieht die Kundin bei einer Störung gar keine Empfehlungen, obwohl die Liste von gestern ihr geholfen hätte.
- Eine Seite hängt von einem Dienst ab, den ein anderes Unternehmen oder Team betreibt. Die Versicherung kann eine Störung beim Partnerdienst nicht selbst beheben. Ohne Fallback fällt bei jeder Störung des Partnerdienstes auch die Seite mit der Schadenakte aus. Das Team des Kundenportals kann nur festlegen, wie lange das Kundenportal wartet und was die Kundin danach sieht.
Ein Fallback ist nicht das Richtige
- Auf Grundlage einer Angabe wird verbindlich entschieden. Beispiele sind Deckung, Zahlungen, Beiträge und Zugriffsrechte. Ein veralteter Beitrag als Ersatzantwort führt dann zu einer falschen Entscheidung, etwa zu einem Vertragsabschluss zu einem falschen Preis. Stattdessen antwortet das Programm mit einer klaren Fehlermeldung, so wie der Tarifrechner. Damit der Interessent trotzdem einen gültigen Beitrag erhält, betreibt die Versicherung nach dem Ansatz Redundancy and Failover ein zweites Exemplar desselben Tarifrechners mit denselben Tarifen auf einem anderen Server. Jede Anfrage geht zuerst an einen Lastverteiler, ein Programm, das Anfragen auf die laufenden Exemplare verteilt. Fällt das erste Exemplar aus, schickt der Lastverteiler die Anfrage an das zweite Exemplar, und das zweite Exemplar berechnet den Beitrag.
- Eine Ersatzantwort lässt sich nicht als Ersatz kennzeichnen, etwa weil die Antwort nicht an einen Menschen geht, sondern an ein aufrufendes Programm, das keinen Hinweistext liest. Das aufrufende Programm hält die Ersatzantwort dann für echt und rechnet mit ihr weiter. Stattdessen antwortet das angefragte Programm mit einer Fehlermeldung. Das aufrufende Programm erkennt so, dass die Anfrage gescheitert ist, und kann sie später wiederholen.
- Die ergänzenden Daten ändern sich selten. Eine Werkstattliste von gestern ist dann meist noch richtig, und das Kundenportal muss den Partnerdienst nicht bei jedem Öffnen einer Schadenakte fragen. Dann übernimmt das Kundenportal die Werkstattliste regelmäßig vorab vom Partnerdienst und speichert sie selbst. Die Seite hängt dann im Moment des Aufrufs nicht vom Partnerdienst ab, und eine Ersatzreaktion für diesen Aufruf entfällt.
- Der Partnerdienst ist wiederholt gestört. Mit dem Fallback allein wartet das Kundenportal dann bei jedem Öffnen einer Schadenakte zwei Sekunden, und so lange wartet auch die Kundin auf ihre Seite. Dann ergänzt das Team des Kundenportals den Fallback um einen Circuit Breaker, einen Schutzschalter, der Aufrufe an einen gestörten Dienst vorübergehend stoppt. Das Kundenportal zeigt die Ersatzreaktion dann sofort, statt jedes Mal zwei Sekunden zu warten.
Nachteile und typische Fehler
Für jeden Aufruf muss das Team des Kundenportals mit der Fachabteilung eine eigene Ersatzreaktion festlegen, und jede Ersatzreaktion ist zusätzlicher Code. Ein zwischengespeicherter Wert braucht Speicherplatz und eine Angabe zu seinem Alter. Ein zweiter Anbieter braucht eine weitere Vereinbarung mit diesem Anbieter und eine weitere Anbindung. Ruft die Ersatzreaktion ihrerseits einen anderen Dienst auf, etwa einen zweiten Anbieter, kann auch dieser Aufruf scheitern. Dann braucht es eine weitere Rückfallebene: Das Team des Kundenportals muss auch festlegen, was die Kundin sieht, wenn Partnerdienst und zweiter Anbieter beide scheitern. Weil Ersatzreaktionen selten ausgelöst werden, muss das Team des Kundenportals sie gezielt prüfen, zum Beispiel indem es den Partnerdienst im Test absichtlich ausfallen lässt.
Typische Fehler und woran man sie erkennt:
- Verdeckte Störung: Das Kundenportal zählt die Einsätze der Ersatzreaktion, aber in der Betriebsüberwachung ist für diese Zahl keine Warnung eingerichtet. Der Partnerdienst antwortet tagelang nicht, das Kundenportal zeigt jeder Kundin nur den Hinweis, und niemand wird benachrichtigt. Erkennbar ist das erst, wenn jemand bemerkt, dass das Kundenportal seit Tagen nur noch Ersatzantworten zeigt, ohne dass das Betriebsteam davon weiß.
- Ungetestete Ersatzreaktion: Die Ersatzreaktion wird selten ausgelöst und deshalb selten getestet. Im Ernstfall scheitert die Ersatzreaktion dann selbst. Ein Beispiel ist eine Ersatzreaktion mit zwischengespeichertem Wert, deren Zwischenspeicher nach einem Neustart des Kundenportals leer ist. Erkennbar ist das an Fehlerseiten genau dann, wenn der Partnerdienst ausfällt.
- Stille leere Liste: Das Team des Kundenportals hat als Ersatzreaktion eine leere Empfehlungsliste festgelegt statt des Hinweises. Die Kundin sieht dann keine Werkstatt und glaubt, es gebe in ihrer Nähe keine. Erkennbar ist das an Kunden, die nachfragen, warum es in ihrer Nähe keine Partnerwerkstatt gebe.
- Ersatzwert bei verbindlicher Angabe: Fällt die Berechnung aus, zeigt der Tarifrechner den zuletzt berechneten Beitrag für einen ähnlichen Vertrag. Der Interessent schließt den Vertrag zu diesem Beitrag ab. Erkennbar ist das an Verträgen, deren Beitrag nicht zur gültigen Tarifberechnung passt.
- Überlastete Ersatzquelle: Fällt der Partnerdienst aus, fragt das Kundenportal einen zweiten Anbieter. Dieser zweite Anbieter erhält sonst nur einzelne Anfragen, ab Beginn der Störung aber alle Anfragen, die sonst an den Partnerdienst gehen. Dafür ist der zweite Anbieter nicht ausgelegt, und er antwortet ebenfalls nicht mehr. Erkennbar ist das an einer Überlast beim zweiten Anbieter kurz nach Beginn der Störung.
Weiterführend
Verwandte Ansätze
- Graceful Degradation: beschreibt, wie ein ganzes System bei Teilausfällen mit eingeschränktem Umfang nutzbar bleibt. Ersatzreaktionen sind ein Baustein dafür.
- Caching: beschreibt Zwischenspeicher, aus denen zwischengespeicherte Werte als Ersatz stammen können.
Werkzeuge und Umsetzungen
- Resilience4j: Java-Bibliothek, in der sich jeder Schutzbaustein, etwa eine Zeitgrenze oder ein Schutzschalter, mit einer Ersatzfunktion verbinden lässt.
- Polly: Bibliothek für die Plattform .NET mit einer eigenen Strategie für Ersatzreaktionen.
- Failsafe: Java-Bibliothek, die Ersatzreaktionen als eigenen Baustein anbietet.
- Spring Cloud Circuit Breaker: verbindet in Spring-Anwendungen Schutzschalter und Ersatzreaktionen.
Quellen
- Jacob Gabrielson (AWS Builders' Library): Avoiding fallback in distributed systems: beschreibt, warum Ersatzreaktionen schwer zu testen sind, selbst scheitern und eine Störung verschlimmern können, und welche Alternativen es gibt.
- Polly: Fallback resilience strategy: Dokumentation einer Bibliothek für die Plattform .NET; zeigt, wie festgelegt wird, welche Fehler und Ergebnisse eine Ersatzantwort auslösen.