Empfehlungen für das Entwerfen einer Zuverlässigkeitsteststrategie

Gilt für diese Empfehlung für die Zuverlässigkeitsprüfliste des Azure Well-Architected Framework:

RE:08 Testen Sie Resilienz- und Verfügbarkeitsszenarien, indem Sie die Prinzipien des Chaos Engineering in Ihren Test- und Produktivumgebungen anwenden. Verwenden Sie Tests, um sicherzustellen, dass Ihre ordnungsgemäßen Implementierungs- und Skalierungsstrategien effektiv sind, indem Sie aktive Fehlfunktionen und simulierte Auslastungstests durchführen.

In diesem Leitfaden werden die Empfehlungen zum Entwerfen einer Zuverlässigkeitsteststrategie beschrieben, um die Zuverlässigkeit Ihrer Workload zu überprüfen und zu optimieren. Zuverlässigkeitstests konzentrieren sich auf die Resilienz und Verfügbarkeit Ihrer Workload, insbesondere auf die kritischen Flows, die Sie bei der Entwicklung Ihrer Lösung identifizieren. Dieser Leitfaden enthält allgemeine Testanleitungen und Anleitungen, die speziell für fehlerinjektions- und Chaostechnik spezifisch sind.

Definitionen

Begriff Definition
Verfügbarkeit Die Zeitspanne, die eine Anwendungsworkload ohne erhebliche Ausfallzeiten in einem fehlerfreien Zustand ausführt.
Chaos Engineering Die Praxis, Anwendungen und Dienstleistungen realen Belastungen und Fehlschlägen zu unterziehen. Ziel des Chaos-Engineering ist es, Resilienz gegenüber unzuverlässigen Bedingungen und fehlenden Abhängigkeiten aufzubauen und zu validieren.
Einschleusen von Fehlern Der Akt der Einführung eines Fehlers in ein System, um die Resilienz des Systems zu testen.
Wiederherstellbarkeit Ein Synonym für Resilienz.
Resilienz Die Fähigkeit einer Anwendungsworkload, den Fehlermodi standzuhalten und wiederherzustellen.

Wichtige Entwurfsstrategien

Testen der Zuverlässigkeitsbereitschaft

  • Führen Sie routinemäßig Tests durch, um vorhandene Schwellenwerte, Ziele und Annahmen zu überprüfen. Wenn eine wesentliche Änderung in Ihrer Workload auftritt, führen Sie regelmäßige Tests aus. Führen Sie die meisten Tests in Test- und Stagingumgebungen durch. Es ist auch vorteilhaft, eine Teilmenge von Tests mit dem Produktionssystem durchzuführen. Planen Sie eine 1:1-Parität der wichtigsten Testumgebungen mit der Produktionsumgebung.

  • Automatisieren Sie Tests, um eine konsistente Testabdeckung und Reproduzierbarkeit sicherzustellen. Automatisieren Sie häufige Testaufgaben, und integrieren Sie sie in Ihren Buildprozess. Manuelles Testen von Software ist mühsam und anfällig für Fehler, aber Sie können manuelle explorative Tests durchführen. Verwenden Sie für Fälle, in denen Sie automatisierte Tests entwickeln müssen, manuelle Tests, um den Umfang der zu entwickelnden Tests zu ermitteln.

  • Übernehmen Sie einen Shift-left-Testansatz, um Resilienz- und Verfügbarkeitstests frühzeitig im Entwicklungszyklus durchzuführen.

  • Passen Sie ein einfaches Dokumentationsformat an, damit jeder den Prozess und die Ergebnisse jedes regelmäßigen Tests verstehen kann.

  • Teilen Sie die dokumentierten Ergebnisse mit den entsprechenden Teams, z. B. operativen Teams, Technologieführerschaft, Geschäftsbeteiligten und Notfallwiederherstellungsbeteiligten. Die Ergebnisse sollten die Verfeinerung der Zuverlässigkeitsziele, wie z. B. SlOs (Service Level Objectives, SLOs), Vereinbarungen auf Dienstebene (SLAs), Wiederherstellungszeitziele (RTOs) und Wiederherstellungspunktziele (RECOVERY Point Objectives, RPOs) informieren.

  • Erstellen Sie einen regelmäßigen Testrhythmu für Ihre Sicherungen. Stellen Sie die Daten auf isolierte Systeme wieder her, um sicherzustellen, dass die Sicherungen gültig sind und wiederhergestellt werden können.

  • Dokumentieren und teilen Sie Wiederherstellungszeitmetriken mit Ihren Notfallwiederherstellungsbeteiligten, um sicherzustellen, dass die Erwartungen an die Wiederherstellung angemessen sind.

  • Verwenden Sie Branchenstandard-Bereitstellungstests , um sicherzustellen, dass Sie über einen automatisierten, vorhersehbaren und effizienten Bereitstellungsprozess verfügen.

  • Testen Sie die Fähigkeit Ihrer Workload, vorübergehenden Fehlern standzuhalten. Weitere Informationen finden Sie unter Empfehlungen für die Behandlung vorübergehender Fehler.

  • Testen Sie die Fähigkeit Ihrer Workload, auf Änderungen der Auslastungsmuster und -spitzen zu reagieren. Verwenden Sie diese Informationen, um Ihre Skalierungsstrategie zu testen. Informationen zu Belastungs- und Stresstests finden Sie unter "Empfehlungen für Tests".

  • Testen Sie, wie Ihre Workload Fehler in abhängigen Diensten oder anderen Abhängigkeiten mithilfe der Fehlereinfügung verarbeitet.

  • Testen und überprüfen Sie, wie Ihr Selbstheilungs- und Selbsterhaltungsdesign auf Fehlfunktionen reagiert. Testen Sie automatisierte und manuelle Wiederherstellungsvorgänge.

  • Testen Sie Ihren Notfallwiederherstellungsplan , um auf katastrophale Fehler und andere wichtige Vorfälle zu reagieren.

  • Testen Sie die Fähigkeit Ihrer Workload, den Strahlradius von Komponentenfehlern mithilfe der Fehlereinfügung ordnungsgemäß zu verringern und zu minimieren.

Nutzen Von geplanten und ungeplanten Ausfallen

Wenn Ihre Workload aufgrund geplanter Wartung oder eines ungeplanten Ausfalls offline ist, haben Sie eine einzigartige Möglichkeit, Tests durchzuführen und Ihr Verständnis Ihrer Arbeitsauslastung zu verbessern. Die folgenden Abschnitte enthalten Empfehlungen für jedes Szenario.

Geplante Wartung

Wenn Sie Wartungsfenster für Updates oder Patches geplant haben, können Sie Komponenten und Flüsse testen, die nicht an der Wartung beteiligt sind. Führen Sie Tests ohne das potenzielle Risiko aus, dass die Arbeitsauslastung unerwartet beeinträchtigt oder vollständig offline geschaltet wird. Wenn Sie während ihres Wartungsfensters genügend Zeit haben, können Sie auch die Komponenten und Abläufe testen, die an der Wartung beteiligt sind, nachdem die Wartungsarbeiten abgeschlossen sind.

Ungeplanter Ausfall

