Mein IBM Anmelden Abonnieren

Was ist Chaos-Engineering?

3. August 2023

Chaos-Engineering ist das absichtliche und kontrollierte Herbeiführen von Fehlern in der Produktions- oder Vorproduktionsumgebung, um deren Auswirkungen zu verstehen und eine bessere Verteidigungshaltung und Wartungsstrategie für Zwischenfälle zu planen.

Jeden Tag besteht die Möglichkeit, dass eine kritische Anwendung oder Infrastruktur eines Unternehmens ausfällt und damit die Bereitstellung von Services für Kunden gefährdet. Die Ursachen für einen Ausfall können vielfältig sein, z. B. Sicherheitsverletzungen, Fehlkonfigurationen oder Service-Unterbrechungen. Die Wahrscheinlichkeit von Fehlern oder Unterbrechungen kann steigen, wenn mehr Anwendungen und Daten in der Cloud gehostet werden, was zu einer Zunahme von Sicherheitsproblemen führen kann.

Eine Möglichkeit, mit Störungen umzugehen, ist Chaos Engineering. Es handelt sich nicht um einen zufälligen Prozess, bei dem Techniker Instanzen oder Dienste beenden oder anderweitig Systeme ohne jeglichen Zweck zum Ausfall bringen. Dieser Prozess identifiziert potenzielle zukünftige Probleme und ermöglicht es den Ingenieurteams, Probleme proaktiv zu lösen und sie später in der Live-Umgebung zu vermeiden.

Chaos-Engineering ist wichtig, denn ein Fehler oder eine Unt rbrechung kann ein Unternehmen ausbremsen. Dabei wird wertvolle Zeit darauf verwendet, eine Lösung zu finden, während die Ausfallzeit immer länger wird. Netflix lernte dieses Konzept aus erster Hand, als das Unternehmen im Jahr 2008 von einem lokalen System in die Cloud1 wechselte – es kam zu einem Ausfall, der zu einer dreitägigen Unterbrechung der Service-Bereitstellung führte.

Dieser Ausfall erfolgte vor seiner Transformation als Video-Streaming-Anbieter, wodurch der Ausfall exponentiell teurer geworden wäre. Daraufhin beschloss Netflix, alles zu tun, um Störungen zu minimieren, und führte Chaos Engineering in seine Arbeitsabläufe ein. Dieser Prozess ermöglicht es, Probleme zu erkennen, bevor sie auftreten, und den Schaden zu minimieren, wenn ein unvermeidbarer Ausfall eintritt.

Netflix hat Chaos Monkey2 entwickelt, ein Open-Source-Tool, das zufällige Vorfälle in IT-Diensten und -Infrastrukturen erzeugt und so Schwachstellen aufdecken soll, die durch automatische Wiederherstellungsverfahren behoben oder behoben werden können. Sie implementierten Chaos Monkey, als das Unternehmen von einem privaten Rechenzentrum zu Amazon Web Services (AWS) umzog, um auf die Unzuverlässigkeit der Cloud zu reagieren. Viele Unternehmen nutzen mittlerweile Chaos Monkey, um ihre Chaos-Engineering-Tests durchzuführen.

Chaos Engineering ist ein wichtiger Schutz vor Infrastrukturausfällen, Ausfällen oder fehlenden Komponenten in der Produktionsumgebung eines Unternehmens. Es hilft Site Reliability Engineers (SREs) und anderen Mitgliedern des DevOps-Teams dabei, eine kontinuierliche Bereitstellung von Services zu gewährleisten, indem erhebliche Unterbrechungen ihres Services vermieden werden. Chaos Engineering hilft ihnen, ihre Schwachstellen besser zu verstehen und gibt ihnen Hinweise, wie sie die Auswirkungen einer Störung minimieren können.

Selbst ein kleines Problem im Code kann angesichts der verschiedenen Programmabhängigkeiten katastrophale Auswirkungen auf die gesamte Produktionsumgebung haben. Ein Fehler im Transaktionssoftwaresystem für ein Finanzdienstleistungsunternehmen kann beispielsweise zu einem Verlust von Millionen von Dollar führen3 .

