Wenn eine Anwendung nicht funktioniert, möchte man am wenigsten von Kollegen die Worte "Das Problem liegt bei Ihnen" hören. Am Ende leiden die Nutzer â und es ist ihnen egal, welcher Teil des Teams fĂŒr den Ausfall verantwortlich ist. Die DevOps-Kultur entstand gerade, um Entwicklung und Betrieb zusammenzufĂŒhren und sie um die gemeinsame Verantwortung fĂŒr das Endprodukt zu vereinen.
Welche Praktiken gehören zum Konzept DevOps und warum sind sie wichtig? Womit beschÀftigen sich DevOps-Ingenieure und was sollten sie können? Diese und weitere Fragen beantworten die Experten von EPAM: Kirill Sergeev, Systemingenieur und DevOps-Evangelist, und Igor Boiko, leitender Systemingenieur und Koordinator eines der DevOps-Teams des Unternehmens.

Warum ist DevOps notwendig?
FrĂŒher gab es eine Barriere zwischen Entwicklern und dem Betrieb (sogenannte Operations). Es klingt paradox, aber sie hatten unterschiedliche Ziele und KPIs, obwohl sie an derselben Sache arbeiteten. Das Ziel der Entwicklung war es, die GeschĂ€ftsanforderungen so schnell wie möglich umzusetzen und in das funktionierende Produkt zu integrieren. Der Betrieb war dafĂŒr verantwortlich, dass die Anwendung stabil lief â und jede Ănderung gefĂ€hrdet die StabilitĂ€t. Es gibt einen Interessenkonflikt â DevOps entstand, um dieses Problem zu lösen.
Was ist DevOps?
Die Frage ist gut â und kontrovers: Eine endgĂŒltige Einigung ĂŒber dieses Thema gibt es bisher nicht. Bei EPAM glauben wir, dass DevOps Technologien, Prozesse und eine Kultur der Interaktion innerhalb des Teams vereint. Diese Vereinigung zielt auf die kontinuierliche Bereitstellung von Werten an die Endbenutzer ab.
Kirill Sergeev: "Entwickler schreiben Code, Tester ĂŒberprĂŒfen ihn, und Administratoren installieren das Endprodukt in der Produktionsumgebung. Lange Zeit waren diese Teile des Teams etwas getrennt, bis die Idee entstand, sie durch einen gemeinsamen Prozess zu vereinen. So entstanden die DevOps-Praktiken."
Der Tag kam, an dem Entwickler und Systemingenieure am anderen Arbeitsbereich interessiert waren. Die Barriere zwischen Produktion und Betrieb begann zu verschwinden. So entstand DevOps, das Praktiken, Kultur und Ordnung der Interaktion im Team umfasst.

