Wer ist DevOps und wann wird es nicht benötigt



Das DevOps-Thema ist in den letzten Jahren sehr beliebt geworden. Viele träumen davon, sich ihm anzuschließen, aber wie die Praxis zeigt, oft nur wegen der Höhe der Gehälter.

Einige geben DevOps in ihren Lebensläufen an, obwohl sie die Essenz des Begriffs nicht immer kennen und verstehen. Jemand glaubt, dass das Studium von Ansible, GitLab, Jenkins, Terraform und dergleichen (die Liste kann nach Ihren Wünschen fortgesetzt werden) sofort zu einem „Devoop“ wird. Das ist natürlich nicht so.

In den letzten Jahren war ich hauptsächlich an der Implementierung von DevOps in verschiedenen Unternehmen beteiligt. Davor war er mehr als 20 Jahre in Positionen vom Systemadministrator bis zum IT-Direktor tätig. Jetzt - DevOps Lead Engineer bei Playgendary.

Wer ist DevOps?


Die Idee, einen Artikel zu schreiben, kam nach einer anderen Frage: "Wer ist DevOps?". Es gibt noch keinen festen Begriff dafür, was oder wer es ist. Einige der Antworten finden Sie bereits in diesem Video . Zuerst werde ich die wichtigsten Punkte herausgreifen und dann meine Beobachtungen und Gedanken teilen.

DevOps ist kein Spezialist, den Sie einstellen können, keine Reihe von Dienstprogrammen und keine Entwicklungsabteilung mit Ingenieuren.

DevOps ist eine Philosophie und Methodik.

Mit anderen Worten, dies ist eine Reihe von Methoden, mit denen Entwickler aktiv mit Systemadministratoren interagieren können. Das heißt, Arbeitsprozesse miteinander zu verbinden und zu integrieren.

Mit dem Aufkommen von DevOps blieben Struktur und Rollen der Spezialisten gleich (es gibt Entwickler, es gibt Ingenieure), aber die Regeln für die Interaktion haben sich geändert. Verwischte die Grenzen zwischen den Abteilungen.

Die Ziele von DevOps können auf drei Arten beschrieben werden:

  • Die Software sollte regelmäßig aktualisiert werden.
  • Software sollte schnell erledigt sein.
  • Software sollte bequem und in kurzer Zeit bereitgestellt werden.

DevOps hat kein einziges Tool. Das Konfigurieren, Liefern und Erkunden mehrerer Produkte bedeutet nicht, dass DevOps im Unternehmen aufgetreten ist. Es gibt viele Tools und jeder ist in verschiedenen Phasen involviert, aber sie dienen einem gemeinsamen Ziel.


Und dies ist nur ein Teil der DevOps-Tools.

Seit mehr als zwei Jahren interviewe ich Menschen für die Position eines DevOps-Ingenieurs und habe erkannt, wie wichtig es ist, das Wesentliche des Begriffs klar zu verstehen. Ich habe bestimmte Erfahrungen, Beobachtungen und Gedanken gesammelt, die ich teilen möchte.

Aus der Interviewerfahrung sehe ich folgendes Bild: Spezialisten, die DevOps als Job betrachten, haben normalerweise Missverständnisse mit Kollegen .

Es gab ein anschauliches Beispiel. Ein junger Mann kam zum Interview mit ein paar klugen Worten im Lebenslauf. An den letzten drei Arbeitsplätzen hatte er 5-6 Monate Erfahrung. Er hat zwei Startups verlassen, weil sie "nicht gestartet sind". Und was das dritte Unternehmen betrifft, sagte er, dass niemand es versteht: Die Entwickler schreiben den Code unter Windows, und der Direktor erzwingt, dass dieser Code in einen regulären Docker „eingewickelt“ und in eine CI / CD-Pipeline eingebettet wird. Der Typ erzählte viele negative Dinge über seinen aktuellen Job und seine Kollegen - ich wollte antworten: "Also wirst du den Elefanten nicht verkaufen."

Dann stellte ich ihm eine Frage, die für jeden Kandidaten eine der ersten auf meiner Liste ist.

- Was bedeutet DevOps für Sie persönlich?
- Allgemein oder wie nehme ich es wahr?

Ich war an seiner persönlichen Meinung interessiert. Er kannte die Theorie und den Ursprung des Begriffs, war aber mit ihnen nicht einverstanden. Er dachte, DevOps sei ein Beitrag. Hier liegt die Wurzel seiner Probleme. Wie andere Profis mit der gleichen Meinung.

