Checkliste für die Produktionsbereitschaft

Die Übersetzung des Artikels wurde speziell für die Studierenden des Kurses erstellt „DevOps-Praktiken und -Werkzeuge“, der heute schon startet!

Checkliste für die Produktionsbereitschaft

Haben Sie jemals einen neuen Dienst in die Produktion eingeführt? Oder haben Sie vielleicht bestehende Dienste betreut? Wenn ja, wonach haben Sie entschieden? Was ist gut für die Produktion und was ist schlecht? Wie bilden Sie neue Teammitglieder in Bezug auf Releases oder die Betreuung bestehender Dienste aus?

Die meisten Unternehmen kommen bei den Praktiken der industriellen Nutzung letztlich zu einem Ansatz des 'Wilden Westens'. Jedes Team bestimmt durch Ausprobieren und Fehlern selbst die Werkzeuge und besten Praktiken. Dies beeinflusst oft nicht nur den Erfolg von Projekten, sondern auch die Ingenieure.

Die Methode von Versuch und Irrtum schafft ein Umfeld, in dem die Suche nach Schuldigen und das Abwälzen von Verantwortung verbreitet sind. Bei solchem Verhalten wird es immer schwieriger, aus Fehlern zu lernen und sie nicht zu wiederholen.

Erfolgreiche Organisationen:

  • erkennen die Notwendigkeit von Richtlinien für die Produktion,
  • studieren die besten Praktiken,
  • beginnen die Diskussion über die Produktionsbereitschaft bei der Entwicklung neuer Systeme oder Komponenten,
  • sorgen für die Einhaltung der Regeln zur Produktionsvorbereitung.

Die Vorbereitung auf die Produktion beinhaltet einen 'Review'-Prozess. Der Review kann in Form einer Checkliste oder einer Reihe von Fragen erfolgen. Reviews können manuell, automatisiert oder auf beide Arten durchgeführt werden. Anstelle statischer Anforderungslists können Vorlagen für Checklisten erstellt werden, die an spezifische Bedürfnisse angepasst werden. So können Ingenieure ein Mittel erhalten, um Wissen zu bewahren und eine ausreichende Flexibilität zu bieten, wenn dies erforderlich ist.

Wann sollten Sie einen Dienst auf Produktionsbereitschaft überprüfen?

Es ist nützlich, die Produktionsbereitschaft nicht nur unmittelbar vor dem Release zu überprüfen, sondern auch bei der Übergabe an ein anderes Betriebsteam oder einen neuen Mitarbeiter.

Führen Sie die Überprüfung durch, wenn:

  • Sie einen neuen Dienst in die Produktion einführen.
  • Sie den Betrieb eines Produktionsdienstes an ein anderes Team, wie SRE, übergeben.
  • Sie den Betrieb eines Produktionsdienstes an neue Mitarbeiter übergeben.
  • Sie den technischen Support organisieren.

Checkliste zur Überprüfung der Produktionsbereitschaft

Vor einiger Zeit habe ich als Beispiel eine veröffentlicht Checkliste zur Überprüfung der Produktionsbereitschaft erstellt. Obwohl diese Liste bei der Arbeit mit Kunden von Google Cloud entstanden ist, wird sie auch außerhalb von Google Cloud nützlich und anwendbar sein.

Entwurf und Entwicklung

  • Entwickeln Sie einen reproduzierbaren Build-Prozess, der keinen Zugriff auf externe Dienste erfordert und nicht von Ausfällen externer Systeme abhängig ist.
  • Definieren und setzen Sie während der Design- und Entwicklungsphase SLO für Ihre Dienste fest.
  • Dokumentieren Sie die Verfügbarkeitsanforderungen der externen Dienste, von denen Sie abhängig sind.
  • Vermeiden Sie einen Single Point of Failure, indem Sie Abhängigkeiten von einer globalen Ressource entfernen. Replizieren Sie die Ressource oder verwenden Sie eine Backup-Option, wenn die Ressource nicht verfügbar ist (zum Beispiel einen fest codierten Wert).

