Chaos Engineering GameDay

Keine Kommentare

Im Softwerker Spezial „Cloud Native“ und in seinem englischsprachigen Blogpost hat Benjamin Wilms eine Einführung zu „Chaos Engineering“ gegeben. Aber wie gehen wir jetzt mit den möglichen Experimenten und deren Ergebnissen im jeweiligen Unternehmenskontext um?

Ich möchte euch den Chaos Engineering GameDay als entsprechende Plattform vorstellen. Hierbei geht es darum, dass wir in einem abgesicherten Rahmen (Raum und Zeit) erfahren, wie wir mit einem Ausfall in der Produktion „überleben“ können. GameDays sind so gesehen nichts anderes als Feuerübungen. Wie bei jeder Übung steht am Anfang die Überlegung, was geübt werden soll. Wollen wir den Ausfall des Datenbanksystems oder einer Hauptkomponente des Systems?

Um ein Gefühl für die Durchführung eines GameDay zu bekommen, sollte zu Beginn der Radius des Experiments sehr klein gewählt werden. Ebenso ist es ratsam, den GameDay erst innerhalb einer Testumgebung zu erproben. Somit sind wir bereit für einen GameDay auf der Produktion und können diesen in seiner Gesamtheit vorbereiten.

Das Wichtigste bei der Durchführung des Chaos Engineering GameDay ist die Kommunikation. Als erstes richten wir ein Command Center ein. Dieses kann sowohl ein virtueller Chat als auch ein Konferenzraum sein. Wichtig ist, dass jeder in diesem Raum Einblick in Erfolg, Abbruchkriterien und sämtliche sonstige Übersichten, die für den GameDay relevant sind, erhält. Nur so ist zu gewährleisten, dass potentielle Fehlerquellen schnell entdeckt werden. Wenn etwas schiefgeht, sollten ein Plan zur Wiederherstellung und eine Reihe von Abbruchbedingungen bereitliegen.

Bevor wir nun in den eigentlichen GameDay eintauchen, hier auch noch einmal die Regeln für Chaos Engineering, wie sie bereits von Benjamin Wilms aufgezeigt wurden.

  1. Sprich mit deinen Kollegen über deine geplanten Chaos-Experimente – vorher!
  2. Wenn dir die Konsequenzen deines Chaos-Experiments bekannt sind, lass es!
  3. Chaos ist keine Überraschung, du stellst deine Hypothese unter Beweis.
  4. Chaos Engineering hilft dir, deine verteilten Systeme besser zu verstehen.
  5. Begrenze den Radius deiner Chaos-Experimente.
  6. Sei immer Herr der Lage während deines Chaos-Experiments!

Der Chaos Engineering GameDay im Detail

Ein GameDay dauert zwischen zwei und vier Stunden. Im Idealfall sollten neben den Entwicklern und Operations auch die „Kunden“ der Applikation an dem geplanten Event teilnehmen. Doch was ist nun noch alles neben dem eigentlichen Experiment vorzubereiten?

Jeder GameDay braucht ein konkretes Ziel, auf das das Experiment angewendet werden kann. Über das Ziel definieren sich die jeweiligen Teilnehmer dann selbst. Nämlich aus der Tatsache heraus, ob sie sich angesprochen fühlen oder nicht. Neben dem definierten Ziel gilt es die Hypothese mit Testfällen belegbar zu machen.
Aber bevor wir unser definiertes Ziel unter Druck setzen, sollten wir vorab zwei Dinge erledigen. Nach der Eröffnung des GameDay verbringen wir ein wenig Zeit mit der Darstellung der aktuellen Systemarchitektur, am besten auf einem Whiteboard zentral im Raum. Dies soll vor allem dafür sorgen, dass alle Teilnehmer den aktuellen Stand des Systems für ihre weiteren Überlegungen vor Augen haben. Gemeinschaftlich werden nun potentielle Testfälle überlegt. Für einige Tests kann es entscheidend sein, diese nicht über die tatsächliche Zeit zu betrachten. Wir wissen ja schon aus unserer Erfahrung, dass manche Applikationen nicht innerhalb eines bestimmten Zeitintervalls in Fehler laufen. Gerade wenn wir die Tests in Produktion durchführen, ist es umso wichtiger, dass wir eine Abbruchbedingung definieren.

Die Tests sind nun definiert, also können wir auch loslegen. Während des Durchlaufs des Tests ergeben sich einige Fragen. Falls sich diese zufriedenstellend beantworten lassen, ist der nächste Test an der Reihe. Hier nun einige Beispiele:

  • Haben wir genügend Informationen?
  • Haben wir genau dieses Verhalten erwartet?
  • Was sieht der Kunden, während dies eintritt?
  • Was passiert vor- und nachgelagert der betrachteten Komponente?

Wenn nun alle Tests durchgelaufen sind, können wir zu einer kurzen Zusammenfassung kommen. Diese Zusammenfassung stellt auch gleichzeitig den Abschluss des GameDay dar, wobei dies auch ein paar Tage lang betrachtet werden kann. So kann gewährleistet werden, dass alle Beteiligten die Ereignisse und Ergebnisse der Tests mit etwas Abstand betrachten können. Zuallererst wäre es ratsam, den Fokus auf die eklatanten Tests mit den entsprechenden Ergebnissen zu richten. Als Ergebnis der Diskussion werden die entdeckten Fehler über ein Ticketsystem an die entsprechenden Personen zur Klärung und Behebung weitergereicht. Aber auch alle anderen Tests sollten noch einmal näher betrachtet werden, um beispielsweise zu klären, ob diese gegebenenfalls vorher schon einmal negativ aufgefallen sind. Ebenfalls ist zu überlegen, ob sich diese positiven Tests auf irgendeine Art und Weise automatisieren lassen, um zukünftige Releases gegen Regression zu schützen.

Als Fazit lässt sich festhalten, dass ein GameDay schon einige Erkenntnisse zu einer Applikation bzw. Komponente liefern kann. Aber die kontinuierliche Durchführung wird zu erhöhter Sicherheit beim Betrieb von verteilten Applikationen und Komponenten führen. Wenn euch die Idee des GameDay gefällt, könnt ihr für den Anfang auch das Ganze ohne ein Experiment starten. Oftmals reicht es ja einfach schon aus, dass sich die richtigen Menschen im einem Raum treffen und die eine oder andere Frage stellen. Durch entstehende Diskussion und Nachdenken wird dann schon manch wichtige Erkenntnis gewonnen.

Ich hoffe, dass euch dieser Blogpost einen ersten Einblick in die Durchführung eines Chaos Engineering GameDay gegeben hat. Wenn ihr weitere Fragen, Anregungen und vielleicht Wünsche bezogen auf das Thema „Chaos Engineering“ habt, postet diese bitte in den Kommentaren.

Daniel Kocot

Von Oktober 2016 an ist Daniel Kocot ein Teil des Teams der codecentric am Standort in Solingen. Seit über 15 Jahre setzt er sich mit IT-Herausforderungen und deren Lösungen auseinander.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.