Bereitstellungsliste für den Produktionsstart.

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

Bereitstellungsliste für den Produktionsstart.

Haben Sie jemals einen neuen Service in die Produktion eingeführt? Oder haben Sie sich möglicherweise um die Wartung solcher Services gekümmert? Wenn ja, was waren Ihre Entscheidungskriterien? Was ist für die Produktion gut und was nicht? Wie schulen Sie neue Teammitglieder in Bezug auf Releases oder die Wartung bestehender Services?

Die meisten Unternehmen kommen in Bezug auf die Praktiken industrieller Betriebsführung letztendlich auf Ansätze wie im „Wilden Westen“. Jedes Team wählt durch Versuch und Irrtum selbst die Tools und besten Praktiken aus. Dies hat jedoch oft Auswirkungen nicht nur auf den Erfolg der Projekte, sondern auch auf die Ingenieure.

Der Ansatz des Versuchens und Irrtums schafft eine Umgebung, in der das Suchen nach Schuldigen und das Abwälzen von Verantwortung verbreitet sind. In einem solchen Verhalten wird es immer schwieriger, aus Fehlern zu lernen und sie nicht zu wiederholen.

Erfolgreiche Organisationen:

  • erkennen die Notwendigkeit von Guidelines für die Produktion an,
  • studieren Best Practices,
  • beginnen bereits während der Entwicklung neuer Systeme oder Komponenten mit Diskussionen über die Produktionsbereitschaft,
  • gewährleisten die Einhaltung der Regeln zur Produktionsvorbereitung.

Die Vorbereitung auf die Produktionsumgebung umfasst den Prozess der "Überprüfung". Die Überprüfung kann in Form einer Checkliste oder einer Reihe von Fragen erfolgen. Sie kann manuell, automatisch oder beides durchgeführt werden. Anstelle statischer Anforderungsliste können Vorlagen für Checklisten erstellt werden, die an spezifische Bedürfnisse angepasst werden. So erhalten Ingenieure die Möglichkeit, Wissen zu übertragen und ausreichende Flexibilität dort zu haben, wo es erforderlich ist.

Wann den Dienst auf Produktionsbereitschaft überprüfen?

Es ist nützlich, die Produktionsbereitschaft nicht nur direkt vor der Veröffentlichung zu prüfen, sondern auch beim Übergang an ein anderes Betriebsteam oder einen neuen Mitarbeiter.

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

  • Sie einen neuen Dienst in die Produktion bringen.
  • Sie die Betriebsführung des Produktionsdienstes an ein anderes Team, wie SRE, übergeben.
  • Sie die Betriebsführung des Produktionsdienstes an neue Mitarbeiter übergeben.
  • Sie den technischen Support organisieren.

Checkliste zur Überprüfung der Produktionsbereitschaft

Vor einiger Zeit habe ich als Beispiel eine die Checkliste zur Überprüfung der Produktionsbereitschaft erstellt. Obwohl diese Liste während der Arbeit mit Google Cloud-Kunden entstand, ist sie auch außerhalb von Google Cloud nützlich und anwendbar.

Planung und Entwicklung

  • Entwickeln Sie einen reproduzierbaren Build-Prozess, der keinen Zugang zu externen Diensten erfordert und nicht von Ausfällen externer Systeme abhängt.
  • Definieren und setzen Sie während der Planung und Entwicklung SLOs für Ihre Dienste fest.
  • Dokumentieren Sie die Verfügbarkeitsanforderungen für die externen Dienste, von denen Sie abhängen.
  • 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 (z. B. einen hart kodierten Wert).

Konfigurationsmanagement

  • Statische, kleine und nicht vertrauliche Konfigurationen können über Befehlszeilenparameter übertragen werden. Für alles andere verwenden Sie Konfigurationsspeicherdienste.
  • Dynamische Konfigurationen sollten Sicherungseinstellungen haben, falls der Konfigurationsdienst nicht verfügbar ist.
  • Die Entwicklungsumgebung sollte nicht mit der Produktionsumgebung verknüpft sein. Andernfalls kann dies dazu führen, dass die Entwicklungsumgebung Zugriff auf Produktionsdienste hat, was zu Datenschutzproblemen und Datenlecks führen kann.
  • Dokumentieren Sie, was dynamisch konfiguriert werden kann, und beschreiben Sie das Backup-Verhalten, falls das Konfigurationsbereitstellungssystem nicht verfügbar ist.

