Slurm DevOps: von Git bis SRE mit allen Register

Vom 4. bis 6. September findet in St. Petersburg im Selectel-Konferenzraum ein dreitägiger DevOps Slurm statt.



Wir haben das Programm auf der Idee aufgebaut, dass jeder die theoretischen Arbeiten zu DevOps, wie die Handbücher für die Tools, unabhängig lesen kann. Nur Erfahrung und Übung sind interessant: Eine Erklärung, wie es geht, ist notwendig und nicht notwendig, und eine Geschichte darüber, wie wir es machen.


Jedes Unternehmen, jeder Administrator oder Entwickler hat seine eigene DevOps-Ebene. Einige missbrauchen Git, andere implementieren SRE. Der Kurs ist so organisiert, dass jeder etwas Relevantes findet, das hier und jetzt umgesetzt werden kann.


Wir beginnen mit Git, schauen uns dann die Anwendungsentwicklung, das Zusammenspiel von Code und Infrastruktur an, erstellen CI / CD, beschreiben die Infrastruktur als Code (IaC), testen die resultierende Lösung, richten die Überwachung ein, sammeln und studieren Protokolle und kommen schließlich zu SRE: Turn Reliability in eine messbare und überschaubare Geschichte.


Git


Jetzt wird Geet nicht nur von dem verwendet, der gestern den ersten Laptop gekauft hat. Dies ist ein triviales und allgegenwärtiges Tool, und dennoch stoßen wir häufig auf seinen Missbrauch: vom erzwungenen Push an den Master bis zum Kopieren von Dateien von Gita auf den Server über Strg-C, Strg-V.


Wir sagen Ihnen, wie es geht, ist nicht notwendig, wie es geht, wie man es in Southbridge macht.
Wir bestehen die Praxis: die Grundlagen der Gita, Teamwork.


Thema 1: Git-Grundlagen


  • Grundlegende Befehle git init, commit, add, diff, log, status, pull, push
  • Git Flow, Zweige und Tags, Strategien zusammenführen
  • Arbeiten Sie mit mehreren Remote-Repos

Thema 2: Teamwork mit Git


  • Github fließen
  • Fork, Remote, Pull-Anfrage
  • Konflikte, Veröffentlichungen, noch einmal über Gitflow und andere Strömungen in Bezug auf Teams

Das Material ist so organisiert, dass Administratoren und Entwickler sofort alle Praktiken in der Arbeit implementieren können.


Aus Sicht von DevOps organisiert und automatisiert die ordnungsgemäße Arbeit mit Git die Entwicklungs- und Verwaltungsprozesse, beseitigt eine Reihe wiederkehrender Probleme und verbessert die Arbeitsproduktivität.


DevOps Entwickler


Wir betrachten DevOps mit den Augen des Entwicklers: Wir starten die lokale Umgebung, schreiben eine Anwendung, konfigurieren ihre Überwachung und Protokollierung, testen sie lokal, organisieren die Speicherung von Variablen / Geheimnissen und die Erkennung von Diensten und beobachten die Ablaufverfolgung (Opentracing).


Thema №3: Arbeiten mit der Anwendung aus entwicklungspolitischer Sicht


  • Einrichten Ihrer lokalen Umgebung: Best Practices
  • Wir schreiben einen Microservice in Python (einschließlich Tests)
  • Verwenden von Docker-Compose in der Entwicklung

Thema 4: Interoperabilität von Code und Infrastruktur


  • Konfigurationspraxis

Als Ergebnis werden Entwickler sehen, wie der Code Protokolle senden soll, wie er getestet wird und wie er in Zukunft debuggt wird. Administratoren werden die Anforderungen von Entwicklern verstehen: Welche Fehler im Code auftreten, wie das Testen für Entwickler organisiert wird und wie das Projekt selbst getestet wird.


In dieser Phase ist die Hauptaufgabe von DevOps gelöst: Das gegenseitige Verständnis und die Zusammenarbeit zwischen Jungfrauen und Ops werden aufgebaut. Dies ist ein wichtiger Schritt beim Übergang von der Einführung von Aufgaben zu verantwortungsvollem Engagement.


Infolgedessen wächst die Geschwindigkeit und Qualität der Arbeit.


CI / CD


Moderne Automatisierung beinhaltet CI / CD. Wir beginnen mit der manuellen Automatisierung: Makefiles, Githukes, Skripte. Wir werden analysieren, wann diese Tools noch relevant sind und wann sie nicht verwendet werden sollten.


Schauen wir uns dann die Best Practices des modernen CI am Beispiel von Gitlab an.


Thema 5: CI / CD Einführung in die Automatisierung


  • Einführung in die Automatisierung
  • Werkzeuge (Bash, Make, Gradle)
  • Verwendung von Git-Hooks zur Automatisierung von Prozessen
  • Fabrikförderer-Montagelinien und ihre Anwendung in der IT
  • Ein Beispiel für den Aufbau einer „gemeinsamen“ Pipeline
  • Moderne CI / CD-Software: Drone CI, BitBucket Pipelines, Travis usw.

Thema 6: CI / CD: Arbeiten mit Gitlab


  • Gitlab CI - Allgemein
  • Gitlab Runner, ihre Typen und Anwendung
  • Gitlab CI, Anpassungsfunktionen, Best Practices
  • Gitlab CI-Stufen
  • Gitlab CI-Variablen
  • Montage, Test, Bereitstellung
  • Kontroll- und Ausführungsbeschränkungen: nur wenn
  • Arbeite mit Artefakten
  • Vorlagen in .gitlab-ci.yml, die Aktionen für verschiedene Teile der Pipeline wiederverwenden
  • Include - Abschnitte
  • Zentralisierte Verwaltung von gitlab-ci.yml (eine Datei und automatischer Push in andere Repositorys)

Die gemeinsame Arbeit von Administratoren und Entwicklern erreicht eine neue Ebene: Der Administrator schreibt die CI-Vorlage, und die Entwickler korrigieren sie, indem sie ihr CI unabhängig vom Administrator erstellen.


Die Abhängigkeit der Entwickler von Administratoren wird verringert, der manuelle Arbeitsaufwand wird verringert, das Problem "der einzigen Person, die weiß, wie man mit der Make-up-Datei arbeitet" wird beseitigt. Rollouts erfolgen zuverlässig und schnell.


IaC


Das Thema Infrastruktur als Code am Beispiel von Terraform teilt dem Administrator der Cloud Selectel Alexei Stepanenko mit. Es wird gezeigt, wie Server schnell und automatisch bereitgestellt und skaliert werden, wie Bilder automatisch gepackt werden und wie Konfigurationsvorlagen verwendet werden, um sofort angepasste Computer zu erhalten.


Die Person, die Tausende von IaC-Lösungen entwickelt hat, wird Ihnen sagen, wie Sie es richtig machen und wie es geht.


Die Minimal Edit Selectel Cloud-Lösung eignet sich für Google- und Amazon-Clouds.


Ein Mitarbeiter von Southbridge, Nikolai Mesropyan, wird Ansible als Beispiel verwenden, um zu zeigen, wie eine funktionierende Anwendung ohne Ausfallzeiten bereitgestellt und ihre Funktionalität getestet werden kann.


Wenn Sie die Infrastruktur manuell verwalten (Server konfigurieren, Bibliotheken und Pakete nach Bedarf installieren), müssen Sie sich beim Erstellen einer Kopie der Umgebung alle Ihre Aktionen merken und reproduzieren. Diese Aufgabe dauert leicht 3-5 Tage. Durch die Arbeit mit der Infrastruktur als Code wird sichergestellt, dass Sie über eine aktuelle Beschreibung der Umgebung verfügen, die in wenigen Minuten bereitgestellt werden kann.


Nikolay erklärt Ihnen, wie man Playbooks schreibt, welche Fehler passieren, warum Playbooks manchmal langsam oder nicht wie erwartet funktionieren. Dies ist die Erfahrung langjähriger Nutzung von IaC in Southbridge.


