Ralf Kretzschmar-Auer

Fehlertoleranz – ein wichtiges Konzept für Cloud Native Applikationen

Eines der schwierigsten Dinge im Leben eines ITlers ist es, sich Ereignisse vorstellen zu müssen, von denen er zu wenig weiß. Das ist auch kein Wunder: „What you See is all there is“ ist eine Grundregel, die der Nobelpreisträger David Kahnemann schon vor Jahrzehnten herausfand: In den weitaus meisten Fällen können Menschen nur über solche Ereignisse halbwegs realistische Vorhersagen machen, die sie bereits kennen (oder sogar selbst erlebt haben).

Beim Schreiben einer Anwendung ist der Gut-Fall in der Regel schnell im Kasten: „Ich hab' ja eine Beschreibung in den Anforderungen“. Aber: Welche Fehler können eintreten? Wie muss ein System in solchen Fällen reagieren? Da wird’s schwierig.

Dazu ein Beispiel aus der Medienwelt: Zeitungsverlage nutzen heute Systeme, mit denen ihre Kunden Anzeigen selbstständig gestalten und aufgeben können. Hannes Kunde möchte seiner Frau einen Anzeigengruß zum Valentinstag schicken. Er setzt sich also vor seinen Rechner und gestaltet über das Internet die Anzeige und kurz vor Schluss meldet das System eine schlichte Fehlerseite mit einer ausgesprochen hilfreichen Message im Techie-Stil: „Fehler 207: Backend nicht erreichbar“. Und nun? Die Anzeige weg, die Arbeit umsonst? So geht's nun wirklich nicht!

Im Internetzeitalter müssen wir eigentlich immer damit rechnen, dass ein System "vor Kunde" läuft - also die Endkunden es mehr oder weniger direkt nutzen. Und wir müssen damit rechnen, dass eine Vielzahl an (Micro)Services an einer Funktion beteiligt sind. Für ein Unternehmen bedeutet das, dass ein System nicht einfach einen Fehler melden und die Arbeit einstellen darf. Was früher gegenüber den Mitarbeitern der eigenen Firma vielleicht noch gerade so akzeptabel war, ist im digitalen Zeitalter alles andere als OK: Ein Kunde sitzt daheim vor der Firmen-Internetseite, ist genervt, wissend, der Konkurrent ist nur einen Klick weit entfernt. Wir müssen also lernen, unsere Systeme so auszulegen, dass der Kunde bei Laune gehalten wird – was immer auch passiert (übrigens eine alte Regel aus dem Showgeschäft!).

Aber wie machen wir es besser? Das Zauberwort heißt Fehlertoleranz. Dahinter verbirgt sich die Verwendung von geeigneten Algorithmen, die dem Fehler „mit Stil“ (engl. gracefully) begegnen, trotz des Fehlers ein für den Nutzer sinnvolles Verhalten zu zeigen.

Wie sieht in unserem Beispiel Fehlertoleranz aus? Mag sein, die Auftragsannahme geht vielleicht gerade nicht komplett durch, weil das Backend nicht erreichbar ist. Aber die Anzeige und den damit verbundene Aufwand des Kunden retten, dem Kunden melden, dass es gerade ein Problem gibt, aber der Verlag sich kümmert und alles in seinem Sinn regeln wird, das geht schon. Das System kann damit umgehen, dass der Prozess unterbrochen ist. Es kennt einen Ausweg aus der Situation, kann später wieder aufsetzen.

Pionier bei der Fehlertoleranz ist Netflix. Die Entwickler haben sich ein System ausgedacht, mit dem ein Service auch dann noch funktioniert, wenn ein von ihm genutzter Service ausfällt. Statt langer Warteschleifen und Timeouts entscheidet das System nach einer vorgegebenen und sehr kurzen Zeit, einen Fallback zu benutzen. Ist dann der gewünschte Service wieder erreichbar, wird gegebenenfalls nachgesteuert, die provisorische Entscheidung korrigiert. Ganz gleich, was passiert: Der Kunde bekommt immer eine Antwort, und sei es eine temporäre.

Eine solche temporäre Antwort des Systems wird natürlich so ausgelegt, dass der Kunde sie als kundenfreundlich empfindet. Auch hier wieder ein Beispiel: Im Internet ist heute die Regel, dass erst die Leistung erbracht wird, wenn der Kunde gezahlt hat. In der digitalen Welt sollte ich als Anbieter vielleicht etwas großzügiger sein. Mein System gibt dem Kunden im Fehlerfall einen Vertrauensvorschuss - schließlich kann er ja nichts dafür, dass mein System gerade nicht rund läuft. Wenn es dadurch gelingt, ihn trotz aller Unzulänglichkeiten zu halten, dann hat es sich den Anbieter womöglich schon gelohnt.

Übrigens: Die technische Infrastruktur brauchen Sie nicht zu entwickeln. Die Bibliotheken von Netflix dafür sind im Internet frei verfügbar. CloudFoundry hat sie integriert und zu einer ihrer Grundbausteine gemacht.

Blog moderation guidelines and term of use