Lassen Sie uns herausfinden, wie Sie Ihre Produktion mit Hilfe von Chaos Engineering Tools zuverlässig halten können.
Chaos Engineering ist eine Disziplin, bei der Sie mit Ihrem System oder Ihrer Anwendung experimentieren, um seine Schwächen und Kapazitätsausfälle aufzudecken. Das sind Dinge, von denen Sie bei der Entwicklung nicht dachten, dass sie auftreten könnten. Sie lösen also absichtlich einige Fehler in Ihrem System aus, um dessen Schwächen aufzudecken und Ihr System und Ihre Anwendung widerstandsfähiger zu machen.
Viele bekannte Unternehmen wie Netflix, LinkedIn und Facebook führen Chaos Engineering durch, um ihre Microservices-Architektur und verteilten Systeme besser zu verstehen. Es hilft dabei, neue Probleme früher als echte Benutzerbeschwerden zu finden und die notwendigen Maßnahmen zu ergreifen, um sie zu beheben. Auf diese Weise können diese Organisationen Millionen von Benutzern bedienen, ihre Produktivität steigern und Millionen von Dollar sparen 🤑.
Vorteile von Chaos Engineering:
- Eindämmung von Umsatzverlusten durch Auffinden kritischer Probleme
- Reduzierung von System- oder Anwendungsausfällen
- Bessere Benutzererfahrung mit weniger Unterbrechungen und hoher Serviceverfügbarkeit
- Es hilft Ihnen, das System kennenzulernen und Vertrauen zu gewinnen.
Wie viel Vertrauen haben Sie in die Zuverlässigkeit Ihrer Produktion? Ist sie wirklich katastrophensicher?
Lassen Sie es uns mit Hilfe der folgenden beliebten Chaostest-Tools herausfinden.
Chaos Mesh
Chaos Mesh ist eine Chaos-Engineering-Management-Lösung, die Fehler in jede Schicht eines Kubernetes-Systems injiziert. Dazu gehören Pods, das Netzwerk, System-E/A und der Kernel. Chaos Mesh kann Kubernetes-Pods automatisch abschalten und Latenzen simulieren. Es kann die Pod-zu-Pod-Kommunikation unterbrechen und Lese-/Schreibfehler simulieren. Es kann Regeln für die Experimente festlegen und deren Umfang definieren. Diese Experimente werden mithilfe von YAML-Dateien festgelegt.
Chaos Mesh verfügt über ein Dashboard zur Anzeige von Analysen zu Experimenten. Es läuft auf Kubernetes und unterstützt die Mehrzahl der Cloud-Plattformen. Es ist Open-Source und wurde kürzlich als CNCF-Sandbox-Projekt akzeptiert. Mithilfe der Chaos-Engineering-Prinzipien können Sie Chaos Mesh in Ihren DevOps-Workflow integrieren, um widerstandsfähige Anwendungen zu erstellen.
Chaos Engineering Merkmale:
- Einfacher Einsatz in Kubernetes-Clustern ohne Änderung der Einsatzlogik
- Für die Bereitstellung sind keine besonderen Abhängigkeiten erforderlich
- Definiert Chaos-Objekte mithilfe von CustomResourceDefinitions (CRD)
- Bietet ein Dashboard zur Verfolgung aller Experimente
Chaos-ToolKit
Chaos ToolKit ist ein einfaches Open-Source-Tool für die Automatisierung von Chaos Engineering Experimenten.
Sie integrieren Chaos ToolKit mit Hilfe einer Reihe von Treibern oder Plugins in Ihr System. Es unterstützt AWS, Google Cloud, Slack, Prometheus, usw.
Chaos ToolKit Eigenschaften:
- Bietet eine deklarative Open API zur Erstellung von Chaos-Experimenten unabhängig von einem Anbieter oder einer Technologie
- Kann leicht in CICD-Pipelines zur Automatisierung eingebettet werden
- Bietet kommerziellen und Unternehmens-Support auch durch ChaosIQ
ChaosKube
Wie der Name schon vermuten lässt, ist es für Kubernetes.
Chaoskube ist ein Open-Source-Chaos-Tool, das in regelmäßigen Abständen zufällige Pods im Kubernetes-Cluster abschießt. Es hilft Ihnen zu verstehen, wie Ihr System reagiert, wenn der Pod ausfällt. Standardmäßig wird alle 10 Minuten ein Pod in einem beliebigen Namespace ausgeschaltet. Sie können die Ziel-Pods in Chaoskube anhand von Namespaces, Labels, Annotationen usw. filtern. Es kann einfach mit Chaoskube installiert werden.
Chaos Monkey
Chaos Monkey ist ein Tool, mit dem Sie die Ausfallsicherheit von Cloud-Systemen überprüfen können, indem Sie absichtlich Ausfälle für diese Systeme erzeugen, um deren Reaktion zu verstehen. Netflix hat es entwickelt, um die Ausfallsicherheit und Wiederherstellbarkeit seiner AWS-Infrastruktur zu testen. Es wurde Chaos Monkey genannt, weil es wie ein wilder und bewaffneter Affe Zerstörung verursacht, um die Ausfälle zu testen.
Chaos Monkey war auch die Geburtsstunde der neuen Ingenieurspraxis Chaos Engineering. Es wurde nach dem Prinzip entwickelt, dass es besser ist, wiederholt zu scheitern, um ein plötzliches Versagen zu vermeiden.
Chaos Monkey Funktionen:
- Es hilft Ihnen, sich auf zufällige Instanzausfälle vorzubereiten.
- Ermutigt zu Redundanz für unerwartete Ausfälle
- Verwendet Spinnaker, um Cloud-übergreifende Kompatibilität zu ermöglichen
- Bietet einen konfigurierbaren Zeitplan, um Ausfälle zu simulieren
- Integriert mit Govendor, um Chaos Monkey neue Abhängigkeiten hinzuzufügen
Simmy
Simmy ist ein Fault-Injection-Chaos-Tool, das in das Polly Resilience-Projekt für .NET integriert ist. Es ermöglicht Ihnen die Erstellung von Chaos-Injection-Policies über Polly, wo Sie Ihre Codes ausführen. Es bietet verschiedene Richtlinien, wie z.B. die Ausnahmen-Richtlinie, um Ausnahmen in das System zu injizieren, die Verhaltens-Richtlinie, um ein neues Verhalten zu injizieren, usw. Diese Richtlinien sind so konzipiert, dass das Verhalten zufällig injiziert wird.
Simmy-Funktionen:
- Bietet Monkey-Policies oder Chaos-Policies, um Chaos zu injizieren
- Einfaches Testen von Abhängigkeitsfehlern
- Es hilft, schnell zum Arbeitsmodell zurückzukehren und kontrolliert den Explosionsradius.
- Es ist produktionstauglich.
- Es kann auch Ausfälle definieren, die auf externen Faktoren beruhen (z.B. Ausfälle aufgrund einer globalen Konfiguration)
Pystol
Pystol ist ein Tool, das für fehlerhafte Injektionen in Cloud-nativen Umgebungen verwendet wird. Es überwacht Ereignisse in der ETCD über Kubernetes-Operatoren. Wenn eine Fault-Injection-Aktion ausgeführt wird, erstellen die Operatoren die Pods und führen einige Ansible-Sammlungen aus. Entwickler brauchen also keine eigenen Aktionen zu schreiben, um sie auszuführen.
Pystol bietet vorgefertigte Aktionen zum Testen des Systems. Wenn ein Entwickler jedoch eine neue Aktion erstellen möchte, kann er dies mit GoLang und Python tun.
Pystol bietet ein Dashboard für die kontinuierliche Integration, das einen Überblick über alle Arbeitsvorgänge gibt. Sie können Pystol lokal ausführen oder es mit seinem Docker-Image in einem Container bereitstellen. Pystol bietet zwei Schnittstellen, eine Web UI und eine CLI. Offensichtlich ist die Web UI die bessere Option.
Muxy
Muxy ist ein Proxy, mit dem Sie Ihre Ausfallsicherheit und Fehlertoleranzmuster für reale Ausfälle verteilter Systeme testen können. Er kann die Transportebene (Schicht 4), die TCP-Sitzungsebene (Schicht 5) und die HTTP-Protokollebene (Schicht 7) manipulieren.
Muxy-Funktionen:
- Modulare Architektur und leicht erweiterbar
- Hat einen offiziellen Docker-Container
- Einfach zu installieren, keine Abhängigkeiten erforderlich.
- Ideal für kontinuierliche Tests der Ausfallsicherheit
- Simuliert Netzwerkkonnektivitätsprobleme für verteilte Systeme und mobile Geräte
Pumba
Pumba ist ein Kommandozeilen-Tool, das Chaostests für Docker-Container durchführt. Mit Pumba lassen Sie die Docker-Container der Anwendung absichtlich abstürzen, um zu sehen, wie das System reagiert. Sie können auch Stresstests für die Container-Ressourcen wie CPU, Speicher, Dateisystem, Input/Output usw. durchführen.
Sie können Pumba auch auf einem Kubernetes-Cluster laufen lassen. Sie müssen DaemonSets verwenden, um Pumba auf Kubernetes-Knoten einzusetzen. Sie können mehrere Pumba-Container verwenden, um mehrere Pumba-Befehle in demselben DaemonSet auszuführen.
ChaosBlade
ChaosBlade ist ein Open-Source-Tool, um Experimente in die Systeme von Alibaba zu injizieren. Es testet alle Fehler, mit denen Alibaba in den letzten zehn Jahren konfrontiert war, und wendet Best Practices an, um sie zu vermeiden. Es folgt den Prinzipien des Chaos Engineering, um die Fehlertoleranz verteilter Systeme zu überprüfen.
ChaosBlade Funktionen:
- Bietet experimentelle Szenarien für mehrere Ressourcen wie CPU, Netzwerk, Speicher, Festplatte, usw.
- Bietet experimentelle Szenarien für Nodes, Netzwerke und Pods auf der Kubernetes-Plattform
- Bietet benutzerfreundliche CLI-Befehle zur Ausführung von Experimenten
Litmus
Litmus folgt den Prinzipien des Cloud-nativen Chaos Engineering. Die Aufgabe des Litmus-Tools ist es, ein komplettes Framework zum Auffinden von Schwachstellen in Ihren Kubernetes-Systemen und Ihren auf Kubernetes laufenden Anwendungen zu liefern.
Es verfügt über einen Chaos Operator und die CRDs (CustomResourceDefinitions), die das Plug-and-Play ermöglichen. Es geht nur darum, Ihre Chaoslogik in ein Docker-Image zu packen, es in ein Litmus-Framework zu werfen und es mit Hilfe der CRDs zu orchestrieren.
Litmus-Funktionen:
- Hilft Site-Reliability-Ingenieuren und Entwicklern, Schwachstellen im Kubernetes-System zu finden
- Bietet gebrauchsfertige generische Experimente
- Bietet eine Chaos-API für die Verwaltung von Chaos-Workflows
- Litmus SDK unterstützt Go, Python und Ansible, um eigene Experimente zu erstellen.
Gremlin
Gremlin hilft Ingenieuren, widerstandsfähigere Software zu entwickeln. Es bietet eine Plattform, um Chaos-Engineering-Experimente sicher und unkompliziert durchzuführen.
Mit Gremlin können Sie Hosts oder Containern auf durchdachte Weise Fehler zufügen, unabhängig davon, wo sie sich befinden, ob in der öffentlichen Cloud oder in Ihrem eigenen Rechenzentrum.
Gremlin-Funktionen:
- Installiert einen leichtgewichtigen Agenten auf Ihren Hosts oder Containern, um Ausfälle zu verursachen
- Bietet 10 verschiedene Angriffsmodi für die Infrastruktur
- Mit Zustands-Gremlins können Sie die Systemzeit manipulieren, Hosts herunterfahren oder neu starten und Prozessoren ausschalten.
- Netzwerk-Gremlins können Latenzzeiten einführen, um Paketverluste zu verursachen oder den Datenverkehr zu unterbrechen.
- Gremlins Angriffe aus der Alfi-Bibliothek können über die Web-App konfiguriert, gestartet und gestoppt werden. API oder CLI
- Ermöglicht es Ihnen, den Radius, den Sie angreifen möchten, genau festzulegen
- Ermöglicht es Ihnen, alle Angriffe zu stoppen und das System wieder in einen stabilen Zustand zu versetzen
Steadybit
Steadybit zielt darauf ab, Ausfallzeiten proaktiv zu reduzieren und bietet Einblick in Systemprobleme. Sie können dieses Tool lokal auf Ihrer Infrastruktur oder als Cloud-as-a-Service (SaaS) betreiben.
Um Steadybit zu nutzen, definieren Sie die Situation, simulieren die Experimente, führen die simulierten Experimente in der Produktion aus und automatisieren alle Experimente. Es lässt intelligente Agenten auf Ihrem System laufen, um potenzielle Probleme und Schwachstellen zu entdecken. Es lässt sich mühelos in mehrere Systeme integrieren.
Fazit
Seien Sie mutig genug, die Prinzipien des Chaos Engineering anzuwenden und Ihre Produktion mit den oben genannten Tools zu testen. Diese Tools werden Ihnen helfen, zahlreiche unentdeckte Schwachstellen in Ihrem System zu finden, und sie werden Ihnen helfen, Ihr System widerstandsfähiger zu machen.