Der Blog

Druckablassventile

von Johannes Laban 27. Januar 2012 | 5 Minuten Lesezeit

Dies ist das vierte eine Reihe von Beiträgen auf die Steigerung der Gesamtverfügbarkeit Ihres Dienstes oder Systems.

Haben Sie jemals paginiert und sofort gewusst, dass dieses Problem nicht wie das die letzten 15 Betriebsprobleme, mit denen Sie sich diese Woche befasst haben ? Dass dieses Problem etwas Besonderes ist und wirklich, wirklich schlimm? Sie wissen schon, die Art von Problem, über das Sie sich seit Wochen tief in Ihrem Unterbewusstsein Sorgen machen und von dem Sie hoffen, dass es nie auftreten würde?

Was tun Sie also, wenn es passiert? In diesen Hochdrucksituationen haben Sie oft nur eine sehr kurze Zeitspanne (sagen wir Minuten), bevor ein Problem von „ziemlich schlimm, aber unsere Kunden werden uns verzeihen, und manche werden es vielleicht nicht einmal bemerken“ zu einfach katastrophal wird. Wenn Sie ein Pfadfinder oder Pfadfinderin , öffnen Sie einfach das zuvor vorbereitete Überdruckventil und verhindern so, dass das Problem außer Kontrolle gerät.

Druckablassventile bauen

Haben Sie sich beim Erstellen oder Warten eines Ihrer Systeme oder Dienste schon einmal gesagt: „Wenn Situation X jemals eintreten würde, so unwahrscheinlich sie auch sein mag, wären wir in echten Schwierigkeiten“? Situation X könnte jedes hypothetische Katastrophenszenario für Ihr System sein: Master- und Slave-Datenspeicher fallen gleichzeitig aus; alle Ihre Kunden oder Klienten überfluten Sie gleichzeitig mit ihren theoretischen Spitzenlasten; bei Ihrem bevorzugten Cloud-Anbieter kommt es zu einem Ausfall mehrerer Verfügbarkeitszonen; Ihr Multicast-basiertes Messaging-System leidet unter einer Rückkopplungsschleife usw.

Das Problem besteht darin, dass die Wahrscheinlichkeit, dass „Situation X“ tatsächlich eintritt, größer ist als gewünscht, wenn man lange genug mit einem bestimmten System arbeitet.

Was können Sie also tun? Ja, Sie könnten versuchen, ein System zu entwickeln, das diese katastrophalen Ausfälle vollständig verhindert. Aber so etwas zu bauen, könnte zu zeit- und kostenintensiv sein und leicht zu überentwickelten Systemen führen, wenn Sie zu weit gehen. Viel Entwicklungszeit auf Fehlerszenarien zu verwenden, die im Laufe Ihres Lebens vielleicht eine 5-prozentige Wahrscheinlichkeit haben, einzutreten, ist nicht die beste Nutzung Ihrer Ressourcen. [1] .

Erstellen Sie stattdessen Druckablassventile . Sie können sich diese als eine Art Hebel oder Knopf vorstellen, den Sie bei Fehlern einstellen können, um die Schwere Ihres Problems zu verringern, während daran gearbeitet wird. Sie können oft die Form eines konfigurationsbasiert Boolescher Wert oder Konstante, der im Notfall leicht geändert werden kann, aber auch andere Formen annehmen kann.

Sie können diese Druckfreigabewerte verwenden, um einige kritische Funktionen einfach ein- oder auszuschalten oder einen wichtigen Wert, der in Ihrer Anwendung verwendet wird, zu erhöhen oder zu verringern. Ich gehe weiter unten auf einige Beispiele ein.

Brainstorm

Um diese Druckablassventile zu entwickeln, setzen Sie sich mit Ihrem Team zusammen und überlegen Sie sich einige (vielleicht auch halbwegs abwegige) Möglichkeiten, wie Ihr System oder Dienst katastrophale Fehler verursachen kann.

Überlegen Sie sich für jeden dieser Fehlermodi, wie das System vorübergehend gepatcht, umgeleitet, kurzgeschlossen oder generell gehackt werden könnte, um das Ausmaß des Problems vorübergehend zu verringern. Das Ziel wäre, das System wieder in einen funktionsfähigen Zustand zu versetzen: Dafür müssen Sie wahrscheinlich Funktionalität opfern. Normalerweise müssen die 1 – 2 Personen, die mit einem bestimmten System am besten vertraut sind, diese Hacks entwickeln. Da diese Personen im Notfall nicht immer verfügbar sind, ist es gut, diese Ideen im Voraus zu prüfen.

Nachdem Sie eine Liste aller katastrophalen Fehlermodi und der entsprechenden Hacks erstellt haben, die erforderlich wären, um das System wieder in einen (halbwegs) funktionierenden Zustand zu versetzen, können Sie auch damit beginnen, gemeinsame Muster in den Hacks zu erkennen:

  • Würde es in vielen dieser Fehlersituationen helfen, die eingehenden Anfragen zu drosseln?
  • Würde das Deaktivieren des rechenintensiven Widgets X oder Y auf Ihrer Website die Last reduzieren?
  • Würde die Möglichkeit, alle eingehenden Anfragen von Rechenzentrum A nach B umzuleiten, einen Teilausfall lediglich in einige Latenzprobleme verwandeln?
  • Würde eine Lockerung Ihrer Konsistenzanforderungen zu einer leichten Datenkorruption führen, würde Machen Sie Ihr System verfügbar wieder?
  • Auf welche anderen Funktionen Ihres Datenspeichers können Sie bei Bedarf verzichten, um ihn teilweise wieder funktionsfähig zu machen? Haltbarkeit? Historische Daten? Die Fähigkeit zum Schreiben (durch Verwendung eines schreibgeschützten Slaves)?
  • Würde das Abschalten einiger Ihrer nicht kritischen Hintergrund-Workflows Kapazitäten für Ihre wichtigeren Workflows freigeben?
  • Würde das rituelle Opfer eines Praktikanten die Operationsgötter besänftigen? [2]

Ein Auskommen mit nur teilweiser Funktionalität ist viel besser als ein kompletter Ausfall und entlastet auch das Bereitschaftspersonal, während es Beginnen Sie mit Ihrem methodischen SOP zur Behebung der Grundursache des Problems.

Wie ich bereits sagte, könnte versuchen, ein System zu überentwickeln, um diese seltenen exotischen Katastrophen zu verhindern, bevor sie passieren, aber es lohnt sich oft einfach nicht. Und selbst dann gäbe es wahrscheinlich Trotzdem Es gibt andere, noch unwahrscheinlichere, aber dennoch mögliche Fehlerarten, die von diesen Brainstorming-Diskussionen profitieren könnten. Verschwenden Sie also nicht unbedingt viel Zeit damit, Wege zu finden, diese obskuren Probleme zu vermeiden, aber ignorieren Sie ihre Möglichkeit auch nicht. Über sie reden!

Wenn jemand weitere Beispiele für Überdruckventile hat, die er in seinem eigenen Betriebswerkzeugkasten aufbewahrt, würde ich mich sehr über eine Kommentarnachricht freuen.

[1] Ignorieren Sie diesen Ratschlag, wenn Sie etwas wie einen Atomreaktor bauen. Sorgen Sie dafür, dass der Mist funktioniert.
[2] Nur ein Scherz. Die Götter der Operationsbranche stehen für nichts Geringeres auf als einen Vollzeit-Hochschulabsolventen.