Entfesseln Sie das Chaos!

Netflix Chaos Engineering: Wider die Unsicherheit verteilter Systeme!

Natali Vlatko

© Shutterstock.com/Wolfgang Zwanzger

Beruhen Ihre verteilten Systeme auf den Prinzipien des Chaos? Nein? Höchste Zeit, damit anzufangen! „Chaos Engineering“ heißt die neue Methode, um sowohl die Unsicherheit verteilter Systeme anzugehen als auch Vertrauen in die Leistung des Systems aufzubauen.

Die Köpfe hinter der Softwareentwicklung bei Netflix wurden schon des Öfteren für ihre Beiträge zur quelloffenen Software gelobt. Nun können sie ihrer Erfolgsliste noch einen Eintrag in der Kategorie „Softwaremethodologien“ hinzufügen: Das World Wide Web wurde kürzlich mit dem „Chaos Engineering“ gesegnet. Dabei handelt es sich um eine Technik, die über eine Reihe von Experimenten die systematischen Schwächen verteilter Systeme aufdecken soll.

Die Zielsetzung umfasst das Vertrauen in komplexe Produktionssysteme, wobei die Interaktionen zwischen einzelnen Services des Systems laut Netflix das Ziel einer „empirischen, systembasierten Herangehensweise“ sind. Unter die Schwächen, die einen proaktiven Ansatz erforderlich machen, fallen Netflix zufolge: Ungeeignete Fallbackeinstellungen, wenn ein Service nicht verfügbar ist; die Flut an Retries bei unsachgemäß abgestimmten Timeouts; Ausfälle, wenn eine Downstream-Abhängigkeit zu viel Traffic erhält; kaskadierende Ausfälle beim Crash eines Single Point of Failure.

Chaos in der Praxis

Die Experimente, die systematische Schwächen aufspüren sollen, folgen vier präzisen Schritten:

  1. Einen „Steady state“ des Systems definieren, der das normale Verhalten darstellt.
  2. Per Brainstorming eine kontrollierte, experimentelle Version des Systems entwerfen.
  3. Damit beginnen, Störungen wie Festplattencrashs oder getrennte Netzwerkverbindungen einzuführen.
  4. Nach Unterschieden zwischen den kontrollierten, experimentellen Umgebungen der Analyse suchen, um daraus die zu unternehmenden Maßnahmen zu erschließen.

„Je schwieriger es ist, den Steady State zu stören, desto mehr Vertrauen haben wir in die Leistung unseres Systems“, so die Argumentationslinie der Philosophie. Durch Befolgung der vier Richtlinien und die Aufdeckung von Schwachstellen haben Entwickler einen Ansatzpunkt, um unerwünschte Effekte zu beseitigen, bevor diese das System als Ganzes betreffen.

Das Dokument listet darüber hinaus einige zusätzliche, erweiterte Grundsätze auf, die die idealtypische Anwendung des „Chaos Engineering“ beschreiben:

  • Hypothesen rund um das Steady-State-Verhalten aufstellen
    Anstatt auf interne Attribute sollte man sich auf den messbaren Output eines Systems konzentrieren. Messungen dieses Outputs über einen kurzen Zeitraum hinweg stellen einen Stellvertreter für den Steady State des Systems dar. Durchsatz, Fehlerraten, Latenzperzentile: All diese Merkmale des Gesamtsystems können Metriken darstellen, die den Steady State des Systems repräsentieren. Durch die Fokussierung auf systematische Verhaltensmuster während der Experimente überprüft die Chaos-Methode, ob das System arbeitet, nicht wie es arbeitet.
  • Reale Ereignisse variieren
    Chaotische Variablen spiegeln reale Ereignisse wider. Ereignisse sollten entweder anhand ihrer potentiellen Auswirkung oder ihrer geschätzten Häufigkeit priorisiert werden. Berücksichtigt werden sollten Ereignisse, die mit Hardwarefehlern einher gehen (wie etwa abschmierende Server), Softwarefehler (wie fehlerhafte Antworten), sowie weitere Ereignisse, die nichts mit Fehlern zu tun haben (wie beispielsweise Traffic-Spitzen). Jedes Ereignis, das in der Lage ist, den Steady State zu stören, stellt in einem Chaos-Experiment eine potentielle Variable dar.
  • Experimente in der Produktion durchführen
    Je nach Umgebung und Traffic verhalten sich Systeme unterschiedlich. Da sich das Nutzungsverhalten jederzeit ändern kann, stellt die Überprüfung des echten Traffics den einzigen Weg dar, den Anfragepfad zuverlässig zu erfassen. Um sowohl die Authentizität der Art, in der das System ausgeübt wird, als auch die Relevanz für das derzeit eingesetzte System zu garantieren, gibt die Chaos-Methode dem experimentieren mit dem Produktions-Traffic den Vorzug.
  • Ständig laufende, automatisierte Experimente
    Manuelle Tests sind arbeitsintensiv und letztendlich untragbar. Stattdessen sollten Tests automatisiert und kontinuierlich durchgeführt werden. „Chaos Engineering“ baut auf die Automatisierung des Systems, um sowohl Orchestrierung als auch Analyse voranzutreiben.

Diese neue Methodologie passt zu dem bereits beachtlichen Arsenal von Werkzeugen, das die Netflix-Entwickler zum Zwecke der Überwachung ihres Cloud-Betriebs aufgebaut haben. Die meisten davon, wie etwa Chaos Monkey, das Anwendungen bei der Verkraftung zufälliger Instanzfehler hilft, sind Teil ihrer Simian Army Suite.

Aufmacherbild: Yellow town sign with text „system chaos“ von Shutterstock / Urheberrecht: Wolfgang Zwanzger

Verwandte Themen:

Geschrieben von
Natali Vlatko
Natali Vlatko
An Australian who now calls Berlin home, via a two year love affair with Singapore. Natali was an Editorial Assistant for JAXenter.com (S&S Media Group).
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: