Chaos Engineering

Was ist Chaos Engineering, wie funktioniert es und was sind die Vorteile?

Wissen kompakt: Chaos Engineering ist ein Ansatz, mit dem die Belastbarkeit von Systemen gestresst wird, um Optimierungspotenziale zu identifizieren.

Chaos Engineering – die Robustheit von Systemen erhöhen

Softwareentwicklung versucht, mit wenig Aufwand nützliche Software zu erstellen, wobei eine Software nützlich ist, wenn sie korrekt, verlässlich, sicher und zuverlässig arbeitet, und dabei vorhandene Ressourcen effizient verwendet.1 Die Zuverlässigkeit von Software und Systemen wird üblicherweise mit Unit Tests, Integration Tests und System Tests – gemeinsam auch als Testpyramide bezeichnet – überprüft. In Zeiten, in denen verteilte Systeme zunehmend umfassender und komplexer werden, stoßen solche Tests jedoch an ihre Grenzen. Hier kommt Chaos Engineering ins Spiel.

Chaos Engineering versucht, die Robustheit von Systemen zu erhöhen, in dem das zu betrachtete Systeme jenseits und bewusst nicht innerhalb der spezifizierten Leistungsmerkmale auf seine Belastbarkeit getestet wird. Es geht also nicht darum, Fehler zu finden, sondern Fehler zu erzeugen. Systeme werden dazu bspw. unter (zu) große Last und (zu viel) Stress gesetzt, wobei sich die Konsequenzen nur eingeschränkt vorhersagen lassen. In anderen Worten: Chaos Engineering ist ein experimenteller Ansatz zur Bestätigung oder Widerlegung von Hypothesen jenseits von Spezifikationen. Ziel ist es, elementare Schwachstellen zu identifizieren, diese zu beseitigen und somit die Robustheit bzw. Belastbarkeit und Leistungsfähigkeit des Systems zu erhöhen.

Die Anfänge von Chaos Engineering

Vorreiter von Chaos Engineering war der Streaming-Dienst Netflix. 2011 entwickelte das Unternehmen mit Chaos Monkey ein Tool zum Testen der Ausfallsicherheit von IT-Infrastrukturen. Ein Chaos Monkey ist ein Affe, der in einem Data-Center wütet, wahllos Kabel rausreißt und Geräte zerstört. Die Herausforderung besteht darin, die Systeme so zu gestalten, dass sie trotz solcher Affen funktionieren.2 Bewusst begann Netflix daher, Computer im Produktionsnetzwerk zu deaktivieren, um so zu testen, wie die verbleibenden Systeme auf den Ausfall reagierten. Heute ist Chaos Monkey Teil einer Suite von Tools namens Simian Army3 und Chaos Engineering ist für viele (Internet-)Unternehmen mit sehr großen, verteilten Systemen bedeutsam, da Systeme so komplex und die Robustheit sowie Belastbarkeit zentrale Wettbewerbs- und Umsatzfaktoren sind. Eine Übersicht mit Firmen, von denen bekannt ist, dass sie Chaos Engineering nutzen, inklusive Tools und Praktiken finden Sie hier.

Der Ablauf beim Chaos Engineering

Auch wenn der Name evtl. etwas anderes andeutet, Chaos Engineering läuft nicht chaotisch, sondern geplant ab. Als erstes gilt es zu bestimmen, welche Bereiche oder Komponenten über ihre Grenzen hinaus belastet werden sollen:

  • Infrastruktur,
  • Netzwerk oder
  • Anwendungen?

Diese drei Bereiche werden manchmal auch als Level oder Ebenen im Chaos Engineering bezeichnet.4 Die Kombination der Level ist natürlich denkbar. Anschließend werden

  • eine Hypothese definiert und
  • das Ausmaß möglicher Schäden prognostiziert (auch als Explosionsradius bezeichnet),
  • der Test gestartet,
  • die Auswirkungen beobachtet und mit passenden Kennzahlen gemessen,
  • und die Kennzahlen ausgewertet.

Werden Fehler und Schwachstellen identifiziert, dann ist das Ziel des Ablaufs erreicht. Funktionieren die Systeme trotz des Tests weiter, dann wird der Explosionsradius erhöht – bspw. durch die Erhöhung paralleler Zugriffe auf eine Infrastruktur, den Versand von größeren Datenmengen in einem Netzwerk oder dem Abschalten von zusätzlichen Komponenten. Erst sobald das System „kaputt“ ist und Fehler erzeugt wurden, endet der Ablauf und die Beseitigung der gefundenen Schwachstellen beginnt (was in der Praxis auch einiges an Zeit dauern und hohe Aufwände verursachen kann). Idealerweise wird im Anschluss der gesamte Ablauf automatisiert.

Tipps für Chaos Engineering

In der Praxis empfiehlt es sich, Aspekte in einer gewissen Reihenfolge und schrittweise zu testen5:

  1. Known Knowns – Dinge, die Unternehmen bekannt sind und die sie verstehen.
  2. Known Unknowns – Dinge, die Unternehmen wissen, aber nicht vollständig verstehen.
  3. Unknown Knowns – Dinge, die Unternehmen verstehen, die ihnen aber nicht bewusst sind.
  4. Unknown Unknowns – Dinge, die Unternehmen weder bewusst sind, noch die sie vollständig verstehen.

