Cloudbasierte Resilienz
Tipp
Diese Inhalte sind ein Auszug aus dem E-Book „Architecting Cloud Native .NET Applications for Azure“, verfügbar in der .NET-Dokumentation oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.
Resilienz ist die Fähigkeit Ihres Systems, auf einen Ausfall zu reagieren und dennoch funktionsfähig zu bleiben. Es geht nicht darum, Fehler zu vermeiden, sondern Fehler zu akzeptieren und Ihre cloudnativen Dienste so zu gestalten, dass sie darauf reagieren. Sie möchten so schnell wie möglich zu einem voll funktionsfähigen Zustand zurückkehren.
Im Gegensatz zu herkömmlichen monolithischen Anwendungen, bei denen alles zusammen in einem einzelnen Prozess ausgeführt wird, setzen cloudnative Systeme auf eine verteilte Architektur, wie in Abbildung 6-1 dargestellt:
Abbildung 6-1. Verteilte cloudnative Umgebung
In der vorherigen Abbildung werden jeder Microservice und der cloudbasierte Unterstützungsdienst in einem separaten Prozess über die Serverinfrastruktur ausgeführt und kommunizieren über netzwerkbasierte Aufrufe.
Ein Dienst, der in diesem Umgebung arbeitet, muss vertraulich mit vielen verschiedenen Herausforderungen umgehen können:
Unerwartete Wartezeit im Netzwerk – die Zeit, die eine Dienstanforderung benötigt, um zum Empfänger und zurück zu gelangen.
Vorübergehende Fehler – kurzlebige Netzwerkkonnektivitätsfehler.
Blockierung durch einen zeitintensiven synchronen Vorgang.
Ein Hostprozess, der abgestürzt ist und gerade neu gestartet oder verschoben wird.
Ein überlasteter Microservice, der für kurze Zeit nicht reagieren kann.
Ein In-Flight-Orchestrator-Vorgang wie ein rollierendes Upgrade oder das Verschieben eines Diensts von einem Knoten zu einem anderen.
Hardwarefehler.
Cloudplattformen können viele dieser Infrastrukturprobleme erkennen und entschärfen. Sie können Ihren Dienst neu starten, aufskalieren und sogar auf einen anderen Knoten neu verteilen. Um diesen integrierten Schutz jedoch in vollem Umfang zu nutzen, müssen Sie Ihre Dienste so gestalten, dass sie darauf reagieren und in dieser dynamischen Umgebung gedeihen.
In den folgenden Abschnitten werden wir uns mit Abwehrmaßnahmen befassen, die Ihr Dienst und Ihre verwalteten Cloudressourcen nutzen können, um Downtime und Unterbrechungen zu minimieren.