Checkliste für die Produktionsbereitschaft

Die Übersetzung des Artikels wurde speziell für Studenten des DevOps Practices and Tools- Kurses vorbereitet, der heute beginnt!





Haben Sie jemals einen neuen Service in der Produktion veröffentlicht? Oder vielleicht mit der Wartung solcher Dienste beschäftigt? Wenn ja, was sind Sie gefolgt? Was ist gut für die Produktion und was ist schlecht? Wie schulen Sie neue Teammitglieder, um vorhandene Services freizugeben oder zu warten?

Die meisten Unternehmen in Bezug auf industrielle Nutzungspraktiken kommen schließlich zu den Ansätzen des „Wilden Westens“. Jedes Team bestimmt durch Ausprobieren unabhängig die Tools und Best Practices. Dies wirkt sich jedoch häufig nicht nur auf den Erfolg von Projekten aus, sondern auch auf Ingenieure.

Die Trial-and-Error-Methode schafft eine Umgebung, in der die Suche nach Tätern und die Übertragung von Verantwortung üblich 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 lernen
  • eine Diskussion über die Produktionsbereitschaft bei der Entwicklung neuer Systeme oder Komponenten beginnen,
  • Gewährleistung der Einhaltung der Regeln für die Vorbereitung der Produktion.

Die Vorbereitung für die Produktion umfasst einen Überprüfungsprozess. Eine Überprüfung kann in Form einer Checkliste oder einer Reihe von Fragen erfolgen. Eine Überprüfung kann manuell, automatisch oder beides erfolgen. Anstelle von statischen Anforderungslisten können Checklistenvorlagen erstellt werden, die an bestimmte Anforderungen angepasst werden können. Auf diese Weise können Ingenieure bei Bedarf Wissen und ausreichende Flexibilität erben.

Wann muss der Service auf Produktionsbereitschaft überprüft werden?


Es ist nützlich, eine Bereitschaftsprüfung für die Produktion nicht nur unmittelbar vor der Freigabe durchzuführen, sondern auch, wenn diese an ein anderes Betriebsteam oder einen neuen Mitarbeiter übertragen wird.

Überprüfen Sie wann:

  • Freigabe eines neuen Dienstes in der Produktion.
  • Übertragen Sie den Betrieb des Produktionsdienstes auf ein anderes Team, z. B. SRE.
  • Übertragen Sie den Betrieb des Produktionsdienstes auf neue Mitarbeiter.
  • Organisieren Sie technischen Support.

Checkliste für die Produktionsbereitschaft


Als Beispiel habe ich vor einiger Zeit eine Checkliste zur Überprüfung der Produktionsbereitschaft veröffentlicht. Obwohl diese Liste während der Arbeit mit Google Cloud-Clients angezeigt wurde, ist sie außerhalb von Google Cloud nützlich und anwendbar.

Design und Entwicklung


  • Entwerfen Sie einen reproduzierbaren Erstellungsprozess, der keinen Zugriff auf externe Dienste erfordert und nicht vom Ausfall externer Systeme abhängt.
  • Definieren und installieren Sie während des Entwurfs- und Entwicklungszeitraums SLO für Ihre Services.
  • Dokumentieren Sie die Erwartungen an die Verfügbarkeit externer Dienste, auf die Sie angewiesen sind.
  • Vermeiden Sie einen einzelnen Fehlerpunkt, indem Sie Abhängigkeiten von einer globalen Ressource entfernen. Replizieren Sie die Ressource oder verwenden Sie die Fallback-Option, wenn die Ressource nicht verfügbar ist (z. B. fest codierter Wert).

Konfigurationsmanagement


  • Statische, kleine und nicht geheime Konfigurationen können über Befehlszeilenoptionen übergeben werden. Verwenden Sie im Übrigen Konfigurationsspeicherdienste.
  • Die dynamische Konfiguration muss über Sicherungseinstellungen verfügen, falls der Konfigurationsdienst nicht verfügbar ist.
  • Die Konfiguration der Entwicklungsumgebung sollte nicht mit der Produktionskonfiguration zusammenhängen. Andernfalls kann es zu einem Zugriff auf Produktionsservices aus der Entwicklungsumgebung 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 im Detail. Beschreiben Sie, wie sich Releases auf SLOs auswirken (z. B. eine vorübergehende Erhöhung der Latenz aufgrund von Cache-Fehlern).
  • Dokumentieren Sie kanarische Veröffentlichungen.
  • Entwickeln Sie einen Plan zur Analyse kanarischer Freisetzungen und, wenn möglich, automatischer Rollback-Mechanismen.
  • Stellen Sie sicher, dass Rollbacks dieselben Prozesse wie die Bereitstellung verwenden können.

Eignung zur Überwachung (Beobachtbarkeit)


  • Stellen Sie sicher, dass Sie die für SLO erforderlichen Metriken kompilieren.
  • Stellen Sie sicher, dass Sie zwischen Client- und Serverdaten unterscheiden können. Dies ist wichtig für die Fehlerbehebung.
  • Legen Sie Warnungen fest, um die Arbeitskosten zu senken. Löschen Sie beispielsweise Warnungen, die durch Routineoperationen verursacht werden.
  • Wenn Sie Stackdriver verwenden, fügen Sie die GCP-Plattformmetriken in Ihre Dashboards ein. Konfigurieren Sie Warnungen für GCP-Abhängigkeiten.
  • Verteilen Sie immer den eingehenden Trace. Selbst wenn Sie nicht an der Ablaufverfolgung teilnehmen, können Dienste auf niedrigerer Ebene Produktionsprobleme 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 Instanzen virtueller Maschinen zu isolieren.
  • Verwenden Sie ein VPN, um eine sichere Verbindung zu Remote-Netzwerken herzustellen.
  • Dokumentieren und überwachen Sie den Benutzerzugriff auf Daten. Stellen Sie sicher, dass der gesamte Benutzerzugriff auf Daten überprüft und protokolliert wird.
  • Stellen Sie sicher, dass Debug-Endpunkte durch ACLs begrenzt sind.
  • Benutzereingaben bereinigen. 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 eine große Anzahl interner Vorgänge auslösen.

Kapazitätsplanung


  • Dokumentieren Sie, wie Ihr Service skaliert. Zum Beispiel: Anzahl der Benutzer, Größe der eingehenden Nutzdaten, Anzahl der eingehenden Nachrichten.
  • Dokumentieren Sie die Ressourcenanforderungen für Ihren Service. Beispiel: Die Anzahl der zugewiesenen Instanzen der virtuellen Maschine, die Anzahl der Spanner-Instanzen, spezielle Geräte wie eine GPU oder TPU.
  • Dokumentressourcenbeschränkungen: Ressourcentyp, Region usw.
  • Dokumentkontingentgrenzen zum Erstellen neuer Ressourcen. Begrenzen Sie beispielsweise die Anzahl der GCE-API-Anforderungen, wenn Sie die API zum Erstellen neuer Instanzen verwenden.
  • Erwägen Sie die Durchführung von Stresstests, um die Leistungsverschlechterung zu analysieren.

Das ist alles. Wir sehen uns im Klassenzimmer!

Source: https://habr.com/ru/post/de465489/


All Articles