Arbeitgeber, die von der "Magie von DevOps" gehört haben, möchten eine Person finden, die diese "Magie" erschafft. Und die Bewerber aus der Kategorie "DevOps - diese Position" verstehen nicht, dass sie mit diesem Ansatz die Erwartungen nicht erfüllen können. Und im Allgemeinen haben DevOps in ihrem Lebenslauf geschrieben, weil dies ein Trend ist und sie viel dafür bezahlen.

Methodik und Philosophie DevOps


Die Methodik ist theoretisch und praktisch. In unserem Fall der zweite. Wie oben erwähnt, handelt es sich bei DevOps um eine Reihe von Praktiken und Strategien, mit denen die festgelegten Ziele erreicht werden. Und in jedem Fall kann es je nach Geschäftsprozess des Unternehmens erheblich abweichen. Was es nicht besser oder schlechter macht.

Die DevOps-Methode ist nur ein Mittel, um Ihre Ziele zu erreichen.

Nun zu der Philosophie von DevOps. Und das ist wahrscheinlich die schwierigste Frage.

Es ist ziemlich schwierig, eine kurze und prägnante Antwort zu formulieren, da sie noch nicht formalisiert wurde. Und da Anhänger der DevOps-Philosophie mehr in der Praxis tätig sind, bleibt einfach keine Zeit zum Philosophieren. Dies ist jedoch ein sehr wichtiger Prozess. Und direkt im Zusammenhang mit Engineering-Aktivitäten. Es gibt sogar ein spezialisiertes Wissensgebiet - die Philosophie der Technologie .

An meiner Universität gab es kein solches Fach, ich musste alles selbst studieren, basierend auf Materialien, die ich in den 90ern finden konnte. Das Thema ist für die Ingenieurausbildung optional, daher die fehlende Formalisierung der Antwort. Aber diejenigen, die ernsthaft in DevOps vertieft sind, spüren eine Art "Geist" oder "unbewusstes Verständnis" aller Prozesse des Unternehmens.

Ich habe versucht, einige der "Postulate" dieser Philosophie zu formalisieren. Es stellte sich Folgendes heraus:

  • DevOps ist nichts Unabhängiges, das in einen separaten Wissens- oder Tätigkeitsbereich unterteilt werden kann.
  • Die DevOps-Methodik sollte von allen Mitarbeitern des Unternehmens geleitet werden, die ihre Aktivitäten planen.
  • DevOps beeinflusst alle Prozesse im Unternehmen.
  • DevOps reduziert den Zeitaufwand für Prozesse im Unternehmen, um die Entwicklung seiner Services und maximalen Kundenkomfort sicherzustellen.
  • DevOps ist in moderner Sprache die proaktive Position jedes Mitarbeiters des Unternehmens, die darauf abzielt, die Zeitkosten zu senken und die Qualität der uns umgebenden IT-Produkte zu verbessern.

Ich denke, dass meine „Postulate“ ein separates Diskussionsthema sind. Aber jetzt gibt es etwas, worauf man aufbauen kann.

Was macht DevOps?


Das Schlüsselwort hier ist Kommunikation. Es gibt viele Kommunikationen, deren Initiator der DevOps-Ingenieur sein sollte. Warum so? Weil es Philosophie und Methodik sind und erst dann Ingenieurwissen.

Ich kann nicht mit 100% iger Sicherheit über den westlichen Arbeitsmarkt sprechen. Aber ich weiß ziemlich viel über den DevOps-Markt in Russland. Neben Hunderten von Interviews nahm ich in den letzten anderthalb Jahren an Hunderten von technischen Vorverkäufen für den Dienst "Implementierung von DevOps" für große russische Unternehmen und Banken teil.

In Russland ist DevOps noch ein sehr junges, aber bereits angesagtes Thema. Soweit ich weiß, betrug der Mangel an solchen Spezialisten im Jahr 2019 nur in Moskau mehr als 1000 Personen. Und das Wort Kubernetes für Arbeitgeber ist fast wie ein roter Lappen für einen Stier. Anhänger dieses Werkzeugs sind bereit, es auch dann einzusetzen, wenn es nicht notwendig und wirtschaftlich nicht rentabel ist. Ein Arbeitgeber versteht nicht immer, in welchen Fällen eine Verwendung besser geeignet ist, und bei ordnungsgemäßer Bereitstellung ist die Wartung eines Kubernetes-Clusters 2-3-mal teurer als die Bereitstellung einer Anwendung mit einem herkömmlichen Cluster-Schema. Verwenden Sie es dort, wo Sie es wirklich brauchen.



Die Implementierung von DevOps in Bezug auf Geld ist teuer. Und es ist nur gerechtfertigt, wenn es in anderen Bereichen wirtschaftliche Vorteile bringt, und nicht allein.