Verwenden Sie jeden Ausfallvorfall als Möglichkeit, mehr über Ihre Workload zu erfahren und ihre Resilienz zu verbessern, indem Sie die folgenden Schritte ausführen, sortiert nach Priorität:

  • Holen Sie sich die Arbeitsauslastung für Ihre Kunden online. Dazu können Sie eine Problemumgehung für das Problem ausführen, das Problem beheben oder die Wiederherstellungsprozesse initiieren.

  • Bestimmen Sie die Ursache des Ausfalls, und adressieren Sie ihn. Wenn Sie die Ursache im Rahmen der Untersuchung beheben können, dokumentieren Sie die Ursache und die Maßnahmen, die Sie zum Beheben der Ursache ergriffen haben. Wenn das Problem zu einem späteren Zeitpunkt ein zusätzliches Wartungsfenster erfordert, stellen Sie sicher, dass Ihre Gegenmaßnahmen die erwartete Last verarbeiten können, indem Sie sie gründlich testen. Stellen Sie sicher, dass Sie eine ausreichende Überwachung eingerichtet haben, um Ihre Gegenmaßnahmen abzudecken.

  • Suchen Sie ggf. nach demselben Problem oder nach Konfigurationsschwächen, die möglicherweise von ähnlichen Problemen betroffen sind, in allen Komponenten Ihrer Workload. Verwenden Sie diese Möglichkeit, diese Komponenten proaktiv zu adressieren. Wenden Sie sich an Ihren Vorfallverlauf, um Muster ähnlicher Probleme in Ihrer Workload zu erkennen.

  • Verwenden Sie Ihre Ergebnisse, um Ihre Teststrategie zu verbessern. Stellen Sie sicher, dass Sie die Ursache und ähnliche Probleme erfolgreich behoben haben, indem Sie denselben Fehler direkt testen.

Verwenden von Fehlerinjektion und Chaostechnik

Fehlereinfügungstests folgen den Prinzipien des Chaos engineering, indem die Fähigkeit der Workload zum Reagieren auf Komponentenfehler hervorgehoben wird. Führen Sie Fehlereinfügungstests in Vorproduktions- und Produktionsumgebungen durch. Wenden Sie Tests auf Infrastruktur- und Anwendungsebenen an. Wenden Sie die Informationen an, die Sie für die Durchführung der Fehlermodusanalyse gelernt haben, um sicherzustellen, dass Nur Fehler getestet werden, die Sie priorisieren und über Entschärfungsstrategien verfügen, die Fehler beheben. Die wichtigsten Richtlinien des Chaos engineering sind:

  • Proaktiv sein. Warten Sie nicht, bis Fehler auftreten. Versuchen Sie, Fehler zu antizipieren, indem Sie Chaosexperimente durchführen, um Probleme zu ermitteln und zu beheben, bevor sie sich auf Ihre Produktionsumgebung auswirken.

  • Fehler akzeptieren. Akzeptieren Sie die Fehler, die in Ihrem System auftreten, und lernen Sie sie kennen. Sehen Sie Fehler als natürlicher Teil komplexer Systeme und nutzen Sie sie als Möglichkeiten, die Zuverlässigkeit Ihres Systems zu erlernen und zu verbessern.

  • System zum Absturz bringen. Stellen Sie fehler oder Stress absichtlich in Ihr System ein, um ihre Resilienz zu testen. Simulieren Sie reale Fehler oder Unterbrechungen, um die Wiederherstellungsfunktionen Ihrer Workload zu testen und zu verbessern.

  • Single Points of Failure identifizieren und beseitigen. Lesen Sie beim Testen Ihre Fehlermodusanalyse , und aktualisieren Sie sie, um Fehler in Ihrer Dokumentation zu überprüfen und zu beheben. Wenden Sie Zuverlässigkeitsansätze wie Redundanz und Segmentierung an, um die Verfügbarkeit Ihrer Workload zu erhöhen und Ausfallzeiten zu minimieren.

  • Schutzmaßnahmen ergreifen und ordnungsgemäße Risikominderungen ermöglichen. Implementieren Sie Sicherheitsmaßnahmen wie das Schaltschaltermuster oder das Drosselungsmuster, um die Verfügbarkeit zu erhöhen. Implementieren Sie beeinträchtigungsfähige Ansätze, die geschäftskontinuität bei Fehlern ermöglichen.

  • Auswirkungsgrad begrenzen. Implementieren Sie Fehlerisolationsstrategien, um sicherzustellen, dass der Umfang begrenzt ist, auch wenn ein Fehler auftritt. Das System funktioniert weiterhin mit minimalem Einfluss auf Ihre Kunden.

  • Immunität sicherstellen. Verwenden Sie Chaos engineering-Experimente, um die Fähigkeit Ihrer Workload zu verbessern, fehler zu verhindern und wiederherzustellen.