Unternehmen können vielleicht nicht alle IT-Vorfälle vermeiden, aber sie können den Schaden minimieren, indem sie das Chaos-Management nutzen, um wahrscheinliche Szenarien und deren bestmögliche Lösungen zu verstehen.

3D-Design aus Kugeln, die auf einer Schiene rollen

Die neuesten Erkenntnisse und Insights zu KI

Entdecken Sie von Experten kuratierte Erkenntnisse und Neuigkeiten zu KI, Cloud und mehr im wöchentlichen Newsletter Think. 

Welche Unternehmen profitieren vom Chaos-Engineering?

Unternehmen mit hoher Resilienz, digital ausgereiften Systemen und guter Observability durch Dashboards und andere Tools sollten Chaos-Engineering nutzen, da sie sofort auf Probleme reagieren können, die durch Experimente entstehen. Unternehmen, denen diese Observability4 fehlt, brauchen möglicherweise zu lange, um die Experimente abzuschließen, die sie durch Chaos Engineering erstellt haben.

Chaos Engineering ist auch ein Muss für Unternehmen, die Clouds, insbesondere öffentliche Clouds und cloudnative Anwendungen, nutzen. Die Public Cloud bringt potenzielle Ausfallprobleme mit sich, die eine Koordination mit dem Cloud-Provider erfordern, was eine andere Herangehensweise als bei On-Premises-Problemen erfordert.

Laut Constellation Research5 behandeln Unternehmen, die Cloud nutzen, IT-Vorfälle immer noch häufig ohne Berücksichtigung der unterschiedlichen Auswirkungen von Cloud und Software-as-a-Service (SaaS) auf diese Vorfälle.

Darüber hinaus schafft die zunehmende Verwendung von Microservices, die die Anzahl der in einem System ausgeführten Hosts oder Container erhöhen, einzigartige Herausforderungen, die durch Chaos-Experimente aufgedeckt und gelöst werden können. Die Komplexität wird vom Code-Design in den Systembetrieb verlagert, was die Komplexität zwar nicht beseitigt, aber eine stärkere Automatisierung ermöglicht.

Chaos Engineering kann Unternehmen auch dabei helfen, die Geschwindigkeit ihrer Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) zu erhöhen. Die Integration von Chaos Engineering in CI/CD, wie es bei Netflix6, ermöglicht es Unternehmen, kontinuierliche Experimente zu automatisieren und gleichzeitig deren mögliche Auswirkungen zu kontrollieren.

Und schließlich bedeutet die Tatsache, dass Unternehmen zunehmend über APIs mit Partnern in Verbindung stehen, dass ein Problem in ihren Systemen auch Auswirkungen auf andere Unternehmen haben kann. Der Einsatz von Chaos Engineering hilft Unternehmen, die Schwachstellen in ihrer Architektur zu erkennen und zu beheben, wodurch sie schließlich zukünftige Ausfälle vorhersehen können.

Erfolgreiches Chaos-Engineering hilft Unternehmen, technische Ausfälle mit erheblichen Auswirkungen auf den Kunden zu minimieren, und unterstützt den Aufbau stärkerer und widerstandsfähigerer komplexer Systemarchitekturen. Sobald sich ein Unternehmen für Chaos-Engineering entschieden hat, ist der nächste Schritt die Entscheidung, ob es in der Vorproduktions- oder Produktionsumgebung ausgeführt werden soll.

AI Academy

Der Aufstieg der generativen KI für Unternehmen

Erfahren Sie mehr über den historischen Aufstieg der generativen KI sowie darüber, was sie für Unternehmen bedeutet.

Arten von Chaos-Engineering-Experimenten

