Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Da cloudeigene Anwendungen und Dienste komplexer werden, kann die Bereitstellung von Änderungen und neuen Versionen für sie eine Herausforderung darstellen. Ausfalle werden häufig durch fehlerhafte Bereitstellungen oder Veröffentlichungen verursacht. Aber auch nach der Bereitstellung können Fehler auftreten, wenn eine Anwendung mit dem Empfang von echtem Datenverkehr beginnt, insbesondere in komplexen Workloads, die in hoch verteilten mehrinstanzenfähigen Cloudumgebungen ausgeführt werden und von mehreren Entwicklungsteams verwaltet werden. Diese Umgebungen erfordern mehr Resilienzmaßnahmen, z. B. Wiederholungslogik und automatische Skalierung, die normalerweise während des Entwicklungsprozesses schwer zu testen sind.
Aus diesem Grund ist eine kontinuierliche Überprüfung in einer Umgebung wichtig, die der Produktionsumgebung ähnelt, damit Sie probleme oder Fehler so früh wie möglich im Entwicklungszyklus finden und beheben können. Workloadteams sollten frühzeitig im Entwicklungsprozess (nach links) testen und Entwickler*innen die Durchführung von Tests in einer Umgebung erleichtern, die sich in der Nähe der Produktionsumgebung befindet.
Unternehmenskritische Workloads haben hohe Verfügbarkeitsanforderungen, mit Zielen von 3, 4 oder 5 neun (99,9 %, 99,99 % oder 99,99 % bzw. 99,999 %). Es ist entscheidend, strenge automatisierte Tests zu implementieren, um diese Ziele zu erreichen.
Die kontinuierliche Überprüfung hängt von jeder Arbeitsauslastung und von architekturlichen Merkmalen ab. Dieser Artikel enthält einen Leitfaden zum Vorbereiten und Integrieren von Azure Load Testing und Azure Chaos Studio in einen regelmäßigen Entwicklungszyklus.
1 – Definieren von Tests basierend auf erwarteten Schwellenwerten
Kontinuierliche Tests sind ein komplexer Prozess, der eine ordnungsgemäße Vorbereitung erfordert. Was getestet wird, und die erwarteten Ergebnisse müssen klar sein.
In PE:06 – Empfehlungen für Leistungstests und RE:08 – Empfehlungen für das Entwerfen einer Zuverlässigkeitsteststrategie empfiehlt das Azure Well-Architected Framework, zunächst wichtige Szenarien, Abhängigkeiten, erwartete Nutzung, Verfügbarkeit, Leistung und Skalierbarkeitsziele zu identifizieren.
Anschließend sollten Sie einen Satz messbarer Schwellenwerte definieren, um die erwartete Leistung der wichtigsten Szenarien zu quantifizieren.
Tipp
Beispiele für Schwellenwerte sind die erwartete Anzahl von Benutzeranmeldungen, Anforderungen pro Sekunde für eine bestimmte API und Vorgänge pro Sekunde für einen Hintergrundprozess.
Sie sollten Schwellenwerte verwenden, um ein Gesundheitsmodell für Ihre Anwendung zu entwickeln, sowohl zum Testen als auch für den Betrieb der Anwendung in der Produktion.
Verwenden Sie als Nächstes die Werte, um einen Auslastungstest zu definieren, der realistischen Datenverkehr für das Testen der Basisplanleistung der Anwendung und zum Überprüfen erwarteter Skalierungsvorgänge generiert. Anhaltender künstlicher Benutzerdatenverkehr ist in Pre-Production-Umgebungen erforderlich, da es ohne Verwendung schwierig ist, Laufzeitprobleme aufzudecken.
Durch Auslastungstests wird sichergestellt, dass Änderungen, die an der Anwendung oder Infrastruktur vorgenommen wurden, keine Probleme verursachen und das System weiterhin die erwarteten Leistungs- und Testkriterien erfüllt. Eine fehlgeschlagene Testausführung, die nicht den Testkriterien entspricht, gibt an, dass Sie den Basisplan anpassen müssen oder dass ein unerwarteter Fehler aufgetreten ist.
Auch wenn automatisierte Tests die tägliche Nutzung darstellen, sollten Sie manuelle Auslastungstests regelmäßig ausführen , um zu überprüfen, wie das System auf unerwartete Spitzen reagiert.
Der zweite Teil der kontinuierlichen Validierung ist die Injektion von Fehlern (Chaostechnik). In diesem Schritt wird die Resilienz eines Systems überprüft, indem getestet wird, wie es auf Fehler reagiert. Außerdem funktionieren alle Resilienzmaßnahmen wie Wiederholungslogik, automatische Skalierung und andere wie erwartet.
2 – Implementieren der Validierung mit Load Testing und Chaos Studio
Microsoft Azure stellt diese verwalteten Dienste bereit, um Lasttests und Chaos-Engineering zu implementieren:
- Azure Load Testing erzeugt synthetische Benutzerlasten für Anwendungen und Dienste.
- Azure Chaos Studio bietet die Möglichkeit, Chaosexperimente durchzuführen, indem fehler systematisch in Anwendungskomponenten und Infrastruktur eingefügt werden.
Sie können sowohl Chaos Studio als auch Load Testing über das Azure-Portal bereitstellen und konfigurieren, aber im Kontext der kontinuierlichen Überprüfung ist es wichtiger, dass Sie APIs haben, um Tests programmgesteuert und automatisiert bereitzustellen, zu konfigurieren und auszuführen. Mithilfe dieser beiden Tools können Sie beobachten, wie das System auf Probleme und seine Fähigkeit zur Selbstheilung als Reaktion auf Infrastruktur- oder Anwendungsfehler reagiert.
Das folgende Video zeigt eine kombinierte Implementierung von Chaos und Load Testing in Azure DevOps integriert:
Wenn Sie eine unternehmenskritische Workload entwickeln, nutzen Sie die detaillierten Anleitungen, die im Rahmen des Azure Well-Architected Frameworks bereitgestellt werden.
Eine Möglichkeit besteht darin, den Auslastungstest direkt in der End-to-End-Pipeline (e2e) auszuführen, die verwendet wird, um verzweigungspezifische Entwicklungsumgebungen bereitzustellen.
Die Pipeline führt automatisch einen Lasttest mit oder ohne Chaosexperimente (je nach Auswahl) parallel aus:
Hinweis
Das Ausführen von Chaosversuchen während eines Auslastungstests kann zu einer höheren Latenz, höheren Reaktionszeiten und vorübergehend erhöhten Fehlerraten führen. Erwarten Sie höhere Reaktionszeiten und Wartezeiten, bis ein Scaleout-Vorgang abgeschlossen ist oder ein Failover abgeschlossen ist, im Vergleich zu einer Ausführung ohne Chaosexperimente.
Je nachdem, ob Chaostests aktiviert sind und die Wahl von Experimenten, können Basisplandefinitionen variieren, da die Toleranz für Fehler im "normalen" Zustand und im "Chaos"-Zustand unterschiedlich sein kann.
3 – Anpassen von Schwellenwerten und Einrichten eines Basisplans
Passen Sie schließlich die Schwellenwerte für den Auslastungstest für normale Ausführungen an, um zu überprüfen, ob die Anwendung (noch) die erwartete Leistung bereitstellt und keine Fehler erzeugt. Haben Sie einen separaten Basisplan für Chaostests, die erwartete Spitzen bei Fehlerraten und temporärer verringerter Leistung tolerieren. Diese Aktivität ist kontinuierlich und muss regelmäßig wiederholt werden. Beispiel: Nach der Einführung neuer Features, der Änderung von Dienst-SKUs und anderer Elemente.
Der Azure Load Testing-Dienst stellt eine integrierte Funktion bereit, die als Testkriterien bezeichnet wird, mit denen bestimmte Kriterien angegeben werden können, die ein Test bestehen muss. Diese Funktion kann verwendet werden, um verschiedene Basispläne zu implementieren.
Die Funktion ist über das Azure-Portal und über die Lasttest-API verfügbar, und die wrapper-Skripts, die als Teil von Azure Mission-critical entwickelt wurden, bieten eine Möglichkeit, eine JSON-basierte Basisplandefinition zu übergeben.
Wir empfehlen dringend, diese Tests direkt in Ihre CI/CD-Pipelines zu integrieren und sie in den frühen Phasen der Featureentwicklung auszuführen.
Zusammenfassend ist der Ausfall in jedem komplexen verteilten System unvermeidlich, und die Lösung muss daher so gestaltet (und getestet) werden, um Fehler zu behandeln. Die leitfäden und Referenzimplementierungen desWell-Architected Frameworks für unternehmenskritische Arbeitsauslastungen können Ihnen dabei helfen, hoch zuverlässige Anwendungen zu entwerfen und zu betreiben, um den maximalen Wert aus der Microsoft-Cloud abzuleiten.
Nächster Schritt
Überprüfen Sie den Bereitstellungs- und Testentwurfsbereich für unternehmenskritische Workloads.