Die Ingenieure von DevOps sind in der Tat Pioniere - sie sind die ersten, die diese Methodik im Unternehmen einführen und Prozesse aufbauen. Damit dies erfolgreich ist, muss der Spezialist ständig mit Mitarbeitern und Kollegen auf allen Ebenen interagieren. Wie ich normalerweise sage, sollten alle Mitarbeiter des Unternehmens in den Prozess der Implementierung von DevOps einbezogen werden: von einer Putzfrau bis zu einem CEO. Und das ist Voraussetzung. Wenn das jüngste Mitglied des Teams nicht weiß und versteht, was DevOps ist und warum bestimmte organisatorische Maßnahmen ausgeführt werden, schlägt eine erfolgreiche Implementierung fehl.

Außerdem muss der DevOps-Techniker von Zeit zu Zeit eine Verwaltungsressource verwenden. Zum Beispiel, um den "Widerstand der Umwelt" zu überwinden - wenn das Team nicht bereit ist, die Tools und Methoden von DevOps zu akzeptieren.

Der Entwickler sollte nur Code und Tests schreiben. Dazu benötigt er keinen superstarken Laptop, auf dem er die gesamte Infrastruktur des Projekts lokal bereitstellen und unterstützen kann. Das Front-End speichert beispielsweise alle Elemente der Anwendung auf Ihrem Laptop, einschließlich der Datenbank, des S3-Emulators (Minio) und mehr. Das heißt, er verbringt viel Zeit mit der Wartung dieser lokalen Infrastruktur und kämpft allein mit allen Problemen einer solchen Lösung. Anstatt Code für die Front zu entwickeln. Solche Menschen können Veränderungen stark widerstehen.

Es gibt jedoch Teams, die im Gegenteil gerne neue Werkzeuge und Methoden einführen und aktiv an diesem Prozess beteiligt sind. Obwohl auch in diesem Fall die Kommunikation zwischen dem DevOps-Ingenieur und dem Team nicht abgebrochen wurde.

Wenn DevOps nicht benötigt wird


Es gibt Situationen, in denen DevOps nicht benötigt wird. Dies ist eine Tatsache - sie muss verstanden und akzeptiert werden.

Dies gilt zunächst für jedes Unternehmen (insbesondere für kleine Unternehmen), dessen Gewinn nicht direkt von der Anwesenheit oder Abwesenheit von IT-Produkten abhängt, die Kunden Informationsdienste anbieten. Und hier geht es nicht um die Website des Unternehmens, ob es sich um eine statische "Visitenkarte" oder um dynamische Nachrichtenblöcke usw. handelt.

DevOps ist erforderlich, wenn die Zufriedenheit Ihres Kunden und sein Wunsch, wieder zu Ihnen zurückzukehren, von der Verfügbarkeit dieser Informationsdienste für die Interaktion mit dem Kunden, deren Qualität und Ausrichtung abhängen.

Ein markantes Beispiel ist eine bekannte Bank. Das Unternehmen verfügt nicht über die üblichen Kundenbüros, der Workflow wird per Post oder Kurierdienst ausgeführt, und viele Mitarbeiter arbeiten von zu Hause aus. Das Unternehmen war nicht mehr nur eine Bank und entwickelte sich meiner Meinung nach zu einem IT-Unternehmen mit entwickelten DevOps-Technologien.

Viele andere Beispiele und Vorträge finden Sie in den Aufzeichnungen thematischer Tagungen und Konferenzen. Ich habe einige von ihnen persönlich besucht - dies ist eine sehr nützliche Erfahrung für diejenigen, die sich in diese Richtung entwickeln möchten. Hier sind Links zu YouTube-Kanälen mit guten Vorträgen und Materialien zu DevOps:


Schauen Sie sich nun Ihr Unternehmen an und denken Sie darüber nach: Inwieweit hängen Ihr Unternehmen und sein Gewinn von IT-Produkten ab, die eine Interaktion mit dem Kunden ermöglichen?

Wenn Ihr Unternehmen Fisch in einem kleinen Geschäft verkauft und das einzige IT-Produkt zwei 1C-Konfigurationen sind: Enterprise (Accounting und UNF), ist es kaum sinnvoll, über DevOps zu sprechen.

Wenn Sie in einem großen Handels- und Industrieunternehmen arbeiten (z. B. Jagdgewehre herstellen), ist dies eine Überlegung wert. Sie können die Initiative ergreifen und Ihrem Management die Aussichten für die Implementierung von DevOps vermitteln. Nun, gleichzeitig führen Sie diesen Prozess. Eine proaktive Haltung ist eines der wichtigen Postulate der DevOps-Philosophie.