Thema Nr. 7: Infrastruktur als Code


  • IaC: Ein Ansatz zur Infrastruktur als Code
  • Cloud-Anbieter als Infrastrukturanbieter
  • Systeminitialisierungstools, Image-Assembly (Packer)
  • IaC am Beispiel von Terraform
  • Konfigurationsspeicher, Zusammenarbeit, Anwendungsautomatisierung
  • Übe das Erstellen ansibler Spielbücher
  • Idempotenz, Deklarativität
  • IaC Ansible
  • Datenbank als Code / PostgreSQL-Failover

Die Infrastruktur wird deklarativ und idempotent.
Der Administrator lernt, eine komplexe Infrastruktur zu verwalten: Erstellen Sie schnell neue Umgebungen, behalten Sie die Einheit aller Umgebungen bei und sehen Sie sich den Änderungsverlauf an. Dies ist wichtig, wenn mehrere Teams an einem Projekt arbeiten.
Der Entwickler kann die Infrastruktur untersuchen und seine Umgebung unabhängig bereitstellen.


Abschnittsbonus - Erstellen und Konfigurieren eines fehlertoleranten PostgreSQL-Datenbankclusters. Wir geben das fertige Spielbuch, das wir in Southbridge verwenden. Sie stellen einen Cluster am Schulungsstand bereit und können diese Lösung in Ihrem Unternehmen verwenden.


Testen und Überwachen der Infrastruktur


Durch die Automatisierung können Sie den Fehler sofort auf tausend Server übertragen. Jede Änderung erfordert Tests. Auf der anderen Seite dauert das manuelle Testen so lange, dass die Vorteile der Automatisierung zunichte gemacht werden.


Wir werden in der Praxis zeigen, wie man Rollentests schreibt. Als Ergebnis können Sie Tests für Ihr Unternehmen schreiben. Sie müssen sich die vorgenommenen Einstellungen nicht mehr merken, sie in Tests beschreiben und automatisch überprüfen, ob alle früheren Entscheidungen und Krücken vorhanden sind.


Anschließend erfahren Sie, wie Sie automatisch alle neuen Server zur Überwachung hinzufügen. Erwägen Sie die separate Überwachung von Infrastruktur und Anwendungen. Wir zeigen schlechte und gute Praktiken.


Thema 8: Testen der Infrastruktur


  • Testen und kontinuierliche Integration mit Molecule und Gitlab CI
  • Vagrant Anwendung

Thema 9: Überwachung der Infrastruktur mit Prometheus


  • Warum ist eine Überwachung erforderlich?
  • Arten der Überwachung
  • Benachrichtigungen im Überwachungssystem
  • Wie man ein gesundes Überwachungssystem aufbaut
  • Vom Menschen lesbare Hinweise für alle
  • Gesundheitscheck: worauf zu achten ist
  • Automatisierung basierend auf Überwachungsdaten

Unsachgemäße Überwachung ist das Fehlen einer Überwachung. Für Unternehmen spielt es keine Rolle, dass die Hauptseite eines Online-Shops verfügbar ist, wenn die Zahlungsweise einen Fehler enthält.


Entwickler und Administratoren sind gleichermaßen an der Einrichtung der Überwachung und Fehlerbehebung beteiligt. Darüber hinaus fallen Überwachungsaufgaben traditionell den Administratoren zu. Unser Kurs zeigt Entwicklern, welche Rolle sie bei der Erstellung einer effektiven Überwachung spielen. Administratoren erhalten Best Practices für Southbridge. Infolgedessen nimmt die Anzahl der Verluste, die durch Abstürze und Bremsen des Standorts oder der Anwendung verursacht werden, schnell ab.


Abschnittsbonus: Überwachungsbasierte Automatisierung. Die Überwachung meldet beispielsweise, dass eine Last auf der Site eingetroffen ist, und die Skalierung von Webservern wird automatisch gestartet.


Protokollierung