DevOps-Teams haben mehrere Möglichkeiten, Chaos-Engineering-Experimente durchzuführen, um verschiedene Systemprozesse zu testen.

  • Latenz-Injektion: DevOps-Teams erstellen absichtlich Szenarien, die eine langsame oder fehlgeschlagene Netzwerkverbindung emulieren. Dazu gehören Netzwerkverzögerungen oder langsamere Reaktionszeiten.
  • Fehlerinjektion: Dabei werden absichtlich Fehler in das System eingebracht, um festzustellen, wie sie sich auf andere abhängige Systeme auswirken und ob sie die Services unterbrechen. Beispiele für Fehlerinjektionen sind das Verursachen von Festplattenfehlern, das Beenden von Prozessen, das Herunterfahren eines Hosts oder das Einführen von Leistungs- oder Temperaturerhöhungen. Fehlerinjektionen können Unternehmen dabei helfen, einzelne Fehlerquellen zu identifizieren, die im Falle eines Fehlers zum Ausfall des gesamten Systems führen können.
  • Lastgenerierung: Dies bedeutet, dass das System absichtlich belastet wird, indem ein erhebliches Volumen an Datenverkehr weit über den normalen Betrieb hinaus gesendet wird. Dies unterstützt die Site Reliability Engineers (SREs) dabei, Engpässe im System zu verstehen, was es ihnen ermöglicht, skalierbarere Systeme zu entwickeln.
  • Canary-Tests: Dabei wird ein neues Produkt oder eine neue Funktion für eine kleine Gruppe von Benutzern veröffentlicht. Auf diese Weise wirken sich Störungen oder Bugs nur auf einen Prozentsatz der Besucher aus, sodass der Rest der Zielgruppe auf das bestehende Website-Angebot zugreifen kann.

 

Best Practices für das Chaos-Engineering 

Die Erstellung eines idealen Chaos-Engineering-Prozesses erfordert mehrere Prinzipien, um sicherzustellen, dass eine Organisation ein verteiltes System im großen Maßstab einsetzen kann.

  • Verstehen des Systems: Dazu gehört umfassendes Wissen über das gesamte System, seine neuen Eigenschaften und Funktionen sowie seine Topologie, Architektur, Abhängigkeiten, sein Verhalten im stabilen Zustand, seine Ausgabereaktion und Merkmale wie Verfügbarkeit, Latenz und Durchsatz.
  • Akzeptieren von Fehlern: Auf den ersten Blick scheint es paradox zu sein, dass Softwareingenieure einen Vorfall herbeiführen, obwohl sie eigentlich darauf eingestellt sind, solche Vorfälle zu verhindern. Allerdings wird es bei IT-Services immer wieder zu Störungen kommen, und es ist besser, sie in einer kontrollierten Umgebung zu erleben, um präventiv eine Lösung zu finden, als nach Feierabend, wenn das Team eines Unternehmens nicht arbeitet, oder wenn das Team noch nie mit diesem speziellen Problem konfrontiert war.
  • Bestimmen des Verhaltens im stabilen Zustand: Zunächst muss das technische Team definieren, wie sich das System bei korrektem Betrieb verhalten soll. Nur so kann man vergleichen, wie sich Experimente auf diesen stabilen Zustand auswirken.
  • Identifizierung von realistischen Vorfällen: Chaos-Engineering-Experimente sollten sich so nah wie möglich an dem halten, was an einem normalen Tag möglicherweise passiert, anstatt unwahrscheinliche Situationen zu simulieren. Netzwerk- und Infrastrukturausfälle, fehlerhafter Code, Stromprobleme und Überlastung durch zu viel Datenverkehr sind mögliche Vorfälle.
  • Erstellen Sie einen Game-Day: Das Chaos-Engineering-Team kann die Umgebung an einem Game-Day testen, an dem an einem bestimmten Tag mehrere Tests durchgeführt werden, um die Ressourcen zu maximieren und so viele Probleme wie möglich zu identifizieren und zu lösen.
  • Nutzung von Automatisierung: Unternehmen jeder Größe können Chaos Engineering nutzen, indem sie Experimente automatisieren, bei denen eine manuelle Durchführung zu aufwändig wäre. Dadurch wird die Belastung der IT-Teams während des Chaos-Engineering-Prozesses teilweise verringert. Experimentiergestaltung, Fehlerinjektion und Infrastruktur bereitstellen sind alles Aspekte der Experimentation, die Organisationen automatisieren können.
  • Berücksichtigung des Explosionsradius: Beim Chaos-Engineering ist es wichtig, darauf zu achten, dass der Explosionsradius möglichst klein ist, sodass die Schäden für die Kunden so gering wie möglich sind. Einige Möglichkeiten zur Minimierung des Explosionsradius sind:
    • Konzentration auf eine Teilmenge von Services: Chaos-Engineering, insbesondere in einer Produktionsumgebung, sollte den Service eines Unternehmens nicht grundlegend stören. Wenn Sie eine bestimmte Untergruppe von Services anvisieren, können Sie die Auswirkungen eines Vorfalls minimieren und sicherstellen, dass er nicht das gesamte System lahmlegt.
    • Durchführung des Experiments für eine begrenzte Zeit: Das Experiment sollte einen Anfang und ein Ende haben. Der Sinn des Experiments besteht darin, einen Vorfall zu verursachen und ihn zu lösen, anstatt ihn für eine lange Zeit unkontrolliert laufen zu lassen.
    • Führen Sie das Experiment außerhalb der Hauptverkehrszeit durch: Unternehmen sollten versuchen, Experimente nicht während der Peak durchzuführen, es sei denn, sie wollen gezielt messen, wie sich eine hohe Kapazität während eines Vorfalls auf das System auswirkt.
    • Führen Sie das Experiment in der Entwicklungsumgebung durch: Das einfachste Mittel, um sicherzustellen, dass keine Kunden von einer Serviceunterbrechung betroffen sind, ist der Betrieb in der Vorproduktionsumgebung. Das bedeutet jedoch, dass sich die Bedingungen von denen der Produktionsumgebung unterscheiden und möglicherweise ein falsches Bild von den Vorgängen vermitteln. Um dies zu minimieren, stellen Sie sicher, dass Ihre Vorproduktions- und Produktionsumgebungen sich so weit wie möglich ähneln.
    • Experimente mit jeder Komponente: Chaos-Experimente hören nie auf, da sich das System einer Organisation ständig verändert. Außerdem sollte das Ziel sein, „alles“ zu testen - alle Komponenten, Schichten, Dienste und ihre Abhängigkeiten während des gesamten Prozesses zu untersuchen.

