Warum brauchen Sie DevOps und wer sind DevOps-Spezialisten?

Wenn die Anwendung nicht funktioniert, möchte ich am wenigsten den Satz "Das Problem liegt auf Ihrer Seite" von Kollegen hören. Infolgedessen leiden die Benutzer - aber es ist ihnen egal, welcher Teil des Teams für den Ausfall verantwortlich ist. Die DevOps-Kultur kam nur, um Entwicklung und Unterstützung zusammenzubringen und sie zu einer gemeinsamen Verantwortung für das Endprodukt zu vereinen.

Welche Praktiken sind im Konzept von DevOps enthalten und warum werden sie benötigt? Was machen DevOps-Ingenieure und was sollten sie können? EPAM-Experten beantworten diese und andere Fragen: Kirill Sergeyev, Systemingenieur und DevOps-Evangelist, und Igor Boyko, führender Systemingenieur und Koordinator eines der DevOps-Teams des Unternehmens.



Warum brauche ich DevOps?


Zuvor gab es eine Barriere zwischen Entwicklern und Support (die sogenannten Operationen). Es klingt paradox, aber sie hatten unterschiedliche Ziele und KPIs, obwohl sie eine gemeinsame Sache taten. Das Entwicklungsziel war es, Geschäftsanforderungen so schnell wie möglich umzusetzen und sie einem funktionierenden Produkt hinzuzufügen. Der Support war dafür verantwortlich, dass die Anwendung stabil funktionierte - und alle Änderungen gefährden die Stabilität. Es gibt einen Interessenkonflikt - DevOps scheint ihn zu lösen.

Was ist DevOps?


Die Frage ist gut - und kontrovers: Schließlich hat sich die Welt noch nicht darauf geeinigt. EPAM glaubt, dass DevOps Technologie, Prozesse und eine Kultur der Interaktion innerhalb des Teams kombiniert. Diese Vereinigung zielt auf die kontinuierliche Bereitstellung von Werten an Endbenutzer ab.

Kirill Sergeyev : „Entwickler schreiben den Code, Tester überprüfen ihn und Administratoren installieren das Endprodukt in der Produktionsumgebung. Diese Teile des Teams waren lange Zeit etwas fragmentiert, und dann kam die Idee, sie zu einem gemeinsamen Prozess zu kombinieren. So erschienen die DevOps-Praktiken. “

Der Tag kam, an dem sich Entwickler und Systemingenieure für die Arbeit des anderen interessierten. Die Barriere zwischen Produktion und Support begann zu schwinden. So entstand DevOps, das Praktiken, Kultur und Teamwork umfasst.



Was ist die Essenz der DevOps-Kultur?


Die Tatsache, dass die Verantwortung für das Endergebnis bei jedem Teammitglied liegt. Das Interessanteste und Schwierigste in der DevOps-Philosophie ist zu verstehen, dass eine bestimmte Person nicht nur für ihre Arbeitsphase verantwortlich ist, sondern auch dafür, wie das gesamte Produkt funktioniert. Das Problem liegt auf keiner Seite - es ist üblich und jedes Mitglied des Teams hilft bei der Lösung.

Der wichtigste Punkt der DevOps-Kultur ist die Lösung des Problems und nicht nur die Anwendung der DevOps-Praxis. Darüber hinaus werden diese Praktiken nicht "auf der Seite von jemandem" implementiert, sondern im gesamten Produkt. Das Projekt benötigt keinen eigenen DevOps-Techniker - es benötigt eine Lösung für das Problem, und die Rolle eines DevOps-Ingenieurs kann auf mehrere Teammitglieder mit unterschiedlichen Spezialisierungen verteilt werden.

Was sind DevOps-Praktiken?


DevOps-Praktiken decken alle Phasen des Software-Lebenszyklus ab.

Igor Boyko : „Der Idealfall ist, wenn wir gleich zu Beginn des Projekts mit der Anwendung von DevOps-Praktiken beginnen. Gemeinsam mit Architekten planen wir, welche Art von Anwendung die Architekturlandschaft haben wird, wo sie sich befindet und wie sie skaliert werden soll. Wir wählen die Plattform. Jetzt ist die Microservice-Architektur in Mode - dafür wählen wir ein Orchestrierungssystem: Wir müssen in der Lage sein, jedes Element der Anwendung einzeln zu verwalten und unabhängig von anderen zu aktualisieren. Eine andere Praxis ist "Infrastruktur als Code". Dies ist der Name des Ansatzes, bei dem die Projektinfrastruktur mithilfe von Code erstellt und verwaltet wird und nicht durch direkte Interaktion mit Servern.

Als nächstes gehen wir zur Entwicklungsphase über. Eine der größten Methoden hierbei ist das Erstellen von CI / CD: Sie müssen Entwicklern helfen, Änderungen schnell, in kleinen Portionen, häufiger und schmerzloser in das Produkt zu integrieren. CI / CD behandelt die Codeüberprüfung, das Ausfüllen des Assistenten in die Codebasis und die Bereitstellung der Anwendung in Test- und Produktionsumgebungen.