Der Hauptfehler bei der Arbeit mit Protokollen besteht darin, dass Administratoren und Entwickler sie direkt auf den Servern überwachen. Wenn Sie mehr als einen Server haben, ist dies eine lange Zeit. Dies ist nicht weltlich: Der Entwickler betritt den Server dort, wo er nicht sein sollte.


DevOps erfordert eine zentralisierte Protokollerfassung, -verarbeitung und -analyse.


Thema Nr. 10: Anwendungsprotokollierung mit ELK


  • Die Hauptanwendungen und Funktionen von Elastic (Suche, Speicherung, Skalierungsfunktionen, Konfigurationsflexibilität)
  • Übersicht über Kibana (Hauptfunktionen, Abfragesprache, Dashboard-Verwaltung, Diagramme)
  • Überblick über elastische Produkte und deren Anwendung
  • Sammeln von Metriken in APM (Application Tracing)
  • Extras: Neue Produktbewertung - SIEM

Durch die Implementierung dieses Ansatzes werden Protokolle zu einem einfachen und verständlichen Werkzeug für die Analyse, Konfiguration und Anpassung von Anwendungen und Infrastruktur.


SRE


Und wir kommen zu dem Thema, das Southbridge gerade betrachtet und für das andere Redner am letzten Tag von Slurm bleiben wollen. Wir freuen uns, dass Ivan Kruglov von Booking.com zugestimmt hat, es zu lesen.


Ein Projekt lebt in der realen Welt, in der Zuverlässigkeit niemals absolut ist und jede Lösung Geld kostet.


Was ist eine SLA für ein komplexes Projekt? Angenommen, Sie bewerten, ob die Site verfügbar ist, die Bilder werden jedoch verzögert geladen. Was sind die SLA-Metriken, wo werden sie aufgenommen, wie werden sie aufgenommen?


Wie installiere ich SLA? Wie kann man ihnen widerstehen?


Thema Nr. 11: SRE
Definition von SLA, SLO, Fehlerbudget und anderen beängstigenden Begriffen aus der Welt von SRE
SRE: Üben Sie die Überwachung von SLI und SLO
SRE: Fehlerbudgetpraxis
SRE: Interrupt- und Betriebslastmanagement (Apigateway, Service Mesh, Circuit Brackers)
Unternehmen wollen SRE. Zumindest auf der einfachsten Ebene: Einen Backup-Server nehmen oder aus dem Backup erhöhen? Eine Datenbank oder ein Cluster? Ist der DDoS-Schutz proaktiv oder nur zum Zeitpunkt des Angriffs?


Die Direktoren sind nicht zufrieden mit der Geschichte, dass die „Website funktioniert“, wenn ein Kunde ihn anruft und mitteilt, dass das Bestellformular nicht geöffnet wird.


Daher ist es für einen DevOps-Ingenieur wichtig, SRE zumindest oberflächlich zu verstehen, um mit dem Unternehmen angemessen über seine Anforderungen zu sprechen.


Zusammenfassung


Während Slurm DevOps lernen Administratoren und Entwickler:
- richtig mit Git arbeiten;
- lokale Entwicklung organisieren;
- CI / CD konfigurieren (Administratoren) und verwenden (Entwickler);
- mit der Infrastruktur als Code arbeiten;
- die Infrastruktur testen;
- Überwachung der Infrastruktur und Anwendung;
- Protokollierung konfigurieren;
- verstehen und idealerweise - SRE verwenden.


Für aufmerksame Leser - mit dem Habrapost-Gutscheincode 15% Rabatt.


Für alle Punkte bereiten wir Übung und Werkzeuge vor. So kann jeder Teilnehmer nach seiner Rückkehr aus Slurm sein Unternehmen auf die nächste Stufe von DevOps bringen.


Für Unternehmen bedeutet dies eine billigere Verwaltung und Entwicklung, geringere Ausfallzeiten, höhere Zuverlässigkeit, schnellere Bereitstellung von Funktionen und die Beseitigung von Fehlern.

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


All Articles