Let Chaos reign…

Chaos Toolkit 1.0 veröffentlicht: Chaos Engineering für jedermann

Dominik Mohilo

© Shutterstock / Valentin Drull

Chaos Engineering ist schwere Handarbeit, daher braucht man ein gutes Sammelsurium an Werkzeugen, um als Chaos Engineer durchzustarten. Das Chaos Toolkit von Russ Miles und Sylvain Hellegouarch ist eine solche Sammlung. Mit dem Release des Chaos Toolkit 1.0 können sich die Nutzer – wie bislang auch schon – auf die Stabilität verlassen.

Das Jahr 2010 war die Geburtsstunde von Chaos Monkey, dem wohl bekanntesten Tool für Chaos Engineering. Interessanterweise war es kein Softwareriese, der diesen Meilenstein vollführte, sondern der Streamingdienst Netflix. Chaos Monkey war die innovative Reaktion auf den Umzug von physischen Servern hin zu einer Cloud-Infrastructure (AWS im Falle von Netflix). Zwei Jahre später wurde das Tool Open Source zur Verfügung gestellt.

Chaos Engineering beginnt immer mit dem Erstellen eines Plans, was genau schiefgehen könnte. Anschließend wird der kleinstmögliche Test erstellt, etwa der Ausfall eines Services. Liefert dieser Test keinen Fehler wird Schritt für Schritt der Einschlagsradius vergrößert, bis man schließlich die gesamte Infrastruktur auf Herz und Nieren testet.

Chaos Toolkit: Das ist drin

Nicht ganz so alt wie Chaos Monkey ist das Chaos Toolkit, dass zum Ende des Jahres 2017 von Russ Miles und Sylvain Hellegouarch initial verlffentlicht wurde. Hintergrund war es, so die Macher, ein offenes Toolkit und API zur Verfügung zu stellen, um die eigenen Chaos Engineering Experimente zu erstellen und zu automatisieren. Ein solches Experiment ist in JSON geschrieben und wird in einer einzelnen Datei ausgeliefert. Als nächstes gibt es die Steady State Hypothesis, diese stellt den Ideal- bzw. Normalzustand des Systems dar und wird zum Abgleich vor und nach dem jeweiligen Test genutzt. Im Block Method sind schließlich die Details – wie der Name schon sagt – zur Methodik des Experiments hinterlegt, also was genau während des Experiments passiert.


Das folgende Beispiel enthält all diese Konzepte (Quelle: Dokumentation von Chaos Toolkit):


{
    "version": "1.0.0",
    "title": "System is resilient to provider's failures",
    "description": "Can our consumer survive gracefully a provider's failure?",
    "tags": [
        "service",
        "kubernetes",
        "spring"
    ],
    "steady-state-hypothesis": {
        "title": "Services are all available and healthy",
        "probes": [
            {
                "type": "probe",
                "name": "all-services-are-healthy",
                "tolerance": true,
                "provider": {
                    "type": "python",
                    "module": "chaosk8s.probes",
                    "func": "all_microservices_healthy"
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "stop-provider-service",
            "provider": {
                "type": "python",
                "module": "chaosk8s.actions",
                "func": "kill_microservice",
                "arguments": {
                    "name": "my-provider-service"
                }
            },
            "pauses": {
                "after": 10
            }
        },
        {
            "ref": "all-services-are-healthy"
        },
        {
            "type": "probe",
            "name": "consumer-service-must-still-respond",
            "provider": {
                "type": "http",
                "url": "http://192.168.42.58:31018/invokeConsumedService"
            }
        }
    ],
    "rollbacks": []
}

Das Chaos Toolkit soll sämtliche Aspekte des Chaos Engineerings abdecken und das API dafür sorgen, dass das Toolkit sich konsistent mit möglichst allen Tools und Plattformen nutzen lässt – egal ob es sich dabei um kommerzielle, quelloffene oder private Implementierungen handelt. Das offene API des Chaos Toolkits ist zudem ein wichtiger Bestandteil des Kits, was die Erweiterbarkeit angeht. Für Kubernetes, AWS, Google Cloud Engine, Prometheus und viele andere Plattformen und Tools gibt es bereits Treiber, auch in eine Continuous Delivery bzw. Integration Pipeline lässt sich das Toolkit einbetten.

Chaos Toolkit 1.0 und die Zukunft

Seit Version 0.17.1 hat sich nicht viel getan beim Chaos Toolkit, jedenfalls nicht, wenn es um neue Features geht. Unter anderem wurde der Travis Build unter Mac OS X aktiviert, sodass Mac-User sich nun sicher sein können, dass das Chaos Toolkit dort auch erstellbar ist. Außerdem wurde sichergestellt, dass keine Installationsprobleme auftreten, indem man eine bestimmte Version voraussetzt.

Stabilität ist natürlich ein wichtiger Aspekt für ein solches Toolkit, aber die Innovation soll darunter nicht leiden. Derzeit wird stark am Projekt Chaos Platform gearbeitet, die Chaos Engineering dann ins gesamte Team bringen und die Kollaboration fördern soll. Auch die Dokumentation soll in Zukunft ein wenig umfangreicher gestaltet werden.

Weitere Informationen zum Chaos Toolkit gibt es im Blog-Beitrag von Sylvain Hellegouarch, auf GitHub und natürlich auf der Projekt-Homepage.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: