almessadi.
Zur Übersicht

Sanfte Abwertung ist ein besseres Ziel als perfekte Betriebszeit_

Resiliente Produkte bleiben nicht nur online. Sie liefern weiterhin etwas Nützliches, wenn ein Teil des Systems nicht verfügbar ist.

Veröffentlicht8. September 2024
Lesezeit6 min read

Wenn Systeme ausfallen, interessiert es die Benutzer nicht, welche Abhängigkeit ausgefallen ist. Sie möchten wissen, ob das Produkt ihnen noch dabei hilft, die Aufgabe zu beenden, für die sie es geöffnet haben.

Deshalb ist sanfte Abwertung wichtiger als Betriebszeit als abstrakte KPI. Ein System kann teilweise abgewertet sein und dennoch den Großteil des Benutzerwerts erhalten, wenn die Ausfallmodi gut gestaltet wurden.

Wie gute Abwertung aussieht

Anstelle einer leeren Seite oder eines globalen Fehlerdialogs kann ein resilienter Produkt:

  • zwischengespeicherte Katalogdaten bereitstellen
  • ein sekundäres Widget ausblenden
  • veraltete, aber dennoch nützliche Inhalte anzeigen
  • Lesewege verfügbar halten, während Schreibwege pausiert sind

Das ist keine Verleugnung der Realität. Es bedeutet, zu entscheiden, welches Erlebnis weniger schädlich ist, wenn ein Teil des Stacks ungesund ist.

Warum stale-while-revalidate hilft

Das stale-while-revalidate-Modell ist nützlich für Inhalte, die sich selten ändern, aber ständig gelesen werden.

Cache-Control: s-maxage=60, stale-while-revalidate=86400

Das sagt einem zwischengeschalteten Cache, dass er veraltete Inhalte weiterhin bereitstellen kann, während er im Hintergrund versucht, sie zu aktualisieren. Wenn das Aktualisieren fehlschlägt, können die Benutzer dennoch eine nützliche Antwort anstelle eines Ursprungsfehlers erhalten.

Das macht Sinn für:

  • Produktseiten
  • Dokumentationen
  • öffentliche Inhalte

Es macht viel weniger Sinn für:

  • Kontostände
  • Gesamtbeträge beim Checkout
  • hochsensible Echtzeitdaten

UI-Abwertung ist ebenfalls wichtig

Die Resilienz des Backends ist nur ein Teil der Geschichte. Die Frontend-Architektur sollte Ausfälle isolieren, damit eine schwache Abhängigkeit nicht die gesamte Seite zum Absturz bringt.

Das bedeutet oft:

  • Fallbacks auf Komponentenebene
  • partielle Darstellung
  • klare, aber ruhige Statusmeldungen

Weitere Lektüre