Was ist die Bedeutung von DevOps, was bedeutet es für IT-Profis, Beschreibung von Methoden, Frameworks und Werkzeugen.

Seitdem der Begriff DevOps in der IT-Welt geprägt wurde, ist viel passiert. Angesichts der Tatsache, dass ein großer Teil des Ökosystems Open Source ist, ist es wichtig zu überdenken, warum es so entstanden ist und was das für die Karriere im IT-Bereich bedeutet.
Was ist DevOps
Obwohl es keine einheitliche Definition gibt, betrachte ich DevOps als eine technologische Struktur, die die Interaktion zwischen Entwicklungsteams und Betriebsteams ermöglicht, um eine schnellere Bereitstellung von Code in Produktionsumgebungen mit der Möglichkeit zur Wiederholung und Automatisierung zu gewährleisten. Den Rest des Artikels verbringen wir mit der Aufschlüsselung dieser Aussage.
Das Wort "DevOps" ist eine Kombination der Wörter "Entwicklung" (development) und "Betrieb" (operations). DevOps hilft, die Geschwindigkeit der Bereitstellung von Anwendungen und Dienstleistungen zu erhöhen. Es ermöglicht Organisationen, ihre Kunden effizient zu bedienen und wettbewerbsfähiger auf dem Markt zu werden. Einfach gesagt, DevOps bedeutet Konsistenz zwischen Entwicklung und IT-Betrieb mit effizienter Interaktion und Zusammenarbeit.
DevOps fördert eine Kultur, in der die Zusammenarbeit zwischen Entwicklungsteams, Betreibern und Geschäftsteams als kritischer Aspekt angesehen wird. Es geht nicht nur um Werkzeuge, da DevOps in einer Organisation kontinuierlich sowohl für die Kunden als auch für die Organisation Vorteile bringt. Werkzeuge sind eine seiner Säulen, zusammen mit Menschen und Prozessen. DevOps erhöht die Fähigkeit von Organisationen, hochwertige Lösungen in kürzester Zeit bereitzustellen. Außerdem automatisiert DevOps alle Prozesse, von der Erstellung bis zur Bereitstellung von Anwendungen oder Produkten.
Die Diskussion über DevOps konzentriert sich auf die Beziehungen zwischen Entwicklern, den Menschen, die Software zum Leben erwecken, und Betreibern, die für die Unterstützung dieser Software verantwortlich sind.
Herausforderungen für das Entwicklerteam
Entwickler sind in der Regel begeistert und willens, neue Ansätze und Technologien zur Lösung der Probleme von Organisationen einzuführen. Sie sehen sich jedoch auch bestimmten Herausforderungen gegenüber:
- Ein wettbewerbsintensiver Markt übt großen Druck auf die pünktliche Lieferung von Produkten aus.
- Sie müssen sich um das Management von produktionsbereitem Code und die Implementierung neuer Funktionen kümmern.
- Der Release-Zyklus kann lang sein, daher muss das Entwicklerteam mehrere Annahmen treffen, bevor die Anwendungen implementiert werden. In einem solchen Szenario ist mehr Zeit notwendig, um Probleme zu lösen, die während des Rollouts in der Produktions- oder Testumgebung auftreten.
Probleme, mit denen die Betriebsmannschaft konfrontiert ist
Betriebsteams sind historisch gesehen auf Stabilität und Zuverlässigkeit von IT-Services ausgerichtet. Deshalb suchen Betriebsteams nach Stabilität, indem sie Änderungen an Ressourcen, Technologien oder Vorgehensweisen vornehmen. Zu ihren Aufgaben gehören:
- Das Management der Ressourcenzuteilung, während die Nachfrage steigt.
- Bearbeitung von Änderungen im Design oder in den Einstellungen, die für die Anwendung in der Produktionsumgebung erforderlich sind.
- Diagnose und Lösung von produktionsbezogenen Problemen nach dem autonomen Rollout von Anwendungen.
Wie DevOps Entwicklungs- und Betriebsprobleme angeht
Anstatt eine große Anzahl von Anwendungsfunktionen gleichzeitig auszuliefern, versuchen Unternehmen herauszufinden, ob sie eine kleine Anzahl von Funktionen für ihre Kunden durch eine Serie von Iterationsveröffentlichungen bereitstellen können. Dieser Ansatz bietet eine Reihe von Vorteilen, wie verbessertes Software-Qualität, schnelleres Feedback von Kunden usw. Dies führt wiederum zu einer hohen Kundenzufriedenheit. Um diese Ziele zu erreichen, müssen Unternehmen:
- Die Ausfallrate bei der Veröffentlichung neuer Releases senken
- Die Bereitstellungshäufigkeit erhöhen
- Eine schnellere durchschnittliche Wiederherstellungszeit im Falle eines neuen App-Releases erreichen.
- Die Zeit für Fehlerbehebungen verkürzen
DevOps nimmt all diese Aufgaben wahr und hilft, eine kontinuierliche Lieferung sicherzustellen. Organisationen nutzen DevOps, um Leistungsniveaus zu erreichen, die vor einigen Jahren noch unvorstellbar waren. Sie führen Hunderte und sogar Tausende von Deployments pro Tag durch, während sie gleichzeitig Zuverlässigkeit, Stabilität und Sicherheit auf Weltklasseniveau gewährleisten. und deren Auswirkungen auf die Softwarelieferung.)
DevOps versucht, verschiedene Probleme zu lösen, die durch die Anwendung von Methoden der Vergangenheit entstehen, darunter:
- Die Isolation der Arbeit von Entwickler- und Ops-Teams
- Tests und Bereitstellungen als separate Phasen, die nach der Planung und dem Aufbau durchgeführt werden und mehr Zeit benötigen als die Build-Zyklen.
- Übermäßige Zeitaufwände für Tests, Bereitstellungen und Planung anstatt sich auf die Schaffung von Hauptgeschäftsleistungen zu konzentrieren
- Manuelle Bereitstellung von Code, die zu Produktionsfehlern führt
- Unterschiedliche Arbeitszeitpläne zwischen Entwicklungs- und Operationsteams, was zu zusätzlichen Verzögerungen führt

