Chaos Engineering – das Impfen unter den Operations Modellen

Hinterlasse einen Kommentar
Service Management

Vor ein paar Wochen stellte ich fest, dass mein Impfschutz gegen Tetanus vor 21 Jahren abgelaufen war. Das war dann in der Tat notwendig. Wikipedia definiert den Begriff einer Impfung wie folgt:

Eine Impfung, auch Schutzimpfung oder Vakzination (ursprünglich die Infektion mit Kuhpockenmaterial; von lateinisch vacca, ‚Kuh‘) genannt, ist die Gabe eines Impfstoffes mit dem Ziel, vor einer (übertragbaren) Krankheit zu schützen. Sie dient der Aktivierung des Immunsystems gegen spezifische Stoffe. Impfungen wurden als vorbeugende Maßnahme gegen Infektionskrankheiten entwickelt.

Das past zu einer Analogie, die ich im Cloudcast #299 gehört hatte. Dort ging es um die Disziplin des Chaos Engineerings, einem Betriebsmodell bei dem es darum geht, dass (verteilte) IT-Systeme niemals perfekt sind. Vielmehr ist die These sogar, dass sie verwundbar sind und eher die Frage berechtigt ist, wem diese Verwundbarkeit zuerst auffällt. Dem dafür verantwortlichen Betreiber oder jemand externem.1

Der Begriff Chaos Engineering leitet sich am ehesten von einem Modell, dass bei Netflix angewandt wird ab. Dort wurde vor Jahren ein Tool namens Chaos Monkey genutzt (und für Jedermann veröffentlicht), welches zufällig bestimmte Komponenten eines Systems bewusst im laufenden Betrieb zum Absturz bringt. Damit kann dann validiert werden, on das System als Ganzes wirklich hinreichend ausfallsicher ausgelegt ist.

Die Denke ist, Fehler werden passieren, die Frage ist nur wann. Und wie sehr kann ich den „Impact“ durch diesen Fehler im Falle minimieren.

Hier kommt die Analogie zur Impfung ins Spiel. Damit mein Immunsystem zur Abwehr gegen bestimmte Stoffe aktiviert wird, muss ich es zunächst einer kleinen Menge eben dieses Stoffes aussetzen.

Was sind die Prinzipien des Chaos Engineerings?

Hierzu bietet die eigens von Afficionados angelegte Seite PRINCIPLES OF CHAOS ENGINEERING eine gute Definition:

Chaos Engineering is the discipline of experimenting on a distributed system in order to build confidence in the system’s capability to withstand turbulent conditions in production.

Selbst wenn alle einzelnen Systeme einer verteilten Umgebung voll funktionstüchtig sind, kann es dennoch zu einer Nutzerbetreffenden Einschränkung kommen. Eben diese impliziten Abhängigkeiten sind in großen Systeme oftmals nur nach einer Störung herauszufinden (dran Denken, Lessons Learned nach einem Incident). Will man hier etwas „proaktiver“ Vorgehen, ist das Modell des Chaos Engineerings prädestiniert:

  1. Definiere den ‚steady state’, am besten in einer messbaren Form, aus dem das zu erwartende normale Verhalten Deines Systems hervorgeht. Wichtig ist hier meines Erachtens der Aspekt des messbaren. Das kann bei einer Webseite die Antwortzeit auf bestimmte Anfragen sein, am besten auf Anfragen, die eine Vielzahl von Backend-Services mit einbezieht.
  2. Stelle die Hypothese auf, dass sowohl die Kontrollgruppe, als auch die experimentelle Gruppe sich gleich verhalten werden.
  3. Definiere Variablen, die ein echtes Verhalten darstellen, wie denkbare Anzahl von abgestürzten Servern, reduzierter oder limitierter Netzwerkbandbreite, usw.
  4. Vergleiche die Experimentier und die Kontrollgruppe kontinuierlich. D.h. starte durchgängig Experimente, die durch die Veränderung der definierten Variablen geprägt sind.

Die Fortgeschrittenen führen die Experimente direkt in der Produktion aus. Naheliegend fängt man mit einem reduziertem Radius an und vergrößert diesen immer weiter. Im Idealfall ist das gesamte System eingebunden. Mir ist zudem immer wichtig, dass man die dennoch auftretenden Incidents und im wiederholten Falle Problems (nach ITIL Sprache) als Input für die Testfälle/Variablen hernimmt.

  1. Extern muss nicht limitiert sein auf einen externen „Angreifer“ im Security Sinne. Es kann sich dabei einfach um einen operationsfremden und zu spät erkannten Incident handeln.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s