Die Größe und das Volumen des jährlichen Finanzumsatzes sind nicht das Hauptkriterium für die Entscheidung, ob Ihr Unternehmen DevOps benötigt.

Stellen Sie sich ein großes Industrieunternehmen vor, das nicht direkt mit Kunden interagiert. Zum Beispiel einige Autohersteller und Automobilunternehmen. Jetzt bin ich mir nicht sicher, aber aufgrund meiner bisherigen Erfahrungen wurde die Interaktion mit Kunden über viele Jahre hinweg per E-Mail und Telefon durchgeführt.

Ihre Kunden sind eine begrenzte Liste von Autohändlern. Und jedem ist ein Spezialist des Herstellers beigefügt. Der gesamte interne Workflow erfolgt über SAP ERP. Interne Mitarbeiter sind tatsächlich Kunden des Informationssystems. Die Verwaltung dieser IP erfolgt jedoch mit klassischen Mitteln zur Verwaltung von Clustersystemen. Dies schließt die Möglichkeit der Verwendung von DevOps-Praktiken aus.

Daher die Schlussfolgerung: Für solche Unternehmen ist die Implementierung von DevOps nicht von entscheidender Bedeutung, wenn wir uns an die Ziele der Methodik vom Anfang des Artikels erinnern. Ich schließe jedoch nicht aus, dass einige DevOps-Tools heute von ihnen verwendet werden.

Auf der anderen Seite gibt es viele kleine Unternehmen, die Software unter Verwendung der DevOps-Methodik, -Philosophie, -Praktiken und -Tools entwickeln. Und sie glauben, dass die Kosten für die Implementierung von DevOps Kosten sind, die es ihnen ermöglichen, effektiv auf dem Softwaremarkt zu konkurrieren. Beispiele für solche Unternehmen finden Sie hier .

Das Hauptkriterium für das Verständnis, ob DevOps benötigt wird: Wie wichtig Ihre IT-Produkte für das Unternehmen und die Kunden sind.

Wenn das profitabelste Produkt des Unternehmens Software ist, benötigen Sie DevOps. Und es ist nicht so wichtig, wenn Sie mit Hilfe anderer Waren echtes Geld verdienen. Dies umfasst auch Online-Shops oder mobile Anwendungen mit Spielen.

Alle Spiele existieren dank der Finanzierung: direkt oder indirekt von den Spielern. Bei Playgendary entwickeln wir kostenlose Handyspiele, an denen mehr als 200 Personen direkt beteiligt sind. Wie verwenden wir DevOps?

Ja, genau wie oben beschrieben. Ich kommuniziere ständig mit Entwicklern und Testern und führe interne Schulungen für Mitarbeiter und Tools der DevOps-Methodik durch.

Jetzt verwenden wir Jenkins aktiv als CI / CD-Pipelines-Tool, um alle Assembly-Pipelines mit Unity auszuführen und dann im App Store und im Play Market bereitzustellen. Mehr aus der klassischen Toolbox:

  • Asana - für das Projektmanagement. Konfigurierte Integration mit Jenkins.
  • Google Meet - für Videoanrufe.
  • Slack - für Kommunikation und verschiedene Warnungen, einschließlich Benachrichtigungen von Jenkins.
  • Atlassian Confluence - für Dokumentation und Gruppenarbeit.

In naher Zukunft werden wir die statische Code-Analyse mit SonarQube einführen und in der Phase der kontinuierlichen Integration automatisierte UI-Tests mit Selenium-Tools durchführen.

Anstelle einer Schlussfolgerung


Ich möchte mit folgendem Gedanken enden: Um ein hochqualifizierter DevOps-Ingenieur zu werden, ist es wichtig zu lernen, wie man lebhaft mit Menschen kommuniziert.

Der DevOps-Ingenieur ist ein Teamplayer. Und kein anderer Weg. Die Initiative zur Kommunikation mit Kollegen sollte von ihm selbst ausgehen und nicht unter dem Einfluss von Umständen. Der DevOps-Spezialist sollte die beste Lösung für das Team sehen und anbieten.

Und ja, die Implementierung einer Lösung erfordert viel Diskussion und kann sich am Ende sogar ändern. Durch die unabhängige Entwicklung, das Angebot und die Umsetzung ihrer Ideen gewinnt eine solche Person sowohl für das Team als auch für den Arbeitgeber an Wert. Was sich letztendlich in der Höhe seiner monatlichen Vergütung oder in Form zusätzlicher Boni widerspiegelt.

All Articles