20 Jahre Lehren aus dem Site Reliability Engineering (SRE)
Lehren zur Reliability Engineering von YouTube
-
Auswahl von Maßnahmen zur Risikominderung
- Bei schwerwiegenden Fehlern sollten Maßnahmen zur Risikominderung gewählt werden, die im Verhältnis zur Schwere des Fehlers stehen.
- Überzogene Risikominderungsmaßnahmen können Nebenwirkungen verursachen und sollten nur eingesetzt werden, wenn es einen triftigen Grund gibt, Standardverfahren zu umgehen.
-
Testen von Wiederherstellungsmechanismen für Notfälle
- Wiederherstellungsmechanismen und Minderungsmaßnahmen sollten im Voraus ausreichend geübt und getestet werden, damit auch in kritischen Situationen wirksam reagiert werden kann.
- Durch Tests lassen sich künftige Risiken senken und die Reaktionsfähigkeit verbessern.
-
Schrittweise Einführung von Änderungen (Canary-Tests anwenden)
- Änderungen sollten vor einem vollständigen Rollout schrittweise eingeführt werden, damit Probleme nicht das gesamte System beeinträchtigen.
- Am Beispiel einer Änderung der Caching-Konfiguration bei YouTube wurde erkannt, dass selbst kleine Änderungen eine systematische Einführung erfordern.
Lehren von Google Calendar
-
Wichtigkeit einer Notabschaltungsfunktion
- Für Änderungen mit potenziellem Risiko ist eine Funktion wie ein „großer roter Knopf“ nötig, mit der schnell reagiert werden kann.
- Im Hinblick auf Service-Abhängigkeiten sollte eine Notabschaltungsfunktion vorbereitet werden.
-
Notwendigkeit von Integrationstests
- Unit-Tests sind in einem begrenzten Rahmen nützlich, aber mit Integrationstests muss in Verbindung mit der realen Umgebung geprüft werden, ob das System geeignet ist.
- Aus einem Fehlerfall bei Google Calendar wurde die Bedeutung von Tests erkannt, die dem tatsächlichen Nutzungspfad folgen.
Lehren von Google im Jahr 2017
-
Wichtigkeit von Kommunikationskanälen für Notfälle
- Kommunikationskanäle und Backup-Kanäle müssen vorbereitet werden.
- Bei Service-Ausfällen sollten mehrere voneinander unabhängige Kommunikationsmittel bereitstehen, und ihre Wirksamkeit sollte getestet werden.
-
Minimale Funktionalität bei Leistungseinbußen aufrechterhalten
- Systeme sollten so entworfen werden, dass grundlegende Funktionen auch bei degradierter Leistung verfügbar bleiben, damit der Service nicht vollständig ausfällt.
Tests zur Katastrophenresilienz
- Tests von Katastrophenresilienz und Wiederherstellungsfähigkeit
- Die Resilienz von Services oder Systemen sollte getestet werden, damit ihre Fortführbarkeit auch in Katastrophensituationen sichergestellt ist.
- Durch Wiederherstellungstests sollte geprüft werden, ob das System nach einem Ausfall wieder in den Normalzustand zurückkehren kann.
Bedeutung automatisierter Minderungsmaßnahmen
- Automatisierung von Minderungsmaßnahmen
- Bei mehrfachen Netzwerkausfällen sollte die Zeit zur Problemlösung durch automatisierte Minderungsmaßnahmen verkürzt werden, statt alles manuell zu bearbeiten.
Verkürzung der Zeit zwischen Deployments
-
Häufige Rollouts durchführen
- Lange Zeitabstände zwischen Rollouts sind ein Maßstab zur Beurteilung der Systemsicherheit.
-
Eine einzige globale Hardware-Version ist ein Single Point of Failure
- Sich nur auf ein bestimmtes Modell zu verlassen, kann den Betrieb vereinfachen, aber wenn dieses Modell Probleme hat, können wichtige Funktionen ausfallen.
- Das Vorhandensein verschiedener Netzwerk-Backbones hilft, einen vollständigen Ausfall zu verhindern, und ermöglicht es, hochpriorisierten Traffic auf weiterhin funktionierende Alternativen umzuleiten.
Noch keine Kommentare.