Was ist das Wesen der DevOps-Kultur?
Es liegt in der Verantwortung jedes Teammitglieds, das Endergebnis zu erzielen. Das Interessanteste und Schwierigste an der DevOps-Philosophie ist es zu verstehen, dass eine bestimmte Person nicht nur fĂŒr ihren Arbeitsschritt verantwortlich ist, sondern auch dafĂŒr, wie das gesamte Produkt funktionieren wird. Das Problem liegt nicht auf der Seite eines einzelnen â es ist gemeinsam, und jedes Teammitglied hilft, es zu lösen.
Die wichtigste Regel der DevOps-Kultur besteht darin, Probleme zu lösen und nicht nur DevOps-Praktiken anzuwenden. DarĂŒber hinaus werden diese Praktiken nicht âauf der Seite von jemandemâ umgesetzt, sondern im gesamten Produkt. Ein Projekt benötigt nicht nur einen DevOps-Ingenieur â es braucht eine Lösung fĂŒr das Problem, und die Rolle des DevOps-Ingenieurs kann auf mehrere Teammitglieder mit unterschiedlichen Spezialisierungen verteilt werden.
Welche DevOps-Praktiken gibt es?
DevOps-Praktiken decken alle Phasen des Software-Lebenszyklus ab.
Igor Bojko: 'Der ideale Fall ist, wenn wir DevOps-Praktiken bereits bei der Initiierung des Projekts anwenden. Zusammen mit Architekten planen wir, welche architektonische Landschaft die Anwendung haben wird, wo sie sich befinden und wie sie skaliert werden kann, und wĂ€hlen die Plattform aus. Derzeit ist die Mikroservices-Architektur im Trend â dafĂŒr wĂ€hlen wir ein Orchestrierungssystem: Man muss in der Lage sein, jedes Element der Anwendung einzeln zu verwalten und unabhĂ€ngig von anderen zu aktualisieren. Eine weitere Praxis ist âInfrastruktur als Codeâ. So wird der Ansatz genannt, bei dem die Infrastruktur eines Projekts durch Code erstellt und verwaltet wird, nicht durch direkte Interaktion mit den Servern.
Dann gehen wir zur Entwicklungsphase ĂŒber. Hier ist eine der gröĂten Praktiken der Aufbau von CI/CD: Die Entwickler mĂŒssen dabei unterstĂŒtzt werden, Ănderungen schnell, in kleinen Portionen, hĂ€ufiger und schmerzlos in das Produkt zu integrieren. CI/CD umfasst sowohl die ĂberprĂŒfung des Codes, das Einpflegen des Masters in die Codebasis als auch die Bereitstellung der Anwendung in Test- und Produktionsumgebungen.
In den CI/CD-Phasen durchlĂ€uft der Code QualitĂ€tsprĂŒfungen. Damit wird sichergestellt, dass der Code, der von der Arbeitsstation des Entwicklers kommt, den festgelegten QualitĂ€tskriterien entspricht. Hier kommen auch Unit- und UI-Tests hinzu. FĂŒr eine schnelle, schmerzlose und fokussierte Bereitstellung des Produkts kann der geeignete Bereitstellungstyp gewĂ€hlt werden.
DevOps-Praktiken haben ihren Platz auch in der Support-Phase eines fertigen Produkts. Sie werden fĂŒr Ăberwachung, Feedback, Sicherheit und Implementierung von Ănderungen eingesetzt. Auf all diese Aufgaben schaut DevOps aus der Perspektive stĂ€ndiger Verbesserungen. Wir minimieren wiederkehrende Operationen und automatisieren sie. Dazu gehören auch Migrationen, Erweiterungen der Anwendung und die GewĂ€hrleistung der Betriebsbereitschaft.
Wie nĂŒtzlich sind DevOps-Praktiken?
Wenn wir ein Lehrbuch ĂŒber moderne DevOps-Praktiken schreiben wĂŒrden, wĂŒrden auf der ersten Seite drei Punkte stehen: Automatisierung, Beschleunigung der Veröffentlichung und schnelles Feedback von Nutzern.
Kirill SergeevDas Erste ist die Automatisierung. Alle Interaktionen im Team können wir automatisieren: Code geschrieben â veröffentlicht â ĂŒberprĂŒft â installiert â Feedback gesammelt â zurĂŒck zum Anfang. All dies erfolgt automatisch.
Das Zweite ist die Beschleunigung des Release-Zyklus und sogar die Vereinfachung der Entwicklung. Dem Kunden ist es immer wichtig, dass das Produkt so schnell wie möglich auf den Markt kommt und frĂŒher Nutzen bringt als die Konkurrenz. Der Prozess der ProdukteinfĂŒhrung kann immer weiter verbessert werden: Zeit verkĂŒrzen, zusĂ€tzliche Kontrollmarken hinzufĂŒgen und das Monitoring optimieren.
Das Dritte ist die Beschleunigung des Nutzerfeedbacks. Wenn der Nutzer Anmerkungen hat, können wir sofort Anpassungen vornehmen und die Anwendung umgehend aktualisieren.

