Was ist Chaos Monkey? Chaos Engineering erklärt

Chaos Monkey wurde während der Umstellung von der Verteilung von DVDs auf den Aufbau verteilter Cloud-Systeme für das Streaming von Videos aus den Hallen von Netflix heraus eingeführt und führte ein Konstruktionsprinzip ein, das von Softwareentwicklungsorganisationen aller Formen und Größen übernommen wurde: nämlich das absichtliche Brechen von Systemen, die Sie verwenden kann lernen, sie widerstandsfähiger zu machen.

Laut dem ursprünglichen Netflix-Blogbeitrag zu diesem Thema, der im Juli 2011 von Yury Izrailevsky, dem damaligen Direktor für Cloud- und Systeminfrastruktur, und Ariel Tseitlin, dem Direktor für Cloud-Lösungen bei der Streaming-Firma, veröffentlicht wurde, wurde Chaos Monkey so konzipiert, dass Produktionsinstanzen nach dem Zufallsprinzip deaktiviert werden Die Amazon Web Services-Infrastruktur deckt Schwachstellen auf, die Netflix-Ingenieure durch den Aufbau besserer automatischer Wiederherstellungsmechanismen beseitigen könnten.

Der eingängige Name kam von „der Idee, einen wilden Affen mit einer Waffe in Ihrem Rechenzentrum (oder in der Cloud-Region) freizulassen, um zufällig Instanzen abzuschießen und Kabel zu kauen - während wir unsere Kunden weiterhin ohne Unterbrechung bedienen“, heißt es in dem Blogbeitrag Zustände.

In der Praxis würde dies eine einfache Anwendung beinhalten, die eine Instanz zufällig aus jedem Cluster auswählt und sie irgendwann während der Geschäftszeiten ohne Vorwarnung ausschaltet. Dies würde jeden Arbeitstag geschehen “, wie die ehemaligen Netflix-Ingenieure Nora Jones und Casey Rosenthal in ihrem umfassenden Buch zum Thema Chaos Engineering , das von O'Reilly Media veröffentlicht wurde, ausführlich darlegten.

Die Idee ist, dass Ingenieure, indem sie lernen, wo sich Ihre schwächsten Stellen befinden, automatisierte Auslöser setzen können, um ein Problem zu bekämpfen, und ihnen mitten in der Nacht einen Anruf ersparen, falls etwas schief gehen sollte. Chaos Monkey hat sich seitdem unter dem Banner der Chaos-Technik zu einer ganzen Reihe von Chaos-Prinzipien entwickelt.

Chaos Affe bei Netflix

Chaos Monkey entstand aus den technischen Bemühungen bei Netflix um 2010, als Greg Orzell, der jetzt bei GitHub im Besitz von Microsoft arbeitet, die Aufgabe hatte, die Ausfallsicherheit der neuen Cloud-basierten Architektur des Unternehmens zu verbessern.

"Die Art und Weise, wie ich über Chaos Monkey denke, ist keine große technische Leistung", sagte Orzell. "Der Wert, den es bringt, ist eine Änderung der Denkweise, die zu der Zeit von entscheidender Bedeutung war, als wir vom Versand von DVDs zum Streaming über das Internet übergingen."

In den frühen Tagen führten die Netflix-Ingenieure eine ganze Reihe von Ausfällen und Problemen in Systeme ein, indem sie eine „Simian Army“ von Open-Source-Tools verwendeten, die jeweils bestimmte Arten von Fehlern berücksichtigten, beginnend mit Chaos Monkey beim Entfernen von AWS-Clustern.

Die ursprüngliche Armee (die jetzt größtenteils zugunsten neuer Tools in den Ruhestand ging) umfasste Latency Monkey, was zu künstlichen Verzögerungen bei der RESTful-Client-Server-Kommunikationsschicht führen würde, und Doctor Monkey, die die auf jeder Instanz ausgeführten Integritätsprüfungen nutzen würde sowie Monitore auf andere externe Anzeichen von Gesundheit (z. B. CPU-Auslastung), um fehlerhafte Instanzen zu erkennen und bei Bedarf aus dem Dienst zu entfernen.

Chaos Kong brachte Chaos Monkey auf die nächste Stufe, indem es einen Ausfall in einer gesamten AWS-Verfügbarkeitszone simulierte. „Es ist sehr selten, dass eine AWS-Region nicht mehr verfügbar ist, aber es kommt vor“, beschreibt ein Netflix-Blogbeitrag aus dem Jahr 2015. 

„Durch regelmäßige Experimente, die einen regionalen Ausfall simulieren, konnten wir systembedingte Schwächen frühzeitig erkennen und beheben“, fährt der Beitrag fort. "Als US-EAST-1 tatsächlich nicht mehr verfügbar war, war unser System bereits stark genug, um ein Verkehrsfailover zu bewältigen."

Wie Jones und Rosenthal in ihrem Buch darlegen, war das Loslassen von Chaos Kong in der Infrastruktur „eine Angelegenheit mit einem„ Kriegsraum “, der eingerichtet wurde, um alle Aspekte des Streaming-Dienstes zu überwachen, und es dauerte Stunden.“

Zwei Jahre später, im Juli 2017, führte Netflix ChAP ein, die Chaos Automation Platform, die „die Bereitstellungspipeline für einen benutzerdefinierten Dienst abfragt. Anschließend werden Experimentier- und Kontrollcluster dieses Dienstes gestartet und ein kleiner Datenverkehr an jeden weitergeleitet “, heißt es in dem Blogbeitrag.

Chaos Engineering-Prinzipien

Grundlegende Praktiken von Chaos Monkey haben sich mit immer größeren Einsätzen durch Chaos Kong schnell zu dem entwickelt, was später als Chaos Engineering formalisiert wurde. Netflix baute erst 2015 ein eigenes Team für formelles Chaos-Engineering auf. Dieses Team wurde von Bruce Wong geleitet, der jetzt Director of Engineering bei Stitch Fix ist.

Die Prinzipien der Chaos-Technik wurden von einigen der ursprünglichen Autoren von Chaos Monkey formell zusammengestellt und die Praxis wie folgt definiert: „Die Disziplin, an einem System zu experimentieren, um Vertrauen in die Fähigkeit des Systems aufzubauen, turbulenten Produktionsbedingungen standzuhalten.“

In der Praxis erfolgt dies in Form eines vierstufigen Prozesses:

  1. Definieren des „stationären Zustands“ eines Systems, um eine Basislinie für normales Verhalten festzulegen.
  2. Hypothese, dass dieser stationäre Zustand sowohl in der Kontrollgruppe als auch in der Versuchsgruppe anhält.
  3. Führen Sie Variablen ein, die reale Ereignisse widerspiegeln, z. B. abstürzende Server, fehlerhafte Festplatten oder unterbrochene Netzwerkverbindungen.
  4. Versuchen Sie, die Hypothese zu widerlegen, indem Sie nach einem Unterschied zwischen der Kontrollgruppe und der Versuchsgruppe suchen.

Wenn es schwierig ist, den stationären Zustand zu stören, verfügen Sie über ein robustes System. Wenn es eine Schwäche gibt, müssen Sie etwas beheben.

„In den fünf Jahren seit der Veröffentlichung von 'The Principles' haben wir gesehen, wie sich das Chaos Engineering weiterentwickelt hat, um neuen Herausforderungen in neuen Branchen zu begegnen“, stellen Jones und Rosenthal fest. "Die Prinzipien und Grundlagen der Praxis werden sich sicherlich weiterentwickeln, wenn die Akzeptanz in der Softwareindustrie und in neue Branchen zunimmt."

Chaos Engineering mit Chaos Monkey

Um die Open Source-Version von Chaos Monkey ausführen zu können, müssen Ihre Systeme bestimmte Voraussetzungen erfüllen, wie auf GitHub beschrieben.

Chaos Monkey wird nicht als Dienst ausgeführt, daher müssen Sie einen Cron-Job wie auf der GitHub-Seite beschrieben einrichten, der Chaos Monkey einmal an Wochentagen aufruft, um einen Zeitplan für die Beendigung zu erstellen.

Um diese Version von Chaos Monkey verwenden zu können, müssen Sie Netflix 'eigene Open-Source-Plattform für die kontinuierliche Bereitstellung, Spinnaker, verwenden, die die Fähigkeit bestimmter Organisationen einschränken kann, die Methode anzuwenden. Chaos Monkey benötigt außerdem eine MySQL-kompatible Datenbank, Version 5.6 oder höher.

Servicebesitzer legen ihre Chaos Monkey-Konfigurationen über Spinnaker fest. Chaos Monkey arbeitet mit Spinnaker zusammen, um Informationen über die Bereitstellung von Diensten abzurufen und Instanzen - virtuelle Maschinen oder Container - nach einer von Ihnen festgelegten Häufigkeit und einem festgelegten Zeitplan nach dem Zufallsprinzip zu beenden.

Die Implementierung von Chaos Monkey ist natürlich nur der Anfang der schwierigen und komplexen Aufgabe, Probleme mit der Systemstabilität zu lösen. Chaos Monkey deckt lediglich die Schwächen des Systems auf; Es liegt dann an den Entwicklern oder Systemtechnik-Teams, ihre Ursachen zu identifizieren und Lösungen zu finden.

„Das Werkzeug selbst ist nicht teuer, aber die Investition, die Sie tätigen müssen, um auf das Werkzeug zu reagieren, ist hoch“, sagt Orzell. Das Engagement für Chaos Engineering erfordert auch die Verlagerung von Ressourcen von der Erstellung neuer Funktionen zur Verbesserung der Ausfallsicherheit. „Jedes Unternehmen befindet sich an einem anderen Punkt in diesem Spektrum und muss entscheiden, wie viel in diesem Bereich nach oben oder unten gewählt werden soll“, fügt er hinzu.

Jones und Rosenthal sagen, dass die Netflix-Ingenieure in den frühen Tagen "insbesondere von Finanzinstituten viel Rückstoß erhalten haben".

Obwohl die Einsätze für Banken höher waren, erlitten sie immer noch Ausfälle. Durch die sorgfältige Umsetzung einer „proaktiven Strategie wie Chaos Engineering, um Risiken zu verstehen, um große, unkontrollierte Ergebnisse zu verhindern“, änderten viele dieser Organisationen ihre Denkweise, wobei Capital One frühzeitig eingesetzt wurde Adopter, wie im Buch beschrieben.

Chaos Engineering-Ressourcen

Das neueste und endgültige Buch zu diesem Thema ist Chaos Engineering der ehemaligen Netflix-Ingenieure Nora Jones und Casey Rosenthal, das im April 2020 veröffentlicht wurde und auf einem Großteil der Arbeit aufbaut, die diese Autoren und andere im 2017 erschienenen Buch Chaos Engineering zusammengestellt haben . Eine praktischere Übersicht finden Sie in Russ Miles ' Learning Chaos Engineering .

Netflix bietet eine Fülle von Ressourcen zu diesem Thema auf GitHub, darunter ein Tutorial, zahlreiche Dokumentationen, einen Fehlerzähler, eine Ausfallprüfung und Entschlüsselungstools.

Gremlin - ein Anbieter kommerzieller Tools für die Durchführung von Chaos-Engineering-Experimenten - bietet seine eigenen umfassenden Ressourcen an, die kostenlos online und im PDF-Format verfügbar sind. Das Unternehmen unterstützt auch verschiedene Community-Bemühungen, darunter Chaos Conf und einen Slack-Kanal.

O'Reilly verfügt auch über eine Fülle von Ressourcen, einschließlich dieser praktischen Wiedergabeliste mit Büchern und Videos zu diesem Thema.