Produktionsumgebungen im Vergleich zu Vorproduktionsumgebungen

Ein Unternehmen, das Chaos Engineering einsetzt, muss sich entscheiden, ob es Chaos-Tests in seiner Produktions- oder Vorproduktionsumgebung einsetzen will. Es gibt mehrere Gründe, warum Chaos Engineering in Produktionsumgebungen am vorteilhaftesten ist.

Live-Umgebungen bieten die genaueste Umgebung, um zu verstehen, wie sich ein Vorfall auf die Customer Experience auswirkt. Ein weiterer Grund ist, dass die Vorproduktionsumgebung möglicherweise nicht genau die gleichen Einstellungen wie die Live-Umgebung hat, was zu einer gewissen Variabilität bei den Experimenten führt.

So kann beispielsweise ein Vorfall in einer Vorproduktionsumgebung keine realistische Reaktion hervorrufen, weil das Verkehrsaufkommen nicht dem der Live-Umgebung entspricht. Die Vorproduktionsumgebung hat möglicherweise nicht die gleichen Sicherheitskonfigurationen wie die Live-Umgebung.

Einige Unternehmen befürchten, absichtlich Probleme mit ihrer Live-Website zu verursachen, und führen daher ihre Experimente auf ihrer Vorproduktions- oder Entwicklungs-Website durch. Dadurch wird sichergestellt, dass auftretende Probleme die Live-Customer-Experience nicht beeinträchtigen. Um dies zu umgehen, verwenden einige Unternehmen zunächst Vorproduktionsumgebungen, um den Prozess in den Griff zu bekommen, bevor sie in die Live-Produktionsumgebung wechseln.

Unternehmen entscheiden anhand ihrer Risikobereitschaft, welche Umgebung sie nutzen. Das Ziel des Chaos Engineerings ist es, tatsächliche Probleme im großen Maßstab zu testen, weshalb Produktionsumgebungen ein möglichst genaues Bild davon vermitteln, was passiert und was behoben werden muss.

Vorteile von Chaos-Engineering

Chaos-Engineering bietet Unternehmen mehrere entscheidende Vorteile.

Besserer Kundenservice