Verwaltung der Releases

  • Dokumentieren Sie den Freigabeprozess im Detail. Beschreiben Sie, wie sich Freigaben auf die SLO auswirken (zum Beispiel temporäre Verzögerungen aufgrund von Cache-Fehlgriffen).
  • Dokumentieren Sie die Canary-Releases.
  • Entwickeln Sie einen Plan zur Analyse von Canary-Releases und, wenn möglich, Mechanismen für automatisierte Rollbacks.
  • Stellen Sie sicher, dass Rollbacks dieselben Prozesse wie das Deployment verwenden können.

Überwachungsfähigkeit (Observability)

  • Stellen Sie sicher, dass ein Satz von Metriken gesammelt wird, der für die SLO erforderlich ist.
  • Stellen Sie sicher, dass zwischen Client- und Serverdaten unterschieden werden kann. Dies ist wichtig, um die Ursachen von Störungen zu identifizieren.
  • Richten Sie Benachrichtigungen so ein, dass der Arbeitsaufwand minimiert wird. Entfernen Sie beispielsweise Benachrichtigungen, die durch routinemäßige Vorgänge ausgelöst werden.
  • Wenn Sie Stackdriver verwenden, aktivieren Sie die GCP-Plattformmetriken in Ihren Dashboards. Richten Sie Benachrichtigungen für GCP-Abhängigkeiten ein.
  • Leiten Sie immer die eingehende Traceroute weiter. Selbst wenn Sie nicht an der Traceroute teilnehmen, unterstützt dies die niedrigeren Dienste, Probleme in der Produktion zu debuggen.

Schutz und Sicherheit

  • Stellen Sie sicher, dass alle externen Verbindungen verschlüsselt sind.
  • Vergewissern Sie sich, dass Ihre Produktionsprojekte die richtigen IAM-Einstellungen haben.
  • Nutzen Sie Netzwerke, um Gruppen von virtuellen Maschinen zu isolieren.
  • Verwenden Sie ein VPN für eine sichere Verbindung zu entfernten Netzwerken.
  • Dokumentieren und überwachen Sie den Zugang von Benutzern zu Daten. Stellen Sie sicher, dass der gesamte Benutzerzugang zu Daten überprüft und protokolliert wird.
  • Stellen Sie sicher, dass die Endpunkte für Debugging durch ACLs eingeschränkt sind.
  • Sanitizieren Sie Benutzereingaben. Richten Sie Beschränkungen für die Größe der Nutzlast bei Benutzereingaben ein.
  • Vergewissern Sie sich, dass Ihr Dienst selektiv eingehenden Verkehr für einzelne Benutzer blockieren kann. Dies ermöglicht es Ihnen, 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 Service skaliert. Zum Beispiel: Anzahl der Benutzer, Größe der eingehenden Last, Anzahl der eingehenden Nachrichten.
  • Dokumentieren Sie die Ressourcenanforderungen für Ihren Service. Zum Beispiel: Anzahl der zugewiesenen virtuellen Maschinen, Anzahl der Spanner-Instanzen, spezielle Hardware wie GPU oder TPU.
  • Dokumentieren Sie die Ressourceneinschränkungen: Art der Ressource, Region usw.
  • Dokumentieren Sie die Quotenbeschränkungen für die Erstellung neuer Ressourcen. Zum Beispiel: Begrenzung der Anzahl von GCE API-Anfragen, wenn Sie die API zur Erstellung neuer Instanzen verwenden.
  • Erwägen Sie die Durchführung von Lasttests, um die Leistungsreduzierung zu analysieren.

Das ist alles. Bis bald in den Kursen!

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster