Das Chaos-Testing wurde vor etwas mehr als zehn Jahren von demselben Unternehmen ins Leben gerufen, das uns Tigerkönig Und Das Damengambit —Netflix.
Im Jahr 2010 begannen die Entwicklungs- und Betriebsteams von Netflix damit, ihre gesamte Infrastruktur zu AWS (Amazon Web Services) zu migrieren. Schnell wurde dem Team klar, dass die bestehende Infrastruktur die benötigte Skalierbarkeit nicht bieten würde. Daher trafen sie die schwierige Entscheidung, alles in die Cloud-basierte AWS-Plattform von Amazon zu migrieren – im Rahmen einer Transformation von einer monolithischen Architektur zu Microservices.
Während dieser Zeit etablierte Netflix zwei Grundsätze, die aus dem Prozess der Migration der gesamten Infrastruktur bei gleichzeitiger Minimierung der Auswirkungen auf die Millionen von Nutzern gewonnen wurden:
- Kein System sollte jemals einen Single Point of Failure aufweisen. Ein Single Point of Failure bezeichnet die Möglichkeit, dass ein einziger Fehler oder Ausfall zu Hunderten von Stunden ungeplanter Ausfallzeit führen kann.
- Seien Sie sich niemals hundertprozentig sicher, dass Punkt eins zutrifft. Ihr Team benötigt eine effektive Methode, um Ihr System regelmäßig zu testen und zu überwachen und so sicherzustellen, dass Punkt eins zutrifft (Netflix hat sogenannte Chaos Monkeys entwickelt, um dies zu gewährleisten – dazu später mehr).
Diese Methodik wurde Chaos-Testing genannt. Chaos-Testing basiert auf der proaktiven Identifizierung von Fehlern in einem System, um Ausfälle und negative Auswirkungen auf die Nutzer zu verhindern. Netflix wusste um die Bedeutung dieses Ansatzes nur allzu gut, da das Unternehmen wenige Jahre vor dem Wechsel zu AWS einen katastrophalen Ausfall erlebt hatte.
Heute schließen sich viele DevOps- und IT-Teams branchenübergreifend Netflix und Amazon an und setzen Chaos-Testing und -Engineering ein. In diesem Artikel beleuchten wir die Kernprinzipien des Chaos-Engineerings, seine Vor- und Nachteile, die sogenannten Chaos Monkeys und die Frage, ob Chaos-Testing für Ihr Team geeignet ist.
Was ist Chaos Testing Engineering?
Chaos-Testing oder Chaos Engineering Chaos Engineering ist ein hochdisziplinierter Ansatz zur Prüfung der Systemintegrität. Dabei werden Fehler in einer gegebenen Umgebung proaktiv simuliert und identifiziert, bevor sie zu ungeplanten Ausfallzeiten oder einer negativen Nutzererfahrung führen. DevOps- und IT-Teams, die Chaos Engineering einsetzen, müssen ein System von Überwachungstools einrichten und aktiv Chaos-Tests in einer Produktionsumgebung durchführen. So können die Teams realitätsnahe Simulationen beobachten, wie ihre Anwendung oder ihr Dienst auf unterschiedliche Belastungen reagiert.
Chaos Engineering besteht aus fünf Hauptprinzipien:
- Stellen Sie sicher, dass Ihr System funktioniert und definieren Sie einen stabilen Zustand. Hierfür müssen Sie einen „stationären Zustand“ oder eine Regelung als messbare Systemausgabe definieren, die ein normales Arbeitsverhalten anzeigt (deutlich unterhalb einer Fehlerrate von einem Prozent).
- Es wird angenommen, dass der stationäre Zustand des Systems bestehen bleibt. Sobald ein Gleichgewichtszustand festgestellt wurde, muss angenommen werden, dass dieser sowohl unter Kontrollbedingungen als auch unter experimentellen Bedingungen fortbesteht.
- Minimieren Sie die Auswirkungen auf Ihre Nutzer. Beim Chaos-Testing geht es darum, das System aktiv zum Absturz zu bringen oder zu stören. Dabei ist es wichtig, die Auswirkungen so gering wie möglich zu halten und negative Folgen für die Nutzer zu minimieren. Ihr Team ist dafür verantwortlich, dass sich alle Tests auf spezifische Bereiche konzentrieren und bei Bedarf auf Störungen reagieren können.
- Chaos stiften. Sobald Sie sicher sind, dass Ihr System funktioniert, Ihr Team vorbereitet ist und der Schadensradius begrenzt ist, können Sie mit Ihren Chaos-Tests beginnen. Führen Sie verschiedene Variablen ein, um reale Szenarien zu simulieren, von Serverausfällen über Hardwaredefekte bis hin zu unterbrochenen Netzwerkverbindungen. Am besten testen Sie in einer Produktionsumgebung, um zu beobachten, wie Ihr Dienst oder Ihre Anwendung auf diese Ereignisse reagiert, ohne die Live-Version und aktive Benutzer direkt zu beeinträchtigen.
- Überwachen und wiederholen. Beim Chaos Engineering kommt es vor allem auf kontinuierliches Testen an. Durch das gezielte Einbringen von Chaos lassen sich Schwachstellen im System aufdecken. Ziel des Chaos Engineerings ist es, die Hypothese aus Punkt zwei zu widerlegen und dabei ein robusteres und zuverlässigeres System zu entwickeln.
Was ist Chaos Monkey und wie funktioniert es?
Als Netflix im Zuge des Umzugs zu AWS mit Chaos-Tests seines Systems begann, wurden verschiedene „Chaos Monkeys“ entwickelt, um den Bedarf an kontinuierlichen und konsistenten Tests zu decken. Diese Chaos Monkeys wurden in ein System eingespielt, um spezifische Probleme – Netzwerkverzögerungen, Instanzen, fehlende Datensegmente usw. – hervorzurufen und verschiedene reale Szenarien zu simulieren.
Jeder Chaosaffe hatte seinen eigenen Namen und seine eigene Aufgabe, darunter:
- Latency Monkey: Verursacht künstliche Verzögerungen
- Konformitäts- und Sicherheitsaffen: Instanzen aufspüren und beseitigen, die nicht den Best Practices entsprechen
- Hausmeisteraffe: Bereinigt und entfernt ungenutzte Ressourcen
- Chaos Gorilla: Simuliert einen kompletten Ausfall einer Amazon-Verfügbarkeitszone
Zusammengenommen werden diese und weitere Chaos-Affen nun als Simian Army bezeichnet.
Die Vor- und Nachteile von Chaostests?
Chaos Engineering gewinnt bei einigen der größten IT- und DevOps-Teams der Branche zunehmend an Popularität. Es ist jedoch nicht immer die richtige Wahl für jedes Team und jede Situation.
Die Vorteile von Chaostests sind:
- IT- und DevOps-Teams können Probleme schneller erkennen und beheben, die mit anderen Testmethoden möglicherweise nicht erfasst werden.
- Ungeplante Ausfallzeiten und Störungen treten dank proaktiver und kontinuierlicher Tests deutlich seltener auf.
- Stärkt die Systemintegrität
- Ideal für große, komplexe Systeme (z. B. Cloud-basierte Anwendungen und Dienste) sowie für die Skalierung
Chaos-Testing ist jedoch möglicherweise nicht geeignet für:
- Kleinere Systeme oder Desktop-Software
- Anwendungen und Dienste, die für den Erfolg des Unternehmens nicht geschäftskritisch sind.
- Anwendungsumgebungen, die keine 24/7-Verfügbarkeit gemäß Kunden-SLAs erfordern
- Systeme, bei denen Fehler akzeptabel sind, sofern sie bis zum Ende des Tages behoben werden.
Wie funktioniert Chaos-Testing in DevOps?
Chaos Engineering fügt sich nahtlos in eine DevOps-Struktur ein. Typischerweise fällt die Verantwortung für Chaos Engineering in den Aufgabenbereich eines DevOps-Ingenieurs, beispielsweise des XA (Experience Assurance Professional). Dieser ist zuständig für die Definition der verschiedenen Testszenarien, die Durchführung der Tests und die Nachverfolgung der Ergebnisse. Zudem trägt er die Verantwortung dafür, die Auswirkungen auf den Kunden so gering wie möglich zu halten.
Beim Testen muss der DevOps-Ingenieur einen schmalen Grat beschreiten. Einerseits gilt es, die Systemintegrität zu prüfen, indem man absichtlich Chaos erzeugt und versucht, einen Systemabsturz herbeizuführen (weshalb dies am besten in einer Produktionsumgebung durchgeführt wird). Andererseits gilt es, ungeplante oder unkontrollierte Tests durchzuführen, die tatsächlich zum Systemabsturz führen und die Benutzererfahrung beeinträchtigen.
Wie man mit Chaos-Testing beginnt
Sie möchten Chaos-Tests für Ihr eigenes System durchführen? Bevor Sie gleich ein ganzes Team von Chaos-Experten einsetzen, sollten Sie zunächst prüfen, ob Chaos-Testing und Chaos Engineering für Ihr Team und Ihr Unternehmen geeignet sind. Chaos Engineering hat sich als äußerst effektiv erwiesen, um die Integrität sehr großer und komplexer Systeme zu verbessern. Es bietet Vorteile wie schnellere Reaktionszeiten bei Störungen, weniger ungeplante Ausfallzeiten und maximale Flexibilität bei der Skalierung. Für kleinere Systeme oder Desktop-Software sind Chaos-Tests jedoch möglicherweise nicht erforderlich.
Wenn Sie mehr über Chaos Engineering erfahren möchten und wie Sie es in Ihrem Unternehmen implementieren können, zögern Sie bitte nicht, uns online zu kontaktieren oder Starten Sie noch heute Ihre 14-tägige kostenlose Testphase.