Wie stehen die Begriffe "Systemingenieur", "Build-Ingenieur" und "DevOps-Ingenieur" zueinander?
Sie ĂŒberschneiden sich, beziehen sich jedoch auf etwas unterschiedliche Bereiche.
Ein Systemingenieur bei EPAM ist eine Position. Sie gibt es in unterschiedlichen Levels: von Junior bis Chief-Spezialist.
Ein Build-Ingenieur ist eher eine Rolle, die man im Projekt ĂŒbernehmen kann. So bezeichnet man jetzt Personen, die fĂŒr CI/CD verantwortlich sind.
Ein DevOps-Ingenieur ist ein Spezialist, der DevOps-Praktiken im Projekt implementiert.
Zusammenfassend ergibt sich folgendes Bild: Eine Person in der Position eines Systemingenieurs erfĂŒllt in einem Projekt die Rolle eines Build-Ingenieurs und beschĂ€ftigt sich dort mit der Implementierung von DevOps-Praktiken.
Womit genau beschÀftigt sich ein DevOps-Ingenieur?
DevOps-Ingenieure bringen alle Teile eines Projekts zusammen. Sie kennen die Besonderheiten der Arbeit von Programmierern, Testern und Systemadministratoren und helfen, ihre Arbeit zu vereinfachen. Sie verstehen die BedĂŒrfnisse und Anforderungen des Unternehmens, dessen Rolle im Entwicklungsprozess und gestalten den Prozess unter BerĂŒcksichtigung der Interessen des Auftraggebers.
Wir haben viel ĂŒber Automatisierung gesprochen â das ist das Hauptaugenmerk der DevOps-Ingenieure. Es ist ein sehr groĂer Punkt, der unter anderem die Vorbereitung von Umgebungen umfasst.
Kirill SergeevâBevor Ănderungen am Produkt implementiert werden, mĂŒssen sie in einer externen Umgebung getestet werden. Diese wird von den DevOps-Ingenieuren vorbereitet. Sie fördern auch die DevOps-Kultur im Projekt insgesamt: Sie implementieren DevOps-Praktiken auf allen Ebenen ihrer Projekte. Diese drei Prinzipien: Automatisierung, Vereinfachung, Beschleunigung â bringen sie ĂŒberall dorthin, wo sie Zugriff haben.â
Was sollte ein DevOps-Ingenieur wissen?
Im Grunde genommen sollte er Wissen aus verschiedenen Bereichen haben: Programmierung, Umgang mit Betriebssystemen, Datenbanken, Build- und Konfigurationssystemen. Dazu kommt die FĂ€higkeit, mit Cloud-Infrastruktur, Orchestrierungs- und Ăberwachungssystemen zu arbeiten.
1. Programmiersprachen
DevOps-Ingenieure kennen mehrere grundlegende Sprachen zur Automatisierung und können beispielsweise zu einem Programmierer sagen: âLass uns die Codeinstallation nicht manuell durchfĂŒhren, sondern unser Skript benutzen, das alles automatisiert. Wir bereiten eine Konfigurationsdatei vor, die sowohl fĂŒr dich als auch fĂŒr uns leicht lesbar ist â und wir können sie jederzeit Ă€ndern. AuĂerdem sehen wir, wer, wann und warum Ănderungen daran vornimmt.â
Ein DevOps-Ingenieur kann eine oder mehrere dieser Sprachen lernen: Python, Groovy, Bash, Powershell, Ruby, Go. Es ist nicht notwendig, sie auf einem tiefen Niveau zu beherrschen â Grundkenntnisse der Syntax, der Prinzipien der OOP und die FĂ€higkeit, einfache Skripte zur Automatisierung zu schreiben, sind ausreichend.
2. Betriebssysteme
Ein DevOps-Ingenieur sollte verstehen, auf welchem Server das Produkt installiert wird, in welcher Umgebung es lÀuft und mit welchen Diensten es interagiert. Man kann sich auf Windows oder Linux-Familien spezialisieren.
3. Versionskontrollsysteme
Ohne Kenntnisse ĂŒber Versionskontrollsysteme kommt ein DevOps-Ingenieur nicht weit. Git ist eines der derzeit beliebtesten Systeme.
4. Cloud-Anbieter
AWS, Google, Azure â insbesondere wenn wir ĂŒber den Windows-Bereich sprechen.
Kirill Sergeev: âCloud-Anbieter stellen uns virtuelle Server, die hervorragend auf CI/CD-Schienen passen.
Die Installation von zehn physischer Server erfordert etwa einhundert manuelle Operationen. Jeder Server muss manuell gestartet, das passende Betriebssystem installiert und konfiguriert, unsere Anwendung auf diesen zehn Servern installiert und dann alles zehnmal ĂŒberprĂŒft werden. Cloud-Services ersetzen dieses Verfahren durch zehn Codezeilen, und ein guter DevOps-Ingenieur sollte in der Lage sein, damit zu arbeiten. So spart er Zeit, MĂŒhe und Geld â sowohl fĂŒr den Auftraggeber als auch fĂŒr das Unternehmen.â
5. Orchestrierungssysteme: Docker und Kubernetes
Kirill Sergeev: âVirtuelle Server werden in Container aufgeteilt, in die wir unsere Anwendung installieren können. Wenn es viele Container gibt, mĂŒssen wir sie verwalten: einen einschalten, einen anderen ausschalten, irgendwo Backups machen. Das wird ziemlich kompliziert, wofĂŒr ein Orchestrierungssystem erforderlich ist.
FrĂŒher wurde jede Anwendung von einem separaten Server betrieben â VerĂ€nderungen in dessen Betrieb konnten die FunktionalitĂ€t der Anwendung beeintrĂ€chtigen. Dank der Container werden Anwendungen isoliert und separat gestartet â jede auf ihrer eigenen virtuellen Maschine. Wenn es zu einem Ausfall kommt, muss man keine Zeit mit der Fehlersuche verschwenden. Es ist einfacher, den alten Container zu löschen und einen neuen hinzuzufĂŒgen.â
6. Konfiguration Systeme: Chef, Ansible, Puppet
Wenn es notwendig ist, einen ganzen Serverpark zu warten, sind viele identische Operationen erforderlich. Das dauert lange und ist kompliziert, und manuelle Arbeiten erhöhen die Fehlerwahrscheinlichkeit. Hier kommen Konfiguration Systeme ins Spiel. Damit wird ein Skript erstellt, das sowohl fĂŒr Programmierer, DevOps-Ingenieure als auch Systemadministratoren leicht zu lesen ist. Dieses Skript hilft, identische Operationen automatisch auf den Servern durchzufĂŒhren. So verringert sich die Anzahl der manuellen Operationen (und damit der Fehler).
Welche Karriere kann ein DevOps-Ingenieur aufbauen?
Man kann sich sowohl horizontal als auch vertikal weiterentwickeln.
Igor Bojko: âAus der Sicht der horizontalen Entwicklung haben DevOps-Ingenieure derzeit die breitesten Perspektiven. Alles Ă€ndert sich stĂ€ndig, und die FĂ€higkeiten können in verschiedenen Bereichen ausgebaut werden: von Versionskontrollsystemen ĂŒber Monitoring, von Konfigurationsmanagement bis hin zu Datenbanken.
Man kann Systemsarchitekt werden, wenn es einem Mitarbeiter interessiert, zu verstehen, wie eine Anwendung in allen Phasen ihres Lebenszyklus funktioniert â von der Entwicklung bis zur UnterstĂŒtzung.
Wie wird man ein DevOps-Ingenieur?
- Lesen Sie die BĂŒcher âProjekt 'Phoenix'â und das DevOps Handbook. Diese sind echte SĂ€ulen der DevOps-Philosophie, wobei das erste ein Roman ist.
- Erlangen Sie Kenntnisse ĂŒber die oben genannten Technologien: selbststĂ€ndig oder in Online-Kursen.
- SchlieĂen Sie sich als DevOps-Ingenieur einem Open-Source-Projekt an.
- Praktizieren Sie und schlagen Sie DevOps-Praktiken in Ihren persönlichen und beruflichen Projekten vor.
Quelle: habr.com