Chaos Engineering ist ein integraler Bestandteil der Workload-Teamkultur und eine laufende Praxis, keine kurzfristige taktische Anstrengung als Reaktion auf einen einzigen Ausfall. Befolgen Sie diese Standardmethode, wenn Sie Ihre Chaosexperimente entwerfen:

  1. Mit Hypothese beginnen Jedes Experiment sollte ein klares Ziel haben, z. B. das Testen der Fähigkeit eines bestimmten Flusses, dem Verlust einer bestimmten Komponente standzuhalten.
  2. Basisverhalten messen Stellen Sie sicher, dass Sie konsistente Zuverlässigkeits- und Leistungsmetriken für den Fluss und die Komponenten haben, die an einem bestimmten Experiment beteiligt sind, um beim Ausführen des Experiments mit dem beeinträchtigten Zustand zu vergleichen.
  3. Fehler einschleusen Das Experiment sollte absichtlich auf bestimmte Komponenten abzielen, die schnell wiederhergestellt werden können, und Sie sollten über eine informierte Erwartung der Wirkung verfügen, die die Fehlerinjektion dazu führt, den Strahlradius des Experiments zu steuern.
  4. Resultierendes Verhalten überwachen Sammeln Sie Telemetrie zu den einzelnen Flusskomponenten und dem End-to-End-Flussverhalten, auf das das Experiment ausgerichtet ist, um die Auswirkungen des Fehlers richtig zu verstehen. Vergleichen Sie die Metriken, die Sie mit den Basismetriken sammeln, um ein vollständiges Bild der Ergebnisse der Fehlereinfügung zu erzielen.
  5. Prozess und Beobachtungen dokumentieren. Wenn Sie detaillierte Aufzeichnungen Ihrer Experimente speichern, werden die zukünftigen Entscheidungen über das Workload-Design informiert, um sicherzustellen, dass Sie die Lücken beheben, die im Laufe der Zeit offenbart wurden.
  6. Ergebnis ermitteln und entsprechend reagieren Planen Sie Korrekturschritte, die Ihrem Workload-Backlog als Verbesserungen hinzugefügt werden können. Stellen Sie sicher, dass Entwurfsverbesserungspläne in Nichtproduktionsumgebungen entsprechend denselben Prozessen wie andere Bereitstellungen überprüft und getestet werden.

Überprüfen Sie regelmäßig Ihre Prozesse, Architekturentscheidungen und Code, um technische Schulden schnell zu erkennen, neue Technologien zu integrieren und sich an sich ändernde Anforderungen anzupassen.

Wenn Sie Fehlereinfügungsversuche durchführen, führen Sie:

  • Vergewissern Sie sich, dass die Überwachung eingerichtet ist und Warnungen eingerichtet sind.
  • Überprüfen Sie Ihren Prozess der Zuweisung einer direkt verantwortlichen Person (DRI), um den Besitz eines Vorfalls zu übernehmen.
  • Stellen Sie sicher, dass Ihre Dokumentations- und Untersuchungsprozesse auf dem neuesten Stand sind.

