Zum Hauptinhalt springen

Chaos Engineering - Dinge absichtlich kaputt machen

· 4 Minuten Lesezeit
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Chaos-Engineering-Dinge-absichtlich-kaputt-machen
Chaos-Engineering-Dinge-absichtlich-kaputt-machen

"Not macht erfinderisch" - und so ist Netflix nicht nur eine Online-Streaming-Plattform. Aus dieser Notwendigkeit heraus hat Netflix das Chaos Engineering geboren.

2008 erlitt Netflix eine schwerwiegende Datenbankbeschädigung. Drei Tage lang konnten keine DVDs ausgeliefert werden. Dies veranlasste die Netflix-Ingenieure, über die Migration ihrer monolithischen Architektur zu einer verteilten Cloud-Architektur nachzudenken.

Die neue verteilte Architektur von Netflix bestand aus Hunderten von Microservices. Die Migration löste das Single-Point-of-Failure-Problem, führte aber zu neuen Komplexitäten, die ein zuverlässigeres und fehlertoleranteres System erforderten. An diesem Punkt entwickelten Netflix-Ingenieure eine innovative Idee, um die Fehlertoleranz des Systems zu testen, ohne den Kundenservice zu beeinträchtigen.

Sie schufen Chaos Monkey: Ein Tool, das zu unterschiedlichen Zeiten an verschiedenen Stellen zufällige Ausfälle verursacht. Mit der Entwicklung von Chaos Monkey entstand eine neue Disziplin: Chaos Engineering.

"Chaos Engineering ist die Disziplin, Experimente an einem System durchzuführen, um Vertrauen in dessen Fähigkeit zu schaffen, turbulente Produktionsbedingungen zu überstehen." - Prinzipien des Chaos

Chaos Engineering ist ein Ansatz, um das Systemverhalten durch empirische Untersuchung zu verstehen. Ähnlich wie Wissenschaftler Experimente durchführen, um physikalische oder soziale Phänomene zu studieren, nutzt Chaos Engineering Experimente, um die Zuverlässigkeit, Stabilität und Überlebensfähigkeit eines Systems unter unerwarteten Bedingungen zu erforschen.

Bei großskaligen verteilten Systemen können Ausfälle durch zahlreiche Faktoren verursacht werden: Anwendungsfehler, Infrastrukturausfälle, Abhängigkeitsprobleme, Netzwerkstörungen und mehr. Herkömmliche Methoden wie Integrationstests oder Unit-Tests decken diese nicht vollständig ab, weshalb Chaos Engineering unverzichtbar wird:

  • Zur Steigerung der Systemresilienz

  • Zum Aufdecken versteckter Bedrohungen und Schwachstellen

  • Zur Identifizierung von Systemschwächen bevor sie Produktionsausfälle verursachen

Viele denken, sie seien nicht so groß wie Netflix oder andere Tech-Giganten und hätten keine Systeme in diesem Maßstab.

Das mag stimmen, doch Chaos Engineering hat sich weiterentwickelt und ist längst nicht mehr auf digitale Unternehmen wie Netflix beschränkt. Immer mehr Unternehmen verschiedener Branchen setzen Chaos-Experimente ein, um konsistente Leistung und ständige Verfügbarkeit ihrer Systeme zu gewährleisten.

Chaos-Mesh

Hinweis

2022-10-24: Aufgrund von https://www.oreilly.com/online-learning/leveraging-katacoda-technology.html und Bezugnahme auf #356 ist das interaktive Tutorial vorübergehend nicht verfügbar.

Um die Resilienz und Zuverlässigkeit von TiDB zu testen, entwickelten Ingenieure bei PingCAP ein hervorragendes Tool für Chaos-Tests: Chaos Mesh. Diese cloud-native Chaos-Engineering-Plattform orchestriert Chaos in Kubernetes-Umgebungen und berücksichtigt mögliche Fehler in verteilten Systemen - von Pods über Netzwerke bis zu System-I/O und Kernel.

Chaos Mesh bietet zahlreiche Fehlerinjektionsmethoden:

  • clock-skew: Simuliert Uhrenabweichungen

  • container-kill: Simuliert das Abbrechen von Containern

  • cpu-burn: Simuliert CPU-Auslastung

  • io-attribution-override: Simuliert Datei-Exceptions

  • io-fault: Simuliert Dateisystem-I/O-Fehler

  • io-latency: Simuliert Dateisystem-I/O-Latenz

  • kernel-injection: Simuliert Kernel-Fehler

  • memory-burn: Simuliert Speicherauslastung

  • network-corrupt: Simuliert Netzwerkpaket-Korruption

  • network-duplication: Simuliert Netzwerkpaket-Duplikation

  • network-latency: Simuliert Netzwerklatenz

  • network-loss: Simuliert Netzwerkverluste

  • network-partition: Simuliert Netzwerkpartitionierung

  • pod-failure: Simuliert andauernde Nichtverfügbarkeit von Kubernetes-Pods

  • pod-kill: Simuliert das Abstürzen von Kubernetes-Pods

Chaos Mesh konzentriert sich besonders auf die Einfachheit der Durchführung von Chaos-Tests, sodass sie schnell durchführbar und für jeden Nutzer leicht verständlich sind.

Das kürzliche Release 1.0 macht das Chaos Dashboard allgemein verfügbar, das die Komplexität von Chaos-Experimenten vereinfacht. Mit wenigen Mausklicks können Sie im Dashboard den Umfang des Experiments festlegen, die Art der Chaos-Injektion spezifizieren, Zeitplanungsregeln definieren und Ergebnisse beobachten – alles innerhalb des Chaos Mesh Dashboards.

Falls Sie Chaos Mesh direkt im Browser testen möchten, probieren Sie das Katakoda interactive tutorial aus, wo Sie Chaos Mesh ohne Installation ausführen können. Um die Designprinzipien und Funktionsweise von Chaos Mesh zu verstehen, lesen Sie diesen Blogbeitrag der Projekt-Maintainerin Cwen Yin.

Werden Sie Teil der Community

Jeder, der Chaos Engineering oder Chaos Mesh erkunden möchte, ist herzlich eingeladen, unserer Community beizutreten. Als Mitglied der Chaos-Mesh-Community kann ich bestätigen, dass es eine lebendige Gemeinschaft ist, in der die Projekt-Maintainer aktiv auf Ihre Ideen und Verbesserungsvorschläge eingehen.

Um beizutreten und mehr über Chaos Mesh zu erfahren, finden Sie den Kanal #project-chaos-mesh im CNCF Slack Workspace.