Checkliste für die Produktionsbereitschaft

Die Übersetzung des Artikels wurde speziell für die Studierenden des Kurses erstellt „DevOps-Praktiken und -Tools“, das heute beginnt!

Checkliste für die Produktionsbereitschaft

Haben Sie jemals einen neuen Dienst in die Produktion gebracht? Oder waren Sie vielleicht an der Unterstützung solcher Dienste beteiligt? Wenn ja, was hat Sie motiviert? Was ist gut für die Produktion und was ist schlecht? Wie schulen Sie neue Teammitglieder in Releases oder der Wartung bestehender Dienste?

Die meisten Unternehmen übernehmen letztendlich „Wild-West“-Ansätze, wenn es um industrielle Betriebsabläufe geht. Jedes Team entscheidet durch Ausprobieren über seine eigenen Tools und Best Practices. Doch oft beeinträchtigt dies nicht nur den Erfolg von Projekten, sondern auch die Ingenieure.

Durch Versuch und Irrtum entsteht ein Umfeld, in dem Schuldzuweisungen und Schuldzuweisungen an der Tagesordnung sind. Mit diesem Verhalten wird es immer schwieriger, aus Fehlern zu lernen und sie nicht noch einmal zu wiederholen.

Erfolgreiche Organisationen:

  • die Notwendigkeit von Richtlinien für die Produktion erkennen,
  • Best Practices studieren,
  • Diskussionen über Fragen der Produktionsbereitschaft bei der Entwicklung neuer Systeme oder Komponenten beginnen,
  • Stellen Sie sicher, dass die Regeln für die Vorbereitung der Produktion eingehalten werden.

Zur Vorbereitung der Produktion gehört ein „Review“-Prozess. Die Überprüfung kann in Form einer Checkliste oder einer Reihe von Fragen erfolgen. Bewertungen können manuell, automatisch oder beides erfolgen. Anstelle statischer Anforderungslisten können Sie Checklisten-Vorlagen erstellen, die an spezifische Bedürfnisse angepasst werden können. Auf diese Weise können Ingenieure bei Bedarf Wissen und ausreichend Flexibilität übernehmen.

Wann ist eine Dienstleistung auf Produktionsbereitschaft zu prüfen?

Es ist sinnvoll, eine Produktionsbereitschaftsprüfung nicht nur unmittelbar vor der Freigabe durchzuführen, sondern auch bei der Übergabe an ein anderes Betriebsteam oder einen neuen Mitarbeiter.

Überprüfen Sie, wann:

  • Sie geben einen neuen Dienst für die Produktion frei.
  • Sie übertragen den Betrieb des Produktionsdienstes an ein anderes Team, beispielsweise SRE.
  • Sie übertragen den Betrieb des Produktionsdienstes an neue Mitarbeiter.
  • Organisieren Sie technischen Support.

Checkliste für die Produktionsbereitschaft

Vor einiger Zeit, als Beispiel, habe ich опубликовала Checkliste zur Prüfung der Produktionsbereitschaft. Obwohl diese Liste von Google Cloud-Kunden stammt, ist sie auch außerhalb von Google Cloud nützlich und anwendbar.

Design und Entwicklung

  • Entwickeln Sie einen wiederholbaren Build-Prozess, der keinen Zugriff auf externe Dienste erfordert und nicht vom Ausfall externer Systeme abhängig ist.
  • Definieren und legen Sie während der Entwurfs- und Entwicklungsphase SLOs für Ihre Dienste fest.
  • Dokumentieren Sie Erwartungen an die Verfügbarkeit externer Dienste, auf die Sie angewiesen sind.
  • Vermeiden Sie einen Single Point of Failure, indem Sie Abhängigkeiten von einer einzelnen globalen Ressource beseitigen. Replizieren Sie die Ressource oder verwenden Sie einen Fallback, wenn die Ressource nicht verfügbar ist (z. B. einen fest codierten Wert).