Darüber hinaus gibt es noch einige weitere Tipps:

  • Es ist wichtig, den Status quo eines Systems inklusive Systemkontext und Funktionsweise zu kennen. Diese Kenntnis ist Voraussetzung für alle Hypothesen.
  • Das System, die Interaktion verschiedener Komponenten, der Fluss an Daten muss beobachtet werden. Monitoring ist das entsprechende Keyword.
  • Für die Messung der Ergebnisse werden Metriken benötigt.
  • Schritt für Schritt sollten Tests automatisiert werden. Ziel könnte eine Überführung in eine Continuous Integration / Continuous Delivery Pipeline sein.
  • Im sogenannten Site Relaibility Engineering (SRE) gibt es ein Konzept der Spieltage, bei dem alte Vorfälle nochmals durchgespielt werden. Auch Chaos Engineering verfolgt diesen Ansatz; anders formuliert: ohne die Beseitigung von identifizierten Schwachstellen ergibt das Konzept wenig Sinn.
  • Es ist nicht möglich, alle denkbaren Fehler beim Chaos Engineering vorherzusehen. Genau aus diesem Grund sind Hypothesen, Metriken und die Beurteilung der Erkenntnisse sehr wichtig.
  • Auch die Kommunikation im Unternehmen ist wichtig. Einerseits über das grundsätzliche Vorgehen, andererseits über einen konkreten Test.
  • Und natürlich sollte auch ein Rollback-Plan vorhanden sein. Es handelt sich schließlich um ein Experiment, mit dem Erkenntnisse gewonnen werden und nicht den Ansatz, das betrachtete System dauerhaft zu zerstören.

Vorteile beim Chaos Engineering

In der Praxis passiert es immer wieder, das es zu einer Verkettung von Situation kommt, auf die Unternehmen nicht vorbereitet sind und die oftmals sehr teuer werden können. Kommt es bspw. bei einem Car-Sharing-Anbieter zu einem Systemausfall und lassen sich in Folge dessen keine Autos mieten, dann steigen die Umsatzausfälle minütlich an. Unternehmen haben daher großes Interesse an fehlertoleranten, redundanten und damit belastbaren Systeme. Chaos Engineering ist ein Ansatz, um solche Systeme zu entwickeln und zu betreiben.

Es gibt einige wesentliche Vorteile bei der Nutzung des Ansatzes:

  • Die Erhöhung der Robustheit bzw. Resilienz eines Systems ist der ultimative Vorteil. 
  • Die Anwendung schärft die Sinne für die mögliche Existenz und daraus resultierende Konsequenzen von Komponenten- oder Systemausfällen. So offenbaren sich bspw. Abhängigkeiten innerhalb und zwischen verschiedenen technischen Ebenen, die nicht immer für alle Beteiligten offensichtlich sind. Das wiederum steigert das Verständnis des Systemverhaltens.
  • Sind die Erkenntnisse ausgewertet und die entdeckten Schwachpunkte beseitigt, lässt sich das Experiment automatisieren. So trägt es direkt zur Zuverlässigkeit des Systems bei. 
  • Und last but not least erzeugt der Ansatz in einem kontrollierten Umfeld Fehler, bevor sie tatsächlich auftreten und realen Schaden anrichten. So werden zukünftige Probleme vermieden.

Der Vollständigkeit halber sollte erwähnt werden, dass der Ansatz natürlich auch aufwendig ist, die Beseitigung von identifizierten Schwachstellen Planung, Implementierung und Verifikation erfordert und dafür finanzielle und organisatorische Ressourcen benötigt werden. Bei allen Vorteilen, Chaos Engineering müssen sich Unternehmen leisten können.

Chaos Engineering - die Robustheit von Systemen erhöhen

Was macht t2informatik?

Was macht t2informatik? Ein Klick und Sie wissen s.

Impuls zum Diskutieren:

Je umfassender und komplexer Produktionssysteme sind, desto schwerer lassen sich entsprechende Testsysteme betreiben. Ergibt sich daraus, dass Chaos Engineering nur im Live-Betrieb erfolgt oder kann es auch in Testsystemen durchgeführt werden?

Hinweise (teilweise auf Englisch):

[1] Ziele der Softwareentwicklung
[2] Den Ausdruck Chaos Monkeys erklärt Antonio Garcia Martinez in seinem gleichnamigen Buch.
[3] A Brief History of Chaos Engineering
[4] Mit Menschen, Praktiken und Prozessen gibt es auch organisatorische Level, die ebenfalls betrachtet werden sollten (Beispiel: Gibt es Prozesse, die einen negativen Einfluss auf einzelne Anwendungen haben?). Die Meinungen variieren, ob diese Ebenen im Sinne von Chaos Engineering adressiert werden können/sollten.
[5] Which experiments do you perform first? (including an example.)

Auf der Website von Gremlin finden Sie einen 2021 State of Chaos Engineering Report als Download.

Interessieren Sie sich für ein Austausch zu dem Thema, dann können Sie hier Mitglied in einer weltweiten Community werden.

Und hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt:

Wissen kompakt: Was ist ein Misuse Case?

Was ist ein Misuse Case?

Wissen kompakt: Wie funktioniert Mob Programming?

Wie funktioniert Mob Programming?