Gegensätze zwischen DevOps, Agile und traditioneller IT
DevOps wird häufig im Zusammenhang mit anderen IT-Praktiken diskutiert, insbesondere mit agilen und Wasserfall-IT-Infrastrukturen.
Agilität ist eine Sammlung von Prinzipien, Werten und Methoden zur Softwareproduktion. Wenn Sie beispielsweise eine Idee haben, die Sie in Software umsetzen möchten, können Sie die Prinzipien und Werte der agilen Methodik nutzen. Aber diese Software kann nur in einer Entwicklungs- oder Testumgebung funktionieren. Sie benötigen einen einfachen und sicheren Weg, um Software schnell und mit hoher Wiederholbarkeit in die Produktionsumgebung zu übertragen, und der Weg führt über Tools und Methoden von DevOps. Die agile Softwareentwicklung konzentriert sich auf den Entwicklungsprozess, während DevOps für Entwicklung und Bereitstellung verantwortlich ist – auf die sicherste und zuverlässigste Weise.
Der Vergleich des traditionellen Wasserfallmodells mit DevOps ist ein guter Weg, um die Vorteile zu verstehen, die DevOps bietet. Im folgenden Beispiel wird angenommen, dass die Anwendung in vier Wochen gestartet wird, die Entwicklung zu 85 % abgeschlossen ist, die Anwendung starten wird, und der Prozess zur Beschaffung von Servern für den Codeversand gerade erst begonnen hat.
Traditionelle Prozesse
Prozesse in DevOps
Nach der Bestellung neuer Server arbeitet das Entwicklerteam an den Tests. Das Operationsteam arbeitet an der umfangreichen Dokumentation, die für die Bereitstellung von Infrastrukturen in Unternehmen erforderlich ist.
Nach der Bestellung neuer Server arbeiten die Entwickler- und Betriebsteams gemeinsam an den Prozessen und der Dokumentation für die Installation neuer Server. Dies ermöglicht ein besseres Verständnis der Infrastrukturanforderungen.
Die Informationen zur Wiederherstellung nach Ausfällen, zur Redundanz, zur Lage der Rechenzentren und zu den Anforderungen an die Speichersysteme sind verzerrt, da es an Eingaben vom Entwicklerteam fehlt, das über tiefgehende Kenntnisse der Anwendung verfügt.
Detaillierte Informationen zur Ausfallbewältigung, Redundanz, Notfallwiederherstellung, Lage der Rechenzentren und zu den Anforderungen an die Speichersysteme sind bekannt und korrekt, dank des Beitrags des Entwicklerteams.
Das Einsatzteam hat keinen Überblick über den Fortschritt des Entwicklerteams. Es entwickelt zudem einen Überwachungsplan basierend auf eigenen Vorstellungen.
Das Einsatzteam ist vollständig über den Fortschritt informiert, den das Entwicklerteam erzielt hat. Es arbeitet auch mit dem Entwicklerteam zusammen und entwickelt gemeinsam einen Überwachungsplan, der den IT- und Geschäftsanforderungen entspricht. Sie verwenden zudem Werkzeuge zur Überwachung der Anwendungsleistung (APM).
Ein Lasttest, der vor dem Start der Anwendung durchgeführt wird, führt zu einem Absturz der Anwendung, was den Start verzögert.
Ein Lasttest, der vor dem Start der Anwendung durchgeführt wird, führt zu einer Verringerung der Leistung. Das Entwicklerteam behebt die Engpässe schnell, und die Anwendung wird rechtzeitig gestartet.
DevOps-Lebenszyklus
DevOps bedeutet, bestimmte allgemein anerkannte Praktiken zu übernehmen.
Kontinuierliche Planung
Kontinuierliche Planung basiert auf den Prinzipien des Lean Managements, um klein zu beginnen, die notwendigen Ressourcen und Ergebnisse zur Überprüfung des Geschäftswerts oder der Vision zu definieren, ständig Anpassungen vorzunehmen, den Fortschritt zu messen, die Bedürfnisse der Kunden zu erforschen, die Richtung bei Bedarf unter Berücksichtigung der Agilität zu ändern und den Geschäftsplan zu aktualisieren.
Gemeinsame Entwicklung
Der Prozess der gemeinsamen Entwicklung ermöglicht es Unternehmen, Entwicklerteams und Tester, die über verschiedene Zeitzonen verteilt sind, kontinuierlich qualitativ hochwertige Software bereitzustellen. Dazu gehört plattformübergreifende Entwicklung, Unterstützung von Programmierung in verschiedenen Sprachen, Erstellung von Benutzererzählungen, Ideenentwicklung und Lebenszyklusmanagement. Die gemeinsame Entwicklung umfasst den Prozess und die Praxis der kontinuierlichen Integration, was häufige Integration von Code und automatisierte Builds fördert. Bei häufiger Integration von Code in die Anwendung werden Integrationsprobleme früh im Lebenszyklus erkannt (wenn sie leichter behoben werden können), und die Gesamtintegration wird dank kontinuierlichem Feedback reduziert, da das Projekt kontinuierlichen und sichtbaren Fortschritt zeigt.
Kontinuierliches Testen
Kontinuierliches Testen senkt die Testkosten, indem es den Entwicklerteams hilft, zwischen Geschwindigkeit und Qualität zu balancieren. Es beseitigt auch Engpässe beim Testen durch Virtualisierung von Services und vereinfacht die Erstellung von virtualisierten Testumgebungen, die leicht gemeinsam genutzt, bereitgestellt und aktualisiert werden können, wenn sich Systeme ändern. Diese Möglichkeiten verringern die Kosten für die Einrichtung und Wartung von Testumgebungen und verkürzen die Testzyklen, wodurch Integrationstests in frühen Phasen des Lebenszyklus ermöglicht werden.
Kontinuierliche Bereitstellung und Deployment
Diese Methoden bringen eine der grundlegenden Praktiken mit sich: kontinuierliche Bereitstellung und Deployment. Sie schaffen eine kontinuierliche Pipeline, die Schlüsselprozesse automatisiert. Dadurch wird die Anzahl manueller Vorgänge, die Wartezeit auf Ressourcen und der Umfang von Nacharbeiten reduziert, was es ermöglicht, Deployments auf Knopfdruck durchzuführen, was zu einer höheren Anzahl von Releases, einer Reduzierung der Fehler und voller Transparenz führt.
Automatisierung spielt eine entscheidende Rolle bei der Sicherstellung einer stabilen und zuverlässigen Softwareveröffentlichung. Eine der wichtigsten Aufgaben besteht darin, manuelle Prozesse wie das Zusammenstellen, das Testen, das Bereitstellen und die Infrastruktur zu automatisieren. Dazu sind die Versionskontrolle des Quellcodes, Test- und Bereitstellungsskripte, Infrastruktur- und Anwendungskonfigurationsdaten sowie die Bibliotheken und Pakete erforderlich, von denen die Anwendung abhängt. Ein weiterer wichtiger Faktor ist die Möglichkeit, den Status aller Umgebungen abzufragen.
Kontinuierliches Monitoring
Kontinuierliches Monitoring ermöglicht die Erstellung von Unternehmensberichten, die den Entwicklungsteams helfen, die Verfügbarkeit und Leistung der Anwendungen in der Produktionsumgebung zu verstehen, noch bevor sie in Produktion gehen. Das frühzeitige Feedback, das durch kontinuierliches Monitoring bereitgestellt wird, ist entscheidend, um die Kosten von Fehlern zu senken und Projekte in die richtige Richtung zu steuern. Diese Praxis umfasst häufig Überwachungstools, die typischerweise Leistungskennzahlen von Anwendungen offenbaren.
Ständiges Feedback und Optimierung
Kontinuierliches Feedback und Optimierung bieten eine visuelle Darstellung des Kundenflusses und eine präzise Identifizierung von Problemstellen. Feedback kann sowohl in der Pre-Sales- als auch in der Post-Production-Phase integriert werden, um den Wert zu maximieren und den erfolgreichen Abschluss noch mehr Transaktionen sicherzustellen. All dies liefert sofortige Visualisierungen der Ursachen von Kundenproblemen, die deren Verhalten und Auswirkungen auf das Geschäft beeinflussen.

Vorteile von DevOps
DevOps kann dazu beitragen, eine Umgebung zu schaffen, in der Entwickler und Betreiber als ein Team zusammenarbeiten, um gemeinsame Ziele zu erreichen. Ein wichtiger Meilenstein in diesem Prozess ist die Implementierung von kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD). Diese Methoden ermöglichen es den Teams, Software schneller auf den Markt zu bringen, mit weniger Fehlern.
Wichtige Vorteile von DevOps sind:
- Vorhersehbarkeit: DevOps bietet eine deutlich niedrigere Ausfallrate bei der Veröffentlichung neuer Releases.
- Wartbarkeit: DevOps ermöglicht eine einfache Wiederherstellung nach Fehlern in einem neuen Release oder der Deaktivierung einer Anwendung.
- Reproduzierbarkeit: Ein Versionskontrollsystem für Builds oder Code ermöglicht das Wiederherstellen älterer Versionen nach Bedarf.
- Höhere Qualität: Die Lösung von Infrastrukturproblemen verbessert die Qualität der Anwendungsentwicklung.
- Markteinführungszeit: Die Optimierung der Softwarelieferung verkürzt die Markteinführungszeit um 50 %.
- Risikominimierung: Die Gewährleistung von Sicherheit im Software-Lebenszyklus reduziert die Anzahl der Fehler während des gesamten Lebenszyklus.
- Wirtschaftlichkeit: Das Streben nach Wirtschaftlichkeit in der Softwareentwicklung erfreut sich bei der Unternehmensführung großer Beliebtheit.
- Stabilität: Das Softwaresystem ist stabiler, sicherer und Änderungen können überprüft werden.
- Ein größerer Codebestand wird in verwaltbare Teile zerlegt: DevOps basiert auf agilen Entwicklungsmethoden, die es ermöglichen, einen großen Codebestand in kleinere, manageable Teile zu zerlegen.
DevOps-Prinzipien
Die Einführung von DevOps führte zu mehreren Prinzipien, die sich entwickelt haben (und weiterhin entwickeln). Die meisten Lösungsanbieter haben ihre eigenen Modifikationen verschiedener Methoden entwickelt. All diese Prinzipien basieren auf einem ganzheitlichen Ansatz zu DevOps, den Organisationen jeder Größe nutzen können.
Entwickeln und testen Sie in einer Produktionsähnlichen Umgebung
Der Kern besteht darin, den Entwicklungsteams und den Qualitätssicherungsspezialisten (QA) zu ermöglichen, Systeme zu entwickeln und zu testen, die sich wie Produktion Systeme verhalten, damit sie sehen können, wie sich die Anwendung verhält und funktioniert, lange bevor sie bereit für die Bereitstellung ist.
Die Anwendung sollte so früh wie möglich im Lebenszyklus mit den Produktionssystemen verbunden werden, um drei wesentliche potenzielle Probleme zu lösen. Erstens ermöglicht es, die Anwendung in einer Umgebung zu testen, die der realen Umgebung ähnlich ist. Zweitens ermöglicht es, die Bereitstellungsprozesse der Anwendung im Voraus zu testen und zu überprüfen. Drittens ermöglicht es dem Betriebsteam, in einer frühen Phase des Lebenszyklus zu überprüfen, wie sich ihre Umgebung verhalten wird, wenn die Anwendungen bereitgestellt werden, wodurch sie eine fein abgestimmte, anwendungsorientierte Umgebung schaffen können.
Bereitstellung mit reproduzierbaren, zuverlässigen Prozessen
Dieses Prinzip ermöglicht es Entwicklungsteams und Betriebsteams, flexible Softwareentwicklungsprozesse während des gesamten Lebenszyklus aufrechtzuerhalten. Automatisierung ist entscheidend für die Schaffung iterativer, zuverlässiger und reproduzierbarer Prozesse. Daher muss die Organisation eine Bereitstellungspipeline einrichten, die kontinuierliche automatisierte Bereitstellung und Tests ermöglicht. Häufige Bereitstellungen erlauben es den Teams auch, die Bereitstellungsprozesse zu testen, wodurch das Risiko von Bereitstellungsfehlern während der tatsächlichen Releases verringert wird.
Überwachung und Qualitätsprüfung
Organisationen sind gut darin, Anwendungen in der Produktion zu überwachen, da sie über Werkzeuge verfügen, die Leistungskennzahlen und Schlüsselindikatoren (KPIs) in Echtzeit erfassen. Dieses Prinzip überträgt die Überwachung auf die frühen Phasen des Lebenszyklus und stellt sicher, dass automatisierte Tests funktionale und nicht-funktionale Attribute der Anwendung in den frühen Phasen des Prozesses überwachen. Jedes Mal, wenn eine Anwendung getestet und bereitgestellt wird, müssen die Qualitätskennzahlen untersucht und analysiert werden. Überwachungstools bieten frühzeitige Warnungen über betriebliche und qualitätsbezogene Probleme, die im Produktionsprozess auftreten können. Diese Kennzahlen sollten in einem für alle Stakeholder zugänglichen und verständlichen Format gesammelt werden.
Verbesserung der Rückmeldeschleifen
Eines der Ziele der DevOps-Prozesse besteht darin, Organisationen zu ermöglichen, schneller zu reagieren und Änderungen vorzunehmen. Bei der Bereitstellung von Software erfordert dieses Ziel, dass die Organisation frühzeitig Feedback erhält und dann schnell aus jeder ergriffenen Maßnahme lernt. Dieses Prinzip erfordert von den Organisationen, Kommunikationskanäle zu schaffen, die es den Beteiligten ermöglichen, Zugang zu erhalten und im Sinne des Feedbacks zu interagieren. Die Entwicklung kann erfolgen, indem die Projektpläne oder Prioritäten angepasst werden. Die Produktion kann durch die Verbesserung der Produktionsumgebung handeln.
Dev
- Planung: Kanboard, Wekan und andere Alternativen zu Trello; GitLab, Tuleap, Redmine und andere Alternativen zu JIRA; Mattermost, Roit.im, IRC und andere Alternativen zu Slack.
- Codierung: Git, Gerrit, Bugzilla; Jenkins und andere Open-Source-Tools für CI/CD
- Bau: Apache Maven, Gradle, Apache Ant, Packer
- Tests: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- Bereitstellung, Deployment, Betrieb: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Überwachung: Grafana, Prometheus, Nagios, InfluxDB, Fluentd und andere, die in diesem Handbuch behandelt werden
(* Die Tools für den Betrieb wurden in der Reihenfolge ihrer Anwendung durch die Betriebsteams nummeriert, aber ihr Werkzeugset überschneidet sich mit den Werkzeugen für den Release- und Deployment-Lebenszyklus. Zur besseren Lesbarkeit wurde die Nummerierung entfernt.)
Abschließend
DevOps ist eine immer beliebter werdende Methodik, die darauf abzielt, Entwickler und Betreiber zu vereinen. Sie ist einzigartig, unterscheidet sich von traditionellen IT-Betriebsabläufen und ergänzt Agile (ist aber nicht ganz so flexibel).

Erfahren Sie, wie Sie einen gefragten Beruf von Grund auf neu lernen oder Ihre Fähigkeiten und Ihr Gehalt durch kostenpflichtige Online-Kurse bei SkillFactory verbessern können:
- (12 Monate)
weitere Kurse
- (12 Wochen)
- (12 Monate)
- (9 Monate)
- (9 Monate)
Nützlich
Quelle: habr.com