In CI / CD-Phasen durchläuft der Code Qualitätsgatter. Mit ihrer Hilfe überprüfen sie, ob der Code, der von der Workstation des Entwicklers stammt, die angegebenen Qualitätskriterien erfüllt. Unit- und UI-Tests werden hier hinzugefügt. Für eine schnelle, schmerzlose und zielgerichtete Produktbereitstellung können Sie den geeigneten Bereitstellungstyp auswählen.

DevOps-Praktiken haben einen Platz in der Phase der Unterstützung des fertigen Produkts. Sie werden zur Überwachung, Rückmeldung, Sicherheit und Durchführung von Änderungen verwendet. DevOps betrachtet all diese Aufgaben im Hinblick auf kontinuierliche Verbesserungen. Wir minimieren sich wiederholende Vorgänge und automatisieren sie. Dies umfasst auch Migrationen, Anwendungserweiterungen und Gesundheitsunterstützung. “

Warum sind DevOps-Praktiken nützlich?


Wenn wir ein Lehrbuch über moderne DevOps-Praktiken schreiben würden, gäbe es auf der ersten Seite drei Punkte: Automatisierung, beschleunigte Veröffentlichung und schnelles Benutzer-Feedback.

Kirill Sergeev : „Das erste ist die Automatisierung. Wir können alle Interaktionen im Team automatisieren: Wir haben den Code geschrieben - ausgerollt - geprüft - installiert - Feedback gesammelt - an den Anfang zurückgegeben. Das alles ist automatisch.

Die zweite besteht darin, die Veröffentlichung zu beschleunigen und die Entwicklung sogar zu vereinfachen. Für den Kunden ist es immer wichtig, dass das Produkt so schnell wie möglich auf den Markt kommt und früher als die Analoga der Wettbewerber davon profitiert. Der Produktlieferprozess kann unendlich verbessert werden: Zeit reduzieren, zusätzliche Kontrollmarken hinzufügen, Überwachung verbessern.

Drittens wird das Feedback der Benutzer beschleunigt. Wenn er Kommentare hat, können wir sofort Korrekturen vornehmen und die Anwendung sofort aktualisieren. “



Wie hängen die Konzepte „Systemingenieur“, „Bauingenieur“ und „DevOps-Ingenieur“ zusammen?


Sie kreuzen sich, gehören aber zu leicht unterschiedlichen Bereichen.

Systemingenieur bei EPAM ist eine Position. Sie kommen auf verschiedenen Ebenen: vom Junior bis zum Chefspezialisten.

Ein Bauingenieur ist eher eine Rolle, die für ein Projekt ausgeführt werden kann. Dies ist der Name der Personen, die für CI / CD verantwortlich sind.

Ein DevOps-Ingenieur ist ein Spezialist, der DevOps-Praktiken in einem Projekt implementiert.

Zusammenfassend stellt sich Folgendes heraus: Eine Person in der Position eines Systemingenieurs spielt die Rolle eines Bauingenieurs im Projekt und ist dort an der Implementierung von DevOps-Praktiken beteiligt.

Was genau macht ein DevOps-Ingenieur?


Die Ingenieure von DevOps stellen alle Teile zusammen, aus denen das Projekt besteht. 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, seine Rolle im Entwicklungsprozess - und bauen den Prozess unter Berücksichtigung der Interessen des Kunden auf.

Wir haben viel über Automatisierung gesprochen - DevOps-Ingenieure tun es zuerst. Dies ist ein sehr großer Punkt, zu dem unter anderem die Vorbereitung der Umwelt gehört.

Kirill Sergeyev : „Bevor Updates für das Produkt eingeführt werden, müssen diese in einer Umgebung von Drittanbietern getestet werden. Es wird von DevOps-Ingenieuren vorbereitet. Sie vermitteln dem Projekt die gesamte DevOps-Kultur: Sie führen DevOps-Praktiken auf allen Ebenen ihrer Projekte ein. Diese drei Prinzipien: Automatisierung, Vereinfachung, Beschleunigung - sie bringen überall hin, wo sie erreichen können. "

Was sollte ein DevOps-Ingenieur wissen?


Im Großen und Ganzen sollte er Kenntnisse aus verschiedenen Bereichen haben: Programmieren, Arbeiten mit Betriebssystemen, Datenbanken, Build-Systemen und Konfigurationen. Die Fähigkeit, mit Cloud-Infrastruktur-, Orchestrierungs- und Überwachungssystemen zu arbeiten, wird ihnen hinzugefügt.

1. Programmiersprachen

