REL 12: Wie lässt sich die Zuverlässigkeit testen?
Nachdem Sie Ihre Workload so konzipiert haben, dass sie den Belastungen der Produktion standhält, sind Tests die einzige Möglichkeit, sie auf die erwartete Funktionalität und Ausfallsicherheit hin zu testen.
Ressourcen
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
Resilience Engineering: Learning to Embrace Failure
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Use CodePipeline with AWS CodeBuild to test code and run builds
Automate your operational playbooks with AWS Systems Manager
Principles of Chaos Engineering
Apache JMeter
Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, Ali Basiri. “Chaos
Engineering” (August 2017)
AWS Marketplace: products that can be used for continuous integration
APN Partner: partners that can help with implementation of a continuous integration
pipeline
Bewährte Methoden:
-
Untersuchen von Fehlern mit Playbooks: Ermöglichen Sie konsistente und schnelle Antworten auf noch unbekannte Fehlerszenarien, indem Sie den Untersuchungsprozess in Playbooks dokumentieren. Playbooks sind vordefinierte Abläufe zum Identifizieren der Faktoren, die zu einem Fehlerszenario beitragen. Die Ergebnisse aus den Prozessschritten bilden die Grundlage für die nächsten Schritte. Nach diesem Muster wird vorgegangen, bis das Problem erkannt oder eskaliert wird.
-
Durchführen von Analysen nach Vorfällen: Überprüfen Sie die Ereignisse mit Auswirkungen auf Kunden und bestimmen Sie die beitragenden Faktoren und Präventivmaßnahmen. Entwickeln Sie anhand dieser Informationen Abhilfemaßnahmen, um ein wiederholtes Auftreten nach Möglichkeit zu verhindern. Entwickeln Sie Verfahren für schnelle und effektive Reaktionen. Informieren Sie nach Bedarf auf zielgruppengerechte Weise über beitragende Faktoren und Korrekturmaßnahmen. Legen Sie eine Kommunikationsmethode fest, um andere bei Bedarf über die Ursachen zu informieren.
-
Testen funktionaler Anforderungen: Dazu gehören Komponenten- und Integrationstests, mit denen die erforderliche Funktionalität validiert wird.
-
Testen von Skalierungs- und Leistungsanforderungen: Hierzu gehören Lasttests zur Überprüfung, ob die Workload die Skalierungs- und Leistungsanforderungen erfüllt.
-
Testen der Ausfallsicherheit mit Chaos Engineering: Führen Sie Tests aus, die regelmäßig Fehler in Vorproduktions- und Produktionsumgebungen einschleusen. Stellen Sie eine Hypothese dazu auf, wie Ihre Workload auf einen Fehler reagiert, vergleichen Sie dann die Hypothese mit den Testergebnissen und iterieren Sie, wenn sie nicht übereinstimmen. Stellen Sie sicher, dass Produktionstests keine Auswirkungen auf Benutzer haben.
-
Regelmäßiges Durchführen von Ernstfallübungen: Testen Sie im Rahmen von Ernstfallübungen Ihre Notfallmaßnahmen unter möglichst produktionsnahen Bedingungen (darunter in Produktionsumgebungen) mit den Personen, die an tatsächlichen Fehlerszenarien beteiligt sind. Bei Ernstfallübungen werden Maßnahmen durchgesetzt, die Benutzer vor den Auswirkungen von Produktionstests schützen.
Verbesserungsplan
Untersuchen von Fehlern mit Playbooks
- Implementieren von Playbooks als Code: Führen Sie Vorgänge als Code durch, indem Sie Skripte für Playbooks erstellen, um
Konsistenz zu gewährleisten und Fehler aufgrund manueller Prozesse zu reduzieren.
Playbooks können aus mehreren Skripten mit verschiedenen Schritten bestehen, die für
die Ermittlung der zu einem Problem beitragenden Faktoren möglicherweise erforderlich
sind. Runbook-Aktivitäten können ausgelöst oder im Rahmen von Playbook-Aktivitäten
ausgeführt werden. Alternativ kann als Reaktion auf festgestellte Ereignisse zur Ausführung
eines Playbooks aufgefordert werden.
Automate your operational playbooks with AWS Systems Manager
AWS Systems Manager Run Command
AWS Systems Manager Automation
What is AWS Lambda?
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
Durchführen von Analysen nach Vorfällen
- Sorgen Sie dafür, dass die beitragenden Faktoren auf ehrliche Weise und ohne Schuldzuweisungen aufgeführt werden.
- Wenn Sie Probleme nicht dokumentieren, können Sie sie auch nicht korrigieren.
- Verzichten Sie bei Analysen nach Vorfällen auf Schuldzuweisungen, damit Sie die Korrekturmaßnahmen unparteiisch vorschlagen können. Fördern Sie zudem in Ihren Anwendungsteams eine ehrliche Selbstbewertung und Zusammenarbeit.
What is log analytics?
Testen funktionaler Anforderungen
Use CodePipeline with AWS CodeBuild to test code and run builds
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Software test automation
Testen von Skalierungs- und Leistungsanforderungen
Distributed Load Testing on AWS: simulate thousands of connected users
Apache JMeter
- Stellen Sie Ihre Anwendung in einer Umgebung bereit, die Ihrer Produktionsumgebung
möglichst ähnlich ist, und führen Sie einen Lasttest durch.
- Erstellen Sie auf Grundlage von "Infrastructure as Code"-Konzepten eine Umgebung, die Ihrer Produktionsumgebung möglichst ähnlich ist.
Testen der Ausfallsicherheit mit Chaos Engineering
Principles of Chaos Engineering
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
- Zum Einschleusen von Fehlern in die Workload Open-Source-Software verwenden
The Chaos ToolKit
Shopify Toxiproxy
Netflix Chaos Monkey - Oder kommerzielle, über AWS Marketplace verfügbare Software verwenden
Gremlin - Oder eigenen Code zur Fehlereinschleusung nutzen
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager - Testen Sie den Ausfall der einzelnen Komponenten und externen Abhängigkeiten.
- Simulieren Sie Bedingungen, die zu Leistungseinbußen führen können. Verwenden Sie dabei Erweiterungen für gängige Proxys, um Latenz und den Verlust von Nachrichten zu provozieren. Sie können auch eigene Implementierungen erstellen, um Bedingungen mit Leistungseinbußen herbeizuführen.
Regelmäßiges Durchführen von Ernstfallübungen
- Führen Sie Last- oder Leistungstests durch und schleusen Sie anschließend Fehler ein.
- Prüfen Sie die Runbooks auf Anomalien und suchen Sie nach Möglichkeiten zur Ausführung
der Playbooks.
- Optimieren Sie bei Abweichungen die Runbooks oder ändern Sie das Verhalten. Ermitteln Sie bei Ausführung eines Playbooks das Runbook, das hätte verwendet werden sollen, oder erstellen Sie ein neues.