Vom 4. bis 6. September findet im Konferenzsaal von Selectel in St. Petersburg ein dreitägiges Event statt. .

Wir haben das Programm mit dem Gedanken erstellt, dass theoretische Arbeiten zu DevOps und Werkzeuganleitungen jeder für sich lesen kann. Interessant sind nur Erfahrung und Praxis: Erklärungen dazu, wie es richtig und falsch gemacht wird, sowie Berichte darüber, wie wir es umsetzen.
In jedem Unternehmen hat jeder Administrator oder Entwickler sein eigenes Niveau in DevOps. Einige verwenden Git nicht korrekt, andere setzen SRE um. Der Kurs ist so organisiert, dass jeder etwas Relevantes findet, das er hier und jetzt implementieren kann.
Wir beginnen mit Git, betrachten dann die Anwendungsentwicklung, die Interaktion von Code und Infrastruktur, bauen CI/CD auf, beschreiben die Infrastruktur als Code (IaC), testen die entstandene Lösung, richten das Monitoring ein, sammeln und analysieren Protokolle und erreichen schließlich SRE: Wir verwandeln Zuverlässigkeit in eine messbare und steuerbare Geschichte.
Git
Heutzutage verwendet nur derjenige kein Git, der gestern seinen ersten Laptop gekauft hat. Es ist ein triviales und allgegenwärtiges Werkzeug, dennoch sehen wir oft eine falsche Anwendung: von einem forcierten Push in den Master bis hin zum Kopieren von Dateien aus Git auf den Server über Ctrl-C, Ctrl-V.
Wir zeigen, was man besser nicht tun sollte, wie es richtig geht und wie es in Southbridge gemacht wird.
Lass uns praktisch arbeiten: die Grundlagen von Git und Teamarbeit.
Thema Nr. 1: Grundlagen der Arbeit mit Git
- Basisbefehle: git init, commit, add, diff, log, status, pull, push
- Git Flow, Branches und Tags, Merge-Strategien
- Arbeiten mit mehreren Remote-Repos
Thema Nr. 2: Teamarbeit mit Git
- GitHub Flow
- Fork, Remote, Pull Request
- Konflikte, Releases, nochmals über Gitflow und andere Flows im Hinblick auf Teams
Das Material ist so organisiert, dass Administratoren und Entwickler die Praktiken sofort in ihrer Arbeit umsetzen können.
Aus der Sicht von DevOps organisiert die korrekte Arbeit mit Git die Entwicklungs- und Verwaltungsprozesse, schließt eine Reihe wiederkehrender Probleme aus und steigert die Effizienz.
DevOps-Entwickler
Blick auf DevOps aus der Perspektive eines Entwicklers: Lokale Umgebung einrichten, Anwendung schreiben, Monitoring und Logging konfigurieren, lokal testen, Variablen/Secrets und Service Discovery organisieren, sowie Tracing (OpenTracing) ansehen.
Thema Nr. 3: Arbeit mit der Anwendung aus der Entwicklungsperspektive
- Einrichtung der lokalen Umgebung: praktische Empfehlungen
- Mikroservice in Python schreiben (inklusive Tests)
- Einsatz von Docker-Compose in der Entwicklung
Thema Nr. 4: Interaktion von Code und Infrastruktur
- Praxis im Umgang mit Konfigurationen
Am Ende werden die Entwickler sehen, wie der Code Logs senden sollte, wie er zu testen ist und wie er später debuggt wird. Administratoren werden die Bedürfnisse der Entwickler verstehen: welche Fehler im Code auftreten, wie sie das Testing für die Entwickler organisieren können und wie sie selbst das Projekt testen.
In dieser Phase wird die Hauptaufgabe von DevOps gelöst: Das gegenseitige Verständnis und die Zusammenarbeit von Devs und Ops wird aufgebaut. Dies ist ein entscheidender Schritt in Richtung einer verantwortungsvollen Interaktion statt einer bloßen Aufgabenübergabe.
Das Ergebnis sind eine höhere Geschwindigkeit und Qualität der Arbeit.
CI/CD
Moderne Automatisierung bedeutet CI/CD. Wir beginnen mit der manuellen Automatisierung: Makefiles, Git-Hooks und Skripte. Dabei betrachten wir, wann diese Werkzeuge noch relevant sind und wann man sie besser nicht einsetzen sollte.
Anschließend schauen wir uns die besten Praktiken moderner CI anhand von GitLab an.
Thema Nr. 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
- Fabriken und Produktionslinien und deren Anwendungen in der IT
- Beispiel für den Aufbau einer 'gemeinsamen' Pipeline
- Moderne Software für CI/CD: Drone CI, Bitbucket-Pipelines, Travis usw.
Thema Nr. 6: CI/CD: Arbeiten mit GitLab
- GitLab CI – Übersicht
- GitLab Runner, ihre Typen und Anwendungen
- GitLab CI, Besonderheiten der Konfiguration, beste Praktiken
- Phasen von GitLab CI
- Variablen in GitLab CI
- Build, Test, Deployment
- Kontrolle und Beschränkungen der Ausführung: only, when
- Arbeiten mit Artefakten
- Vorlagen innerhalb von .gitlab-ci.yml, Wiederverwendung von Aktionen in verschiedenen Teilen der Pipeline
- Include – Abschnitte
- Zentralisierte Verwaltung von gitlab-ci.yml (eine Datei und automatische Pushes in andere Repositories)
Die Zusammenarbeit zwischen Administratoren und Entwicklern erreicht eine neue Dimension: Der Administrator erstellt ein CI-Template, das die Entwickler anpassen, um ihren CI unabhängig vom Administrator zu gestalten.
Die Abhängigkeit der Entwickler von den Administratoren wird reduziert, der manuelle Aufwand verringert sich, und das Problem des 'einzigen Experten, der mit der Make-Datei umgehen kann', gehört der Vergangenheit an. Deployments erfolgen zuverlässig und zügig.
IaC
Das Thema Infrastructure as Code wird am Beispiel von Terraform durch den Cloud-Administrator von Selectel, Alexey Stepanenko, behandelt. Er zeigt, wie Server schnell und automatisiert bereitgestellt und skaliert werden können, wie man Images automatisch paketiert und wie Konfigurationsvorlagen verwendet werden, um sofort einsatzbereite Maschinen zu erhalten.
Eine Person, die Tausende von IaC-Lösungen realisiert hat, wird erläutern, wie man es richtig macht und wie man es besser vermeiden sollte.
Die Lösung von Selectel für die Cloud eignet sich mit minimalen Anpassungen für die Clouds von Google und Amazon.
Mitarbeiter von Southbridge, Nikolai Mesropyan, wird am Beispiel von Ansible zeigen, wie man eine funktionierende Anwendung ohne Downtime bereitstellt und deren Funktionsfähigkeit überprüft.
Wenn Sie Ihre Infrastruktur manuell verwalten (Server konfigurieren, nach Bedarf Bibliotheken und Pakete installieren), müssen Sie sich bei dem Versuch, eine Kopie der Umgebung zu erstellen, an alle Ihre Schritte erinnern und diese reproduzieren. Diese Aufgabe kann leicht 3-5 Tage in Anspruch nehmen. Mit Infrastructure as Code arbeiten garantiert, dass Sie eine aktuelle Beschreibung der Umgebung haben, die sich in Minuten bereitstellen lässt.
Nikolaus wird erläutern, wie man Playbooks schreibt, welche Fehler auftreten können und warum Playbooks manchmal langsam arbeiten oder nicht wie erwartet funktionieren. Dies ist die Erfahrung vieler Jahre mit IaC bei Southbridge.
Thema Nr. 7: Infrastructure as Code
- IaC: Ansatz zur Infrastruktur als Code
- Cloud-Anbieter als Infrastruktur-Dienstleister
- Initialisierungstools, Image-Bau (Packer)
- IaC am Beispiel von Terraform
- Konfigurationsspeicherung, Zusammenarbeit, Automatisierung von Anwendungen
- Praxis der Erstellung von Ansible-Playbooks
- Idempotenz, Deklarativität
- IaC am Beispiel von Ansible
- Database as a Code / Ausfallsicherheit von PostgreSQL
Die Infrastruktur erhält Deklarativität und Idempotenz.
Der Administrator lernt, eine komplexe Infrastruktur zu verwalten: neue Umgebungen schnell zu erstellen, die Einheitlichkeit aller Umgebungen aufrechtzuerhalten und die Historie von Änderungen zu sehen, was entscheidend ist, wenn mehrere Teams an einem Projekt arbeiten.
Der Entwickler kann die Infrastruktur erkunden und eigenständig Umgebungen bereitstellen.
Der Bonus des Abschnitts besteht in der Erstellung und Einrichtung eines ausfallsicheren PostgreSQL-Datenbankclusters. Wir stellen Ihnen ein fertiges Playbook zur Verfügung, das wir bei Southbridge verwenden. Sie werden den Cluster auf einem Teststand aufsetzen und können dieses Konzept in Ihrem Unternehmen anwenden.
Testen der Infrastruktur und Monitoring
Automatisierung ermöglicht es, einen Fehler sofort auf tausend Server auszurollen. Bei jeder Änderung ist ein Test erforderlich. Andererseits ist manuelles Testen so zeitaufwändig, dass es die Vorteile der Automatisierung zunichte macht.
Wir zeigen Ihnen praktisch, wie man Tests für Rollen schreibt. So können Sie Tests für Ihr Unternehmen erstellen. Sie müssen sich nicht mehr die getätigten Einstellungen merken, sondern beschreiben sie in den Tests und überprüfen automatisch, dass alle früheren Lösungen und Hacks vorhanden sind.
Anschließend lernen wir, alle neuen Server automatisch in das Monitoring aufzunehmen. Wir betrachten das Monitoring von Infrastruktur und Anwendungen getrennt und zeigen Ihnen sowohl schlechte als auch gute Praktiken.
Thema Nr. 8: Testen der Infrastruktur
- Testen und kontinuierliche Integration mit Molecule und Gitlab CI
- Einsatz von Vagrant
Thema Nr. 9: Monitoring der Infrastruktur mit Prometheus
- Warum ist Monitoring wichtig?
- Arten des Monitorings
- Benachrichtigungen im Monitoring-System
- Wie man ein gesundes Überwachungssystem aufbaut
- Menschenlesbare Benachrichtigungen für alle
- Health Checks: Worauf Sie achten sollten
- Automatisierung basierend auf Monitoring-Daten
Ein fehlerhaftes Monitoring bedeutet kein Monitoring. Für Unternehmen ist es unerheblich, wenn die Hauptseite des Online-Shops verfügbar ist, solange das Zahlungsformular einen Fehler ausgibt.
Bei der Einrichtung des Monitorings und der Fehlersuche beteiligen sich Entwickler und Administratoren gleichwertig. Traditionell liegen die Monitoring-Aufgaben jedoch bei den Administratoren. Unser Kurs zeigt Entwicklern, welche Rolle sie bei der Erstellung eines effektiven Monitorings spielen. Administratoren profitieren von den besten Praktiken von Southbridge. Dadurch werden die durch Ausfälle und Verzögerungen der Website oder Anwendung verursachten Verluste schnell zurückgehen.
Bonus dieses Abschnitts: Automatisierung basierend auf Monitoring. Beispielsweise informiert das Monitoring darüber, dass eine Last auf der Website eingegangen ist, und das Skalieren der Web-Server wird automatisch gestartet.
Protokollierung
Der Hauptfehler beim Umgang mit Logs besteht darin, dass Administratoren und Entwickler diese direkt auf den Servern einsehen. Wenn Sie mehr als einen Server haben, dauert das lange. Zudem ist das unsicher: Der Entwickler betritt einen Server, wo er nicht sein sollte.
DevOps erfordert die zentrale Sammlung, Verarbeitung und Analyse von Logs.
Thema Nr. 10: Anwendungsprotokollierung mit ELK
- Hauptanwendungen und Möglichkeiten von Elastic (Suche, Speicherung, Skalierungsmerkmale, Anpassungsflexibilität)
- Überblick über Kibana (Hauptfunktionen, Abfragesprache, Dashboard-Management, Erstellung von Grafiken)
- Überblick über Produkte auf Basis von Elastic und deren Anwendung
- Metrics in APM sammeln (Anwendungstracing)
- Zusätzlich: Überblick über das neue Produkt - SIEM
Die Implementierung dieses Ansatzes wird Logs zu einem einfachen und klaren Werkzeug für die Analyse, Konfiguration und Feinabstimmung von Anwendungen und Infrastruktur machen.
-Praktiken. Bei 1000 Mikrodiensten, etwa 350 Entwicklern und 15 Admins für die gesamte Infrastruktur wird es notwendig, „modisch“ zu sein: hinter all diesen „Buzzwords“ steckt ein dringender Bedarf an Automatisierung aller Prozesse, und die Admins dürfen nicht das Engpassproblem im Ablauf sein.
Nun kommen wir zu einem Thema, das Southbridge nur genauer unter die Lupe nimmt und aufgrund dessen andere Referenten am letzten Tag des Slurm bleiben möchten. Wir freuen uns, dass Ivan Kruglov von Booking.com bereit ist, darüber zu sprechen.
Das Projekt lebt in einer realen Welt, in der Zuverlässigkeit niemals absolut ist und jede Entscheidung Kosten verursacht.
Was ist SLA im Kontext eines komplexen Projekts? Wie bewertet man, ob eine Website verfügbar ist, aber die Bilder mit Verzögerung geladen werden? Welche SLA-Metriken gibt es, woher bekommt man sie und wie erhebt man sie?
Wie legt man ein SLA fest? Wie hält man sie ein?
Thema Nr. 11: SRE
Definition von SLA, SLO, Error Budget und anderen fachlichen Begriffen aus der SRE-Welt
SRE: Praktiken zur Überwachung von SLI und SLO
SRE: Anwendung des Error Budgets
SRE: Management von Unterbrechungen und Betriebslast (apigateway, Service Mesh, Circuit Breaker)
Das Geschäft verlangt nach SRE. Selbst auf einfachster Ebene: einen Backup-Server nutzen oder aus einem Backup wiederherstellen? Eine Datenbank oder ein Cluster? DDoS-Schutz präventiv installieren oder nur im Falle eines Angriffs?
Die Geschäftsführung wird nicht zufrieden sein mit der Aussage, dass "die Website funktioniert", wenn ein Kunde anruft und berichtet, dass das Bestellformular nicht geladen wird.
Deshalb ist es für einen DevOps-Ingenieur wichtig, zumindest ein grundlegendes Verständnis von SRE zu haben, um angemessen mit dem Geschäft über dessen Bedürfnisse zu kommunizieren.
Zusammenfassung
Im Laufe der Zeit werden Administratoren und Entwickler lernen:
– richtig mit Git zu arbeiten;
– lokale Entwicklung zu organisieren;
– CI/CD zu konfigurieren (Administratoren) und zu nutzen (Entwickler);
– mit Infrastruktur als Code zu arbeiten;
— Infrastruktur testen;
— Infrastruktur und Anwendungen überwachen;
— Protokollierung einrichten;
— verstehen und idealerweise SRE nutzen.
Für aufmerksame Leser — mit dem Promo-Code habrapost erhalten Sie 15% Rabatt.
Für alle Themen bereiten wir praktische Übungen und Werkzeuge vor. So kann jeder Teilnehmer nach dem Slurm seine Firma auf das nächste DevOps-Niveau bringen.
Für Unternehmen bedeutet dies eine Senkung der Verwaltungskosten und Entwicklungskosten, reduzierte Ausfallzeiten, höhere Zuverlässigkeit, schnellere Bereitstellung von Funktionen und Fehlerbehebung.
Quelle: habr.com