Konfigurationsmanagement

  • Statische, kleine und nicht geheime Konfigurationen können über Befehlszeilenparameter übergeben werden. Für alles andere nutzen Sie Konfigurationsspeicherdienste.
  • Eine dynamische Konfiguration muss über Fallback-Einstellungen verfügen, falls der Konfigurationsdienst nicht verfügbar ist.
  • Die Konfiguration der Entwicklungsumgebung sollte nicht mit der Produktionskonfiguration in Zusammenhang stehen. Andernfalls kann es zu Zugriffen von der Entwicklungsumgebung auf Produktionsdienste kommen, was zu Datenschutzproblemen und Datenlecks führen kann.
  • Dokumentieren Sie, was dynamisch konfiguriert werden kann, und beschreiben Sie das Fallback-Verhalten, wenn das Konfigurationsbereitstellungssystem nicht verfügbar ist.

Release-Management

  • Dokumentieren Sie den Freigabeprozess detailliert. Beschreiben Sie, wie sich Releases auf SLOs auswirken (z. B. vorübergehende Erhöhungen der Latenz aufgrund von Cache-Fehlern).
  • Canary-Veröffentlichungen dokumentieren.
  • Entwickeln Sie einen Canary-Release-Überprüfungsplan und, wenn möglich, automatische Rollback-Mechanismen.
  • Stellen Sie sicher, dass Rollbacks dieselben Prozesse wie Bereitstellungen verwenden können.

Beobachtbarkeit

  • Stellen Sie sicher, dass die für das SLO erforderlichen Metriken erfasst werden.
  • Stellen Sie sicher, dass Sie zwischen Client- und Serverdaten unterscheiden können. Dies ist wichtig, um die Ursachen von Störungen zu finden.
  • Richten Sie Benachrichtigungen ein, um die Arbeitskosten zu senken. Entfernen Sie beispielsweise Warnungen, die durch Routinevorgänge verursacht werden.
  • Wenn Sie Stackdriver verwenden, beziehen Sie GCP-Plattform-Metriken in Ihre Dashboards ein. Richten Sie Benachrichtigungen für GCP-Abhängigkeiten ein.
  • Eingehende Spuren immer weitergeben. Selbst wenn Sie nicht an der Ablaufverfolgung beteiligt sind, können Dienste auf niedrigerer Ebene Probleme in der Produktion beheben.

Schutz und Sicherheit

  • Stellen Sie sicher, dass alle externen Verbindungen verschlüsselt sind.
  • Stellen Sie sicher, dass Ihre Produktionsprojekte über das richtige IAM-Setup verfügen.
  • Verwenden Sie Netzwerke, um Gruppen von virtuellen Maschineninstanzen zu isolieren.
  • Verwenden Sie ein VPN, um eine sichere Verbindung zu entfernten Netzwerken herzustellen.
  • Dokumentieren und überwachen Sie den Benutzerzugriff auf Daten. Stellen Sie sicher, dass der gesamte Benutzerzugriff auf Daten überwacht und protokolliert wird.
  • Stellen Sie sicher, dass Debug-Endpunkte durch ACLs eingeschränkt sind.
  • Bereinigen Sie Benutzereingaben. Konfigurieren Sie Nutzlastgrößenbeschränkungen für Benutzereingaben.
  • Stellen Sie sicher, dass Ihr Dienst eingehenden Datenverkehr für einzelne Benutzer selektiv blockieren kann. Dadurch werden Verstöße blockiert, ohne dass andere Benutzer davon betroffen sind.
  • Vermeiden Sie externe Endpunkte, die viele interne Vorgänge initiieren.

Kapazitätsplanung

  • Dokumentieren Sie, wie Ihr Service skaliert. Zum Beispiel: Anzahl der Benutzer, Größe der eingehenden Nutzlast, Anzahl der eingehenden Nachrichten.
  • Dokumentieren Sie den Ressourcenbedarf für Ihren Service. Zum Beispiel: Anzahl dedizierter Instanzen virtueller Maschinen, Anzahl Spanner-Instanzen, spezielle Hardware wie GPU oder TPU.
  • Einschränkungen der Dokumentressourcen: Ressourcentyp, Region usw.
  • Kontingentbeschränkungen für die Erstellung neuer Ressourcen dokumentieren. Begrenzen Sie beispielsweise die Anzahl der GCE-API-Anfragen, wenn Sie die API zum Erstellen neuer Instanzen verwenden.
  • Erwägen Sie die Durchführung von Lasttests, um den Leistungsabfall zu analysieren.

Das ist alles. Wir sehen uns in der Klasse!

Source: habr.com

Kommentar hinzufügen