Chaos Engineering für Menschen: Wie wir unser Incident-Response-Team gestärkt haben
By Devoxx · 2024-02-24
Chaos Engineering und Resilienztests sind entscheidend, um die Reaktionsfähigkeit unseres Incident-Response-Teams zu verbessern. In diesem Blog geht es um die Implementierung von Lebenszyklen in Unternehmensprozessen, die Simulation von Warnmeldungen und die Ergebnisse und Analysen unserer Bemühungen.
Chaos Engineering für Menschen
- Ted erwähnte in seiner ersten Rede bei der Konferenz die 'Götter der Informatik', aber es gibt auch Götter für Live-Demos und Präsentationen. Trotz einer Beleidigung seitens meines Teams geht es in der Präsentation um Chaos Engineering und wie es das Leben der Menschen verbessern kann.
- Chris gibt einen kurzen Überblick über seine berufliche Laufbahn bei XM und betont die hohe Anzahl an Kunden, globale Präsenz, mehrere Auszeichnungen als Arbeitsplatz und die Umfang der AWS-Dienste, die das Unternehmen nutzt.
- Das Unternehmen XM ist ein Online-Broker mit über 5 Millionen Kunden seit der Gründung. Es hat global verteilte Büros und fast tausend Mitarbeiter. Letztes Jahr erreichte es den zweiten Platz für seine Architektur und verwendet mehr als 60 Anwendungen in Kubernetes.
- Die Dienste von AWS, die XM nutzt, umfassen nicht nur die Standards, sondern auch zusätzliche wie Lambda, MSK und Glue. Außerdem setzt das Unternehmen auf Tools von Drittanbietern wie K-Pow, Axonius und Fluorescent Management.
- Das Unternehmen hat klare Standards für die Cloud, Resilienz und andere Aspekte, stellt jedoch die Frage, wie diese Dienste und Ressourcen genutzt werden, um das Leben der Mitarbeiter zu verbessern. Durch die Einführung von sechs Schritten, einschließlich Lebenszyklusrichtlinien, hat das Unternehmen seine Chaos Engineering-Methodologie erweitert.
Chaos Engineering für Menschen
Implementierung eines Lebenszyklus für Unternehmensprozesse
- Die Implementierung eines Lebenszyklus in unsere Unternehmensprozesse ist entscheidend, um sicherzustellen, dass keine Fehler übersehen werden.
- Die Verwendung von Lebenszyklen dient dazu, nichts zu übersehen, da wir alle unter einer starken Arbeitslast stehen und jede Handlung weitere Aufgaben generiert.
- Beispiele für die Anwendung eines Lebenszyklus sind die Lösungsentwicklung, Leistungsüberprüfungen und manchmal auch Anwendungsüberprüfungen.
- Des Weiteren werden Simulationen von AC-Ausfällen, Portlöschungen, Anforderungsschwärmen und Service-Desk-Labs durchgeführt, um auf verschiedene Szenarien vorbereitet zu sein.
Implementierung eines Lebenszyklus für Unternehmensprozesse
Implementierung einer Lösung für das Simulieren von Warnmeldungen
- Der Service-Desk-Manager bat um die Möglichkeit, bestimmte Warnmeldungen zu simulieren, ohne dass die Ingenieure oder Agenten darüber informiert werden.
- Daraufhin wurde eine Lösung mithilfe eines API-Aufrufprogramms wie Postman oder Red Node und einer Verbindung über ein API-Gateway mit einer Lambda-Funktion entwickelt.
- Mit Hilfe des FIS (Fault Injection Simulator) von AWS können benutzerdefinierte Skripte über SSM aufgerufen werden, um Aktionen wie Neustart von EC2-Instanzen oder Failover von Datenbanken auszuführen.
- Die Überwachung erfolgt über ein Monitoring-Tool wie Xavix, New Relic oder eine Kombination aus beiden, wobei Dummy-Services erstellt werden, deren Überwachung zu Alarmen führt.
- Die spezifischen Warnmeldungen, die vom Service-Desk-Team kommen, werden als solche behandelt, aber vor dem Handeln wird zunächst die Legitimität mit einem Vorgesetzten abgeklärt.
- Die Implementierung dieser Lösung ist Teil des Service-Design-Lebenszyklus, beginnend mit der Anfrage, gefolgt von der Lösungsentwicklung, Bereitstellung und Übergabe an das relevante Team.
Implementierung einer Lösung für das Simulieren von Warnmeldungen
Findings und Analyse
- Die Sicherheit wurde in den Diensten berücksichtigt, indem die API-Gateway mit Ressourcenrichtlinien kontrolliert wurde. Die Authentifizierung des Nutzers und die Berechtigung für bestimmte SSO-Rollen wurden eingeführt, wobei die SSO-Rolle nur wenigen Personen gewährt wurde. Dies gewährleistet, dass nur autorisierte Personen die Lambda-Funktion auslösen können.
- Die Lambda-Funktion selbst wurde auf die Erfüllung der Anforderungen beschränkt und es wurden Maßnahmen ergriffen, um unerwünschte Ausnahmen zu verhindern. Zudem wurde ein Fehlerinjektionssimulationsservice implementiert, welcher vielseitig einsetzbar ist und bei Bedarf eigene Experimente ermöglicht.
- Des Weiteren wurden SSM für die Skripterstellung und CloudWatch für das Protokollieren von Metriken in den Fehlerinjektionssimulationsservice integriert. Darüber hinaus wurde die Konfiguration für die Überwachungsagenten und die Dummy-Services für die Incident-Response-Level-2-Ingenieure optimiert.
- Ein weiterer wichtiger Aspekt ist die Erkenntnis, dass die Bereitschaft der Mitarbeiter durch das Onboarding schneller und effektiver erfolgte, was in einer größeren Zuversicht und Effizienz bei Cloudoperationen resultierte. Zudem identifizierte das Onboarding Lücken in den Runbooks, die aufgedeckt und optimiert werden konnten.
Findings und Analyse
Chaos Engineering und Resilienz-Tests
- Das Unternehmen hat erkannt, dass es wichtig ist, die Resilienz der Systeme zu testen, insbesondere in einem anspruchsvollen Geschäftsbereich wie Forex, in dem keine Fehler toleriert werden.
- Durch die Durchführung von Übungen und Drillings konnte das Unternehmen feststellen, dass die Reaktionszeit der Ingenieure bei Vorfällen und Wiederherstellungen von Backups deutlich verbessert wurde.
- Die Chaos-Engineering-Initiative wurde als notwendig erachtet, um nicht nur auf automatisierte Angriffe oder hohe Datenverkehrslasten, sondern auch auf mögliche Wissensverluste und Mitarbeiterwechsel im Unternehmen vorbereitet zu sein.
- Außerdem wurde eine Idee für ein Dashboard durch Logs und automatisierte Tests diskutiert, um nicht nur das Management, sondern auch die Antragsteller über die Versuche und das Funktionieren ihrer Anwendungen zu informieren.
Chaos Engineering und Resilienz-Tests
Conclusion:
Die Implementierung von Chaos Engineering und Resilienztests hat unser Incident-Response-Team gestärkt und die Reaktionsfähigkeit verbessert. Durch die Einführung von Lebenszyklen und die Simulation von Warnmeldungen konnten wir die Effizienz unserer Cloudoperationen steigern. Diese Maßnahmen sind entscheidend, um in einem anspruchsvollen Geschäftsbereich wie Forex auf mögliche Vorfälle vorbereitet zu sein.