Kunden haben hohe Erwartungen an die Verfügbarkeit der Services, die sie von Unternehmen beziehen. Jede Ausfallzeit oder die Unmöglichkeit, auf das zuzugreifen, wofür sie bezahlt haben, kann sich ernsthaft auf die Kundenzufriedenheit auswirken und zu Umsatzeinbußen und Reputationsschäden führen. Durch das Testen von Systemen und die Ermittlung von Lösungen wird das Risiko verringert, dass ein System über einen längeren Zeitraum ausfällt.

Verbesserte Datensicherheit

Störungen können durch fehlerhaften Code, Serverprobleme oder externe Bedrohungen verursacht werden. Letztere können selbst bei ausgezeichneten Sicherheitsmaßnahmen auftreten. Chaos Engineering hilft dabei, Probleme zu identifizieren, die ausgenutzt werden können, sodass Unternehmen Patches- und Bug-Fixes einführen können, um ihre Dienste zu schützen.

Minimierte Ausfallzeiten

Chaos Engineering ermöglicht es Unternehmen, einen fundierten Plan für die Bewältigung zukünftiger Probleme zu erstellen. Unternehmen, die Chaos Engineering einsetzen, verfügen über spezifische Pläne für viele Vorfälle, wodurch diese sich schneller beheben lassen und die Ausfallzeiten kürzer werden. Chaos Engineering kann die Ausfallzeiten7 um bis zu 20 % verringern.

Höhere Skalierbarkeit

Chaos-Engineering-Experimente ermitteln, wie ein System Ressourcen zuweist. Die Einführung von Experimenten zeigt, wie das System mit Belastungen umgeht und wo Engpässe bestehen oder wahrscheinlich auftreten werden.

Informationen für die zukünftige Softwareentwicklung

Chaos-Engineering hilft Teams dabei, ihre Software robuster und flexibler zu gestalten. Daher können Unternehmen die Programmierung neuer Software und Lösungen klüger angehen, weil sie wissen, wie das aktuelle System Probleme behandelt.

Weiterführende Lösungen

Weiterführende Lösungen

Business Consulting Services

Transformationen in Business und Technologie definieren Arbeitsweisen neu und setzen Agilität im Unternehmen frei.

    Business Consulting Services erkunden
    Beratung zur Personal- und Talenttransformation

    Überdenken und modernisieren Sie HR mit KI als Kernstück, um bessere Geschäftsergebnisse zu erzielen und das volle Potenzial Ihrer Mitarbeiter freizusetzen.

    HR-Transformationsservices erkunden
    Finanzberatung

    Erschließen Sie die finanzielle Leistung und den Geschäftswert mit End-to-End-Services, die Datenanalysen, KI und Automatisierung in Kernprozesse einfließen lassen.

      Erkunden Sie Finanzlösungen
      Machen Sie den nächsten Schritt

      Erweitern und transformieren Sie Ihr Unternehmen mit einer neuen Unternehmensstrategie und Arbeitsweise.

      Entdecken Sie Dienstleistungen für Geschäftsstrategien Erkunden Sie die Services im Bereich der künstlichen Intelligenz
      Fußnoten

      1 Chaos Engineering: System-Resilienz in Practice (Link befindet sich außerhalb von ibm.com), Casey Rosenthal, Nora Jones, 2020.
      What is Chaos Monkey? Chaos engineering explained (Link befindet sich außerhalb von ibm.com), InfoWorld, 13. Mai 2020.
      Knight Capital beziffert Handelsfehler auf 440 Millionen USD (Link außerhalb von ibm.com), New York Times, 2012.
      4 Es gibt keine Resilienz ohne Chaos (Link befindet sich außerhalb ibm.com), Der neue Stack, 13. April 2023.
      5 Incident Management im Cloud-Zeitalter (Link befindet sich außerhalb ibm.com), Constellation Research, 2023.
      6 ChAP: Chaos Automation Platform (Link befindet sich außerhalb von ibm.com), Netflix-Blog, 26. Juli 2017.
      7 The I&O Leader's Guide to Chaos Engineering (Link befindet sich außerhalb ibm.com), Gartner, 28. Oktober 2021.