Die Entwickler von DevOps kennen mehrere grundlegende Sprachen für die Automatisierung und können dem Programmierer beispielsweise sagen: „Komm schon, Sie werden den Code nicht manuell installieren, sondern mit Hilfe unseres Skripts, das alles automatisiert? Wir werden eine Konfigurationsdatei dafür vorbereiten, es wird bequem sein, sie sowohl für Sie als auch für uns zu lesen - und wir können sie jederzeit ändern. Und wir werden sehen, 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 erforderlich, sie auf einer tiefen Ebene zu kennen - nur die Grundlagen der Syntax, die OOP-Prinzipien und die Fähigkeit, einfache Skripte für die Automatisierung zu schreiben.

2. Betriebssysteme

Der Entwickler von DevOps muss wissen, auf welchem ​​Server das Produkt installiert wird, in welcher Umgebung es gestartet wird und mit welchen Diensten es interagiert. Sie können sich auf die Windows- oder Linux-Familie spezialisieren.

3. Versionskontrollsysteme

Ohne die Kenntnis des Versionskontrollsystems ist der DevOps-Ingenieur nirgendwo. Git ist derzeit eines der beliebtesten Systeme.

4. Cloud-Anbieter

AWS, Google, Azure - besonders wenn es um die Windows-Richtung geht.

Kirill Sergeyev : „Cloud-Anbieter stellen uns virtuelle Server zur Verfügung, die perfekt auf CI / CD-Tracks passen.

Die Installation von zehn physischen Servern erfordert ungefähr hundert manuelle Vorgänge. Jeder Server muss manuell gestartet, installiert und das gewünschte Betriebssystem konfiguriert werden, unsere Anwendung auf diesen zehn Servern installieren und dann alles zehnmal überprüfen. Cloud-Dienste ersetzen dieses Verfahren durch zehn Codezeilen, und ein guter DevOps-Techniker sollte in der Lage sein, damit umzugehen. So spart er Zeit, Mühe und Geld - sowohl für den Kunden als auch für das Unternehmen. “

5. Orchestrierungssysteme: Docker und Kubernetes

Kirill Sergeyev : „Virtuelle Server sind in Container unterteilt, in denen wir jeweils unsere Anwendung installieren können. Wenn viele Container vorhanden sind, müssen Sie sie verwalten: einer zum Einschalten, der andere zum Ausschalten, irgendwo zum Erstellen von Backups. Dies wird zu einer ziemlich komplizierten Angelegenheit, für die ein Orchestrierungssystem benötigt wird.

Zuvor war jede Anwendung auf einem separaten Server beschäftigt. Änderungen im Betrieb können sich auf den Zustand der Anwendung auswirken. Dank Containern werden Anwendungen isoliert und separat ausgeführt - jede auf ihrer eigenen virtuellen Maschine. Wenn ein Fehler auftritt, müssen Sie keine Zeit damit verschwenden, nach der Ursache zu suchen. Es ist einfacher, den alten Container zu zerstören und einen neuen hinzuzufügen. "

6. Konfigurationssysteme: Chef, Ansible, Puppet

Wenn Sie eine Serverflotte warten müssen, müssen Sie viele der gleichen Vorgänge ausführen. Es ist lang und schwierig, und selbst manuelle Arbeit erhöht die Fehlerwahrscheinlichkeit. Hier kommen Konfigurationssysteme zum Einsatz. Mit ihrer Hilfe erstellen sie ein Skript, das von Programmierern, DevOps-Ingenieuren und Systemadministratoren bequem gelesen werden kann. Dieses Skript hilft dabei, dieselben Vorgänge automatisch auf Servern auszuführen. So werden manuelle Operationen (und damit Fehler) weniger.

Welche Karriere kann der DevOps-Ingenieur aufbauen?


Sie können sowohl horizontal als auch vertikal entwickeln.

Igor Boyko : „Unter dem Gesichtspunkt der horizontalen Entwicklung haben die DevOps-Ingenieure jetzt die größten Aussichten. Alles ändert sich ständig, und Sie können auf verschiedene Weise Fähigkeiten aufbauen: von Versionskontrollsystemen bis zur Überwachung, vom Konfigurationsmanagement bis zu Datenbanken.

Sie können ein Systemarchitekt werden, wenn ein Mitarbeiter verstehen möchte, wie die Anwendung in allen Phasen ihres Lebenszyklus funktioniert - von der Entwicklung bis zum Support. “

Wie werde ich DevOps-Ingenieur?


  1. Lesen Sie die Phoenix Project-Bücher und das DevOps-Handbuch. Dies sind die wahren Säulen der DevOps-Philosophie. Die erste ist ein künstlerischer Roman.
  2. Lernen Sie die Technologie aus der obigen Liste: in Ihren eigenen oder Online-Kursen.
  3. Treten Sie als DevOps-Ingenieur einem Open Source-Projekt bei.
  4. Üben und bieten Sie DevOps-Übungen für Ihre persönlichen und beruflichen Projekte an.

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


All Articles