Integrieren Sie die folgenden Empfehlungen und Überlegungen, um Ihre Chaosteststrategie zu optimieren:

  • Für das System geltende Annahmen in Frage stellen Mit Tests versuchen Sie, die Resilienz Ihrer Workload und Ihre Workload-Entwurfsstrategien zu verbessern. Suchen Sie nach Möglichkeiten zum Einfügen von Fehlern in Komponenten und Flüsse, von denen Sie ausgehen, dass sie auf der Grundlage früherer Erfahrungen zuverlässig sind. Möglicherweise sind sie in Ihrer neuen Arbeitsauslastung nicht zuverlässig.

  • Überprüfen Sie Änderungen, z. B. topologie, Plattform und Ressourcen. Ohne gründliche Tests, einschließlich Fehlereinfügungstests, haben Sie möglicherweise ein unvollständiges Bild Ihrer Arbeitsauslastung, nachdem Änderungen vorgenommen wurden. So können Sie beispielsweise versehentlich neue Abhängigkeiten einführen oder vorhandene Abhängigkeiten auf eine Weise unterbrochen haben, die nicht sofort offensichtlich ist.

  • Verwenden Sie SLA-Puffer. Beschränken Sie Chaostests, um in Ihren SLAs zu bleiben und potenzielle Reputations- oder finanzielle Auswirkungen von Ausfällen zu vermeiden. Ihre Ablauf- und Komponentenwiederherstellungsziele helfen beim Definieren des Umfangs Ihrer Tests.

  • Legen Sie ein Fehlerbudget als Investition in Chaos Engineering und die Fehlereinschleusung fest. Ihr Fehlerbudget ist der Unterschied zwischen dem Erreichen von 100 Prozent des SLO und dem Erreichen der vereinbarten SLO.

  • Beenden Sie das Experiment, wenn es über den Bereich hinausgeht. Unklare Ergebnisse sind bei Chaosexperimenten zu erwarten. Streben Sie die richtige Abstimmung zwischen der Erfassung umfangreicher Ergebnisdaten und der Beeinträchtigung möglichst weniger Produktionsbenutzer an.

  • Arbeiten Sie eng mit Entwicklungsteams zusammen, um die Relevanz der eingefügten Fehler sicherzustellen. Verwenden Sie frühere Vorfälle oder Probleme als Anhaltspunkte. Überprüfen Sie Abhängigkeiten, und bewerten Sie die Ergebnisse, wenn Sie diese Abhängigkeiten entfernen.

  • Identifizieren und dokumentieren Sie zuvor nicht ermittelte Abhängigkeiten zwischen verschiedenen Komponenten innerhalb Ihrer Workload, die durch Chaostests offenbart werden.

  • Passen Sie die Wiederherstellungspläne nach Bedarf an, um Abhängigkeiten zu berücksichtigen, die während des Chaostests entdeckt werden.

  • Verwenden Sie die Ergebnisse Ihrer Experimente und Tests als Grundlage für neue Experimente und Tests. Wenn unerwartete Verhaltensweisen auftreten, können neue Tests direkt auf diese Verhaltensweisen abzielen und Ihnen die Möglichkeit geben, Korrekturstrategien für sie zu entwerfen.

Tradeoff: Fehlereinspritzungstests in der Produktion können störend sein und kann zu Ausfallzeiten führen. Seien Sie transparent mit den Beteiligten über diese Möglichkeit und stellen Sie sicher, dass Sie Sicherheitsvorkehrungen haben, um Experimente zu beenden und Pläne zurückzustellen, um die von Ihnen eingeführten Fehler schnell rückgängig zu machen. Um vor unbeabsichtigten Ausfällen in der Produktion zu schützen, stellen Sie sicher, dass Sie ausreichend Redundanz planen und dass Ihre Projektbeteiligten den Kostenkonflikt verstehen.

Azure-Erleichterung

Azure Test Plans ist eine benutzerfreundliche, browserbasierte Testverwaltungslösung, die alle Funktionen bereitstellt, die für geplante manuelle Tests, Benutzerakzeptanztests, explorative Tests und Sammeln von Feedback von Projektbeteiligten erforderlich sind.

Azure Chaos Studio ist ein verwalteter Dienst, der Chaos-Engineering verwendet, um Sie beim Messen, Verstehen und Verbessern der Resilienz Ihrer Cloudanwendungen und Dienste zu unterstützen. Azure Chaos Studio hat die allgemeine Verfügbarkeit bei Ignite 2023 erreicht und bietet zahlreiche Features, die Ihnen bei den ersten Schritten mit Fehlerinjektions- und Ausfallsicherheitstests für Ihre Anwendung mithilfe der Azure-Infrastruktur helfen.

Zuverlässigkeitsprüfliste

Lesen Sie den vollständigen Satz von Empfehlungen.