Konfigurationsmanagement

  • Statische, kleine und nicht geheime Konfigurationen können über Befehlszeilenparameter übermittelt werden. Für alle anderen verwenden Sie Konfigurationsspeicher-Dienste.
  • Dynamische Konfigurationen sollten Backup-Einstellungen haben, falls der Konfigurationsdienst nicht verfügbar ist.
  • Die Entwicklungsumgebungskonfiguration sollte nicht mit der Produktionskonfiguration verbunden sein. Ansonsten könnte dies dazu führen, dass die Entwicklungsumgebung Zugriff auf Produktionsdienste hat, was Datenschutzprobleme und Datenlecks verursachen kann.
  • Dokumentieren Sie, was dynamisch konfiguriert werden kann, und beschreiben Sie das Backup-Verhalten, falls das Konfigurationsbereitstellungssystem nicht verfügbar ist.

Release-Management

  • Dokumentieren Sie den Freigabeprozess im Detail. Beschreiben Sie, wie Freigaben SLO beeinflussen (z. B. vorübergehende Erhöhungen der Latenzzeiten aufgrund von Cache-Fehlschlägen).
  • Dokumentieren Sie Canary-Releases.
  • Entwickeln Sie einen Plan zur Analyse von Canary-Releases und, wenn möglich, Mechanismen für automatische Rollbacks.
  • Stellen Sie sicher, dass Rollbacks die gleichen Prozesse verwenden können wie das Deployment.

Eignung zur Überwachung (Observability)

  • Stellen Sie sicher, dass ein Set von Metriken gesammelt wird, das für SLO erforderlich ist.
  • Stellen Sie sicher, dass Kunden- und Serverdaten voneinander unterschieden werden können. Dies ist wichtig, um die Ursachen von Fehlfunktionen zu finden.
  • Richten Sie Alarme ein, um den Arbeitsaufwand zu reduzieren. Zum Beispiel, entfernen Sie Alarme, die durch Routineoperationen ausgelöst werden.
  • Wenn Sie Stackdriver verwenden, aktivieren Sie GCP-Plattformmetriken in Ihren Dashboards. Richten Sie Alarme für GCP-Abhängigkeiten ein.
  • Stellen Sie sicher, dass eingehende Traces immer weitergeleitet werden. Auch wenn Sie nicht an der Verfolgung beteiligt sind, hilft dies Diensten auf niedrigerer Ebene, Probleme in der Produktion zu debuggen.

Schutz und Sicherheit

  • Stellen Sie sicher, dass alle externen Verbindungen verschlüsselt sind.
  • Stellen Sie sicher, dass Ihre Produktionsprojekte die richtige IAM-Konfiguration haben.
  • Verwenden Sie Netzwerke zur Isolierung von Gruppen virtueller Maschinen.
  • Nutzen Sie ein VPN für eine sichere Verbindung zu entfernten Netzwerken.
  • Dokumentieren und überwachen Sie den Zugriff der Benutzer auf Daten. Stellen Sie sicher, dass aller Benutzerzugriff auf Daten überprüft und protokolliert wird.
  • Stellen Sie sicher, dass die Debugging-Endpunkte durch ACLs eingeschränkt sind.
  • Sanitizieren Sie Benutzereingaben. Richten Sie Größenbeschränkungen für die Nutzlast von Benutzereingaben ein.
  • Stellen Sie sicher, dass Ihr Dienst eingehenden Datenverkehr für bestimmte Benutzer selektiv blockieren kann. Dies ermöglicht es, Verstöße zu blockieren, ohne andere Benutzer zu beeinträchtigen.
  • Vermeiden Sie externe Endpunkte, die eine große Anzahl interner Operationen initiieren.

Kapazitätsplanung

  • Dokumentieren Sie, wie Ihr Dienst skalierbar ist. Zum Beispiel: Anzahl der Benutzer, Größe der eingehenden Nutzlast, Anzahl der eingehenden Nachrichten.
  • Dokumentieren Sie die Ressourcenanforderungen für Ihren Dienst. Zum Beispiel: Anzahl der zugewiesenen virtuellen Maschinen, Anzahl der Spanner-Instanzen, spezielle Hardware wie GPU oder TPU.
  • Dokumentieren Sie die Ressourcenbeschränkungen: Ressourcentyp, Region usw.
  • Dokumentieren Sie die Quotenbeschränkungen für die Erstellung neuer Ressourcen. Zum Beispiel: Begrenzung der Anfragen an die GCE API, wenn Sie die API zur Erstellung neuer Instanzen verwenden.
  • Erwägen Sie Lasttests, um die Leistungsminderung zuanalyse.

Das ist alles. Bis zum nächsten Mal im Unterricht!

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster