Google Cloud-Architektur-Framework: Zuverlässigkeit

Last reviewed 2024-10-11 UTC

Dieser Pfeiler des Google Cloud-Architektur-Frameworks behandelt die Designprinzipien, die für den Entwurf und den Betrieb zuverlässiger Dienste auf einer Cloud-Plattform allgemein erforderlich sind.

Im Architektur-Framework werden Best Practices beschrieben, Implementierungsempfehlungen gegeben und einige verfügbare Produkte und Dienste erläutert. Mit dem Framework unterstützen wir Sie bei der Entwicklung Ihrer Google Cloud-Bereitstellung, um den Anforderungen Ihres Unternehmens bestmöglich gerecht zu werden.

Zuverlässigkeitsprinzipien und -empfehlungen speziell für KI- und ML-Arbeitslasten finden Sie im Architektur-Framework unter KI und ML: Zuverlässigkeit.

Ihre Architektur muss folgende Elemente enthalten, um einen zuverlässigen Dienst ausführen zu können:

  • Messbare Zuverlässigkeitsziele, die Sie sofort korrigieren, wenn Abweichungen auftreten.
  • Designmuster für Folgendes:
    • Skalierbarkeit
    • Hochverfügbarkeit
    • Notfallwiederherstellung
    • Automatisiertes Änderungsmanagement
  • Komponenten, die sich selbst reparieren können (Probleme ohne manuelle Eingriffe beheben)
  • Code, der Instrumentierung für die Beobachtbarkeit enthält
  • Automatisierter Betrieb, z. B. Dienstausführungen mit minimalem manuellem Aufwand, kognitive Arbeitslast der Bediener und schneller Fehlererkennung und -minderung.

Die gesamte Entwicklerorganisation ist für die Zuverlässigkeit des Dienstes verantwortlich, einschließlich Entwicklungs-, Produktmanagement-, Betriebs- und Site Reliability Engineering-Teams (SRE). Teams müssen die Zuverlässigkeitsziele, Risiko- und Fehlerbudgets ihrer Anwendung verstehen und für diese Anforderungen verantwortlich sein. Konflikte zwischen Zuverlässigkeit und Produktfeature-Entwicklung müssen priorisiert und entsprechend eskaliert werden.

Grundsätze für Zuverlässigkeit

In diesem Abschnitt werden die Grundprinzipien eines zuverlässigen Dienstes erläutert und die Grundlage für die folgenden ausführlichere Dokumente gegeben. Wenn Sie mehr zu diesem Thema lesen, werden Sie erfahren, dass der Google-Ansatz für die Zuverlässigkeit auf den folgenden Zuverlässigkeitsprinzipien basiert.

Zuverlässigkeit ist das wichtigste Feature

Entwicklerteams priorisieren manchmal die Entwicklung neuer Produkte. Nutzer erwarten zwar neue und spannende Updates für ihre Lieblingsanwendungen, doch Produktupdates sind für Ihre Nutzer ein kurzfristiges Ziel. Ihre Kunden erwarten immer die Zuverlässigkeit des Dienstes, auch wenn sie es nicht bemerken. Eine erweiterte Gruppe von Tools oder auffälligen Grafiken in Ihrer Anwendung spielt keine Rolle, wenn Ihre Nutzer nicht auf Ihren Dienst zugreifen können oder Ihr Dienst eine schlechte Leistung aufweist. Eine schlechte Anwendungsleistung macht diese erweiterten Funktionen schnell irrelevant.

Zuverlässigkeit wird aus der Perspektive des Nutzers definiert

Kurz gesagt: Ihr Service ist zuverlässig, wenn Ihre Kunden zufrieden sind. Nutzer sind nicht immer vorhersehbar und Sie können überschätzen, was erforderlich ist, um sie zu erfüllen.

In der heutigen Zeit sollte eine Webseite in etwa zwei Sekunden geladen werden. Das Verwerfen der Seite beträgt ca. 53 %, wenn die Ladezeit um eine weitere Sekunde verzögert wird, und beträgt 87 %, wenn sich die Ladezeit um drei Sekunden verzögert. Es ist jedoch wahrscheinlich nicht die beste Investition, nach einer Website zu suchen, die Seiten in einer Sekunde liefert. Um das richtige Maß an Dienstzuverlässigkeit für Ihre Kunden zu ermitteln, müssen Sie Folgendes messen:

  • Nutzerbezogene Arbeitslast: Messen Sie die Nutzererfahrung. Messen Sie beispielsweise das Erfolgsverhältnis von Nutzeranfragen ab und nicht nur Servermesswerte wie CPU-Auslastung.
  • Batch- und Streamingarbeitslasten: Messen Sie Leistungskennzahlen (Key Performance Indicators, KPIs) für den Datendurchsatz, z. B. die Zeilen, die pro Zeitraum gescannt werden. Dieser Ansatz ist informativer als ein Servermesswert wie die Laufwerksnutzung. Durchsatz-KPIs gewährleisten, dass die vom Nutzer angeforderte Verarbeitung rechtzeitig abgeschlossen wird.

100 % Zuverlässigkeit ist das falsche Ziel

Dieses Prinzip ist eine Erweiterung des vorherigen. Ihre Systeme sind zuverlässig genug, wenn die Nutzer zufrieden sind. In der Regel benötigen Nutzer nicht 100% Zuverlässigkeit, um zufrieden zu sein. Definieren Sie daher Service Level Objectives (SLOs), die den Zuverlässigkeitsschwellenwert auf den Prozentsatz festlegen, der erforderlich ist, um die Nutzer zufrieden zu machen, und verwenden Sie dann Fehlerbudgets, um die angemessene Änderungsrate zu verwalten.

Wenden Sie die Design- und Betriebsprinzipien in diesem Framework nur dann auf ein Produkt an, wenn das SLO für dieses Produkt oder diese Anwendung die Kosten rechtfertigt.

Zuverlässigkeit und schnelle Innovation ergänzen sich

Verwenden Sie Fehlerbudgets, um ein Gleichgewicht zwischen Systemstabilität und Entwicklerflexibilität zu schaffen. Mithilfe der folgenden Anleitung können Sie entscheiden, wann Sie sich mehr auf die Stabilität oder die Entwicklung konzentrieren sollten:

  • Wenn das Fehlerbudget verringert ist, drosseln Sie das Tempo und konzentrieren Sie sich auf Zuverlässigkeitsfeatures.
  • Wenn ein ausreichendes Fehlerbudget verfügbar ist, können Sie schnell Innovationen vornehmen und das Produkt verbessern oder Produktfeatures hinzufügen.

Design- und operative Prinzipien

Die verbleibenden Dokumente in der Säule „Zuverlässigkeit“ des Architektur-Frameworks enthalten Design- und Betriebsprinzipien, mit denen Sie die Systemzuverlässigkeit maximieren können. In den folgenden Abschnitten erhalten Sie eine Zusammenfassung der Design- und operativen Prinzipien, die in den einzelnen Dokumenten dieser Reihe beschrieben werden.

Zuverlässigkeitsziele festlegen

Denken Sie daran, dass die Nutzerzufriedenheit definiert Zuverlässigkeit und Ihre Zuverlässigkeitsziele durch die von Ihnen festgelegten SLOs dargestellt werden. Beachten Sie beim Festlegen Ihrer SLOs Folgendes:

  • Geeignete Service Level Indicators (SLI) auswählen
  • SLOs auf Basis der Nutzererfahrung festlegen
  • SLOs iterativ verbessern
  • Strikte interne SLOs verwenden
  • Mit Fehlerbudgets die Entwicklungsgeschwindigkeit steuern

Weitere Informationen finden Sie unter Komponenten von Service Level Objectives.

Sorgen Sie für mehr Beobachtbarkeit Ihrer Infrastruktur und Ihrer Anwendungen.

Instrumentieren Sie Ihren Code, um die Beobachtbarkeit zu maximieren. Weitere Informationen finden Sie unter Für mehr Beobachtbarkeit in Ihrer Infrastruktur und Ihren Anwendungen sorgen.

Bei der Entwicklung für Skalierung und Hochverfügbarkeit sorgen

Beachten Sie bei der Skalierung und Hochverfügbarkeit (HA) die folgenden Prinzipien:

  • Redundanz für HA schaffen
  • Daten über Regionen hinweg für die Notfallwiederherstellung replizieren
  • Multiregionale Architektur für Sicherheit gegen regionale Ausfälle entwerfen
  • Service-Levels bei Überlastung reibungslos heruntersetzen
  • Ausfallsicherheit bei Aufrechterhaltung der Systemfunktionalität-
  • API-Aufrufe und operative Befehle wiederholbar entwickeln
  • Berücksichtigen Sie Abhängigkeiten:
    • Systemabhängigkeiten ermitteln und verwalten
    • Kritische Abhängigkeiten minimieren
  • Rollback von Änderungen gewährleisten

Darüber hinaus verbessern die folgenden Aktivitäten die Zuverlässigkeit Ihres Dienstes:

  • Engpässe bei der Skalierbarkeit beseitigen
  • Trafficspitzen verhindern und minimieren
  • Eingaben bereinigen und validieren

Weitere Informationen finden Sie unter Skalierbares Hochverfügbarkeit bereitstellen.

Zuverlässige Tools und operative Prozesse erstellen

So binden Sie Zuverlässigkeit in Tools und Betriebsprozesse ein:

  • Logische, selbstdefinierende Namen für Anwendungen und Dienste wählen
  • Canary-Tests verwenden, um schrittweise Rollouts von Verfahren zu implementieren
  • Planen Sie Ihre Werbeaktionen und Markteinführungen, damit sie den Traffic verteilen und Systemüberlastungen reduzieren
  • Programmatische Build-, Test- und Bereitstellungsprozesse entwickeln
  • Schutz vor von Menschen verursachten Vorfällen, egal ob absichtlich oder nicht
  • Aktivitäten für die Entwicklung, Tests und Dokumentation von Fehlerantworten
  • Regelmäßiges Entwickeln und Testen der Schritte zur Notfallwiederherstellung
  • Chaos Engineering: Machen Sie es zu einer Methode, Fehler in das System einzufügen, um die Fehlertoleranz und Robustheit Ihres Dienstes zu ermitteln.

Weitere Informationen finden Sie unter Zuverlässige operative Prozesse und Tools erstellen.

Effiziente Benachrichtigungen erstellen

Beim Erstellen von Benachrichtigungen empfehlen wir Folgendes:

  • Benachrichtigungen für angemessene Verzögerungen optimieren
  • Benachrichtigungen zu Symptomen und nicht zu Ursachen festlegen
  • Benachrichtigungen für Ausreißerwerte und nicht für Durchschnittswerte festlegen

Weitere Informationen finden Sie unter Effiziente Benachrichtigungen erstellen in der Spalte „Zuverlässigkeits-Architektur“.

Gemeinsamen Prozess für Vorfallmanagement aufbauen

Die Reaktion auf Vorfälle (Incident Response and Management, IRM) ist für die Wiederherstellung von Diensten und das Minimieren von Schäden wichtig. Effektives IRM umfasst:

  • Inhaber: Weisen Sie klare Dienstinhaber zu.
  • Optimierte Benachrichtigungen: Verbessern Sie die Reaktion auf Vorfälle (Incident Response, IR) und verkürzen Sie die Zeit zur Erkennung (Time to detect, TTD) mit sorgfältig entwickelten Benachrichtigungen.
  • IRM-Pläne und -Schulungen: Reduzieren Sie die Zeit zur Problemminderung (Time to Mitigate, TTM) mit umfassenden Plänen, Dokumentationen und Schulungen.
  • Dashboards: Entwerfen Sie Dashboard-Layouts und Inhalte, um effizient Benachrichtigungen zu senden, wenn Probleme auftreten, um die TTM zu minimieren.
  • Dokumentation: Erstellen und pflegen Sie klare, prägnante Inhalte für alle Aspekte des Dienstsupports, einschließlich Diagnoseverfahren und Risikominderung bei Ausfallszenarien.
  • Kultur ohne Schuldzuweisung:
    • Eine Umgebung ohne Schuldzuweisung in Ihrer Organisation schaffen
    • Etablieren Sie einen Postmortem-Prozess, bei dem der Fokus auf dem Was liegt und nicht auf wem.
    • Lernen Sie von Ihren Ausfällen, indem Sie sie ordnungsgemäß untersuchen und Bereiche identifizieren, in denen sich Wiederholungen verbessern und verhindern lassen.

Weitere Informationen finden Sie unter Kollaboratives Vorfallmanagement erstellen in der Spalte „Zuverlässigkeits-Architekturarchitektur“.

Nächste Schritte