Development Operations, allgemein als DevOps bezeichnet, ist heute einer der einflussreichsten Trends in der Softwareentwicklung. Der Begriff selbst spiegelt wider, worum es geht: die Verschmelzung von Entwicklungs- und Betriebsprozessen, -praktiken und -verantwortlichkeiten zu einem einzigen DevOps-Softwareentwicklungsansatz.
In einer traditionellen Organisation entwirft, programmiert und testet das Softwareentwicklungsteam eine Softwareanwendung (die Qualitätssicherung wird manchmal als drittes separates Team betrachtet) und übergibt sie dann an das Betriebsteam, das für den Betrieb für die Benutzer verantwortlich ist. Bei DevOps werden das Entwicklungsteam und das Betriebsteam zu einem einzigen DevOps-Team mit gemeinsamen Leistungskennzahlen zusammengeführt.
Agile und DevOps-Entwickler, Teamverstärkung und Berater
Nach Ihren individuellen Bedürfnissen!
DevOps-Teams werden fast immer auch als „agile Teams“ bezeichnet, wobei die genaue Art der Beziehung zwischen DevOps und agile Softwareentwicklung nicht immer klar ist. Der einfachste Weg, die Beziehung zwischen DevOps und Agile zu verstehen, besteht darin, DevOps als eine Erweiterung der agilen Prinzipien zu betrachten.
Ein DevOps-Ansatz wendet ähnliche Prinzipien an wie das Agile Manifesto, erweitert sie aber auf ein einziges Team, das die Rollen, Verantwortlichkeiten und Leistungskennzahlen von Entwicklung und Betrieb vereinheitlicht.
DevOps löst ein mit der agilen Entwicklung verbundenes Engpassproblem. Wenn agile Frameworks wie Scrum oder „Extreme Programming“ (XP) das Entwicklungstempo neuer Iterationen beschleunigen, haben die einzelnen Betriebsteams oft Schwierigkeiten, die Software rechtzeitig zu testen und bereitzustellen, wodurch der Mehrwert der schnelleren Entwicklung verloren geht. Die Ausweitung eines agilen Ansatzes auf den gesamten Lebenszyklus der Softwareentwicklung (SDLC) bis hin zur Bereitstellung behebt diesen Mangel.
Trotz seiner Popularität ist das Konzept von DevOps selbst für viele in der IT-Branche oder mit ihr verbundene Personen oft nicht klar. Das kann dazu führen, dass DevOps als ein Schlagwort ohne wirkliche Substanz missverstanden wird.
Die Tatsache, dass das Wesen von DevOps auf so viele verschiedene Arten beschrieben wird, indem es als synonym für Philosophie, Kultur, Methodik, Praktiken, Tools und Teamrollen verwendet wird, trägt zweifelsohne dazu bei. Es ist jedoch kein Widerspruch zu sagen, dass DevOps all diese Dinge gleichzeitig sein kann. Um die Vorteile von DevOps voll ausschöpfen zu können, ist dies sogar notwendig:
Um die in der Überschrift dieses Abschnitts gestellte Frage „Wie definiert man DevOps am besten?“ zu beantworten, müssen wir zunächst erklären, warum DevOps auf so unterschiedliche Weise beschrieben werden kann. Außerdem ist es sinnvoll, zu untersuchen, was DevOps nicht ist.
Auf der abstraktesten Ebene kann DevOps als eine Philosophie beschrieben werden – was häufig auch geschieht: „eine Theorie oder Einstellung, die als Leitprinzip für das Verhalten dient„.
Der Ausgangspunkt eines erfolgreichen DevOps-Ansatzes für die Softwareentwicklung ist, dass das Team (viele würden sogar behaupten, dass dies auf organisatorischer Ebene geschehen sollte, insbesondere in einem Technologieunternehmen) das Konzept akzeptiert, warum die Vereinheitlichung von Entwicklung (einschließlich Testen) und Betrieb zu besseren Ergebnissen für alle Interessengruppen führen wird.
Während DevOps als Philosophie auf einer konzeptionellen Ebene eingeführt wird, bedeutet DevOps als Kultur, dass sich das Konzept im Ansatz durch Prozesse und Praktiken manifestiert.
Eine DevOps-Teamkultur bedeutet, dass Dinge gewohnheitsmäßig getan werden, bis zu dem Punkt, an dem sie tief verwurzelt sind, was die Verwirklichung der DevOps-Philosophie der Vereinheitlichung von Entwicklung, Testen und Betrieb als eine kontinuierliche Feedbackschleife unterstützt.
Eine DevOps-Kultur bedeutet, dass die Herangehensweise, Entscheidungen und Praktiken von Softwareentwicklungsteams und anderen Mitgliedern der Organisation, mit denen sie direkt zusammenarbeiten oder deren Entscheidungen sich auf sie auswirken, standardmäßig von dieser Philosophie geprägt sind.
Zur Einführung einer DevOps-Kultur gehört die Bildung von multidisziplinären Teams, die für den gesamten Lebenszyklus eines Produkts verantwortlich sind. Außerdem müssen Transparenz, Kommunikation und Zusammenarbeit zwischen Rollen mit Titeln gefördert werden, die traditionell als zu den Entwicklungs- oder Betriebsteams gehörig betrachtet wurden.
Gene Kim, einer der Autoren des 2013 erschienenen DevOps-Buches The Phoenix Project sowie von The DevOps Handbook (2016), formulierte drei Leitprinzipien, die einer DevOps-Kultur zugrunde liegen sollten:
Eine Methodik ist ein spezifischer Ansatz und eine bestimmte Reihenfolge, um ein bestimmtes Ziel zu erreichen. Softwareentwicklungsmethoden sind nicht anders, denn jedes neue Softwareprodukt durchläuft die gleichen 6 allgemeinen Phasen eines Entwicklungslebenszyklus:
DevOps-Lebenszyklen werden oft als etwas detaillierter dargestellt, indem zwei zusätzliche Phasen hinzugefügt werden:
Eine DevOps-Methodik durchläuft diese acht Phasen der Softwareentwicklung und des Betriebs in einer Endlosschleife.
Wenn DevOps als Methode eine bestimmte Abfolge von Handlungen ist, die ungefähr durch die Endlosschleife der acht beschriebenen Lebenszyklusphasen dargestellt wird, dann sind DevOps-Prozesse und -Praktiken eine Reihe von Aktionen, die in einer bestimmten Reihenfolge ausgeführt werden und diese Phasen bilden.
DevOps-Prozesse und -Praktiken sind darauf ausgelegt, eine Phase zu beschleunigen, zu automatisieren und zu rationalisieren. Und einige können sich über mehrere Phasen erstrecken. Zu den DevOps-Prozessen und -Praktiken gehören:
Sie können auch die Prozesse und Praktiken eines bestimmten agilen Frameworks wie Scrum beinhalten, zu dem DevOps als Erweiterung fungiert, z. B:
Oder Kanban, zum Beispiel:
Können wir Ihnen bei Ihrem nächsten Softwareentwicklungsprojekt helfen?
Flexible Modelle für Ihre Bedürfnisse!
DevOps wird in hohem Maße mit dem Ökosystem von Tools assoziiert, die nach dem kulturellen Mantra „wenn man es automatisieren kann, sollte man es automatisieren“ entwickelt wurden.
DevOps ist deshalb so automatisierungsfreundlich, weil es bedeutet:
Das ist auch der Grund, warum CI/CD-Pipelines ein so wesentlicher Bestandteil von DevOps sind. Es gibt jedoch fantastische Tools, die dabei helfen, jede Phase des DevOps-Lebenszyklus sowie viele seiner Prozesse und Praktiken zu automatisieren bzw. effizienter zu gestalten.
Octopus Deploy hat eine ausgezeichnete Übersicht von Tools zusammengestellt, die von DevOps-Teams häufig verwendet werden. Einige, wie z. B. die in der Planungsphase, sind eher allgemein gehalten, während andere spezifischer auf den DevOps-Kontext zugeschnitten sind:
Tools für die Zusammenarbeit und die Projektverwaltung
Die Quellcodekontrolle wird mit Git verwaltet und Code-Repositories sind gehostete Dienste für mit Git verwalteten Code.
DevOps-Teams nutzen CI-Plattformen oder Build-Server, um durch die Automatisierung von Codekompilierung, Validierungstests und Paketerstellung Zeit zu sparen. Zu den beliebtesten gehören:
Die Packaging-Tools werden verwendet, um Code in einsatzfähige Elemente umzuwandeln, die von Paket-Repositories gehostet und eingesetzt werden. Zu den beliebtesten gehören:
Tools für das Release-Management und das Deployment helfen bei der Automatisierung von CI/CD-Pipelines, zu denen beliebte Optionen gehören:
Zu den beliebten DevOps-Tools, die für die Einrichtung, den Betrieb und die Wartung der Pipeline-Infrastruktur verwendet werden, gehören:
DevOps-Tools, die bei der Überwachung eingesetzt werden, durchsuchen Code und zugehörige Systeme nach Daten, die bei Entscheidungen über Leistung und Kundennutzen helfen:
Bei DevOps geht es weniger um die Einführung neuer Rollen und Jobbezeichnungen als vielmehr um eine Neuverteilung der Zuständigkeiten innerhalb eines Teams mit einem eher interdisziplinären Ansatz. Das gesamte Team ist gemeinsam für die Planung, Entwicklung, Prüfung und Freigabe von Anwendungen und Infrastruktur verantwortlich.
Der Titel „DevOps Engineer“ ist inzwischen so weit verbreitet, dass dieser laut mehreren Studien im Jahr 2021 als die weltweit am meisten nachgefragte Rolle in der Softwareentwicklung gilt.
Obwohl die Nachfrage nach DevOps Engineers extrem hoch ist, lässt sich der Begriff auf eine relativ große Auswahl an Rollen anwenden. Ein DevOps Engineer, der an einem Softwareentwicklungsprojekt arbeitet, kann ganz andere Aufgaben haben als ein anderer, der an einem anderen Projekt arbeitet. Es ist sogar durchaus möglich, dass ein einziges DevOps-Team mehrere DevOps Engineers mit unterschiedlichen Schwerpunkten und Verantwortlichkeiten umfasst.
DevOps-Engineers konzentrieren sich in der Regel auf den Aufbau und die Pflege von CI/CD-Pipelines und haben Erfahrung mit der Einrichtung und Verwendung gängiger DevOps-Tools zur
Weitere Einzelheiten über die Rolle des DevOps-Ingenieurs finden Sie in unserem Blog Profil eines DevOps-Engineer und DevOps-Engineer Gehalt, ein Internationaler Vergleich.
Der Vorteil eines kombinierten DevOps-Teams liegt in der höheren Qualität und Zuverlässigkeit der Software, die schneller optimiert werden kann. Aus diesem Grund ist DevOps ein wichtiger Trend in der modernen Softwareentwicklung.
Der Cloud-Service-Anbieter Microsoft Azure führt die Vorteile von DevOps als Business-Case-Leistungen auf:
In diesem Blog befassen wir uns mit verschiedenen, aber miteinander kompatiblen Definitionen von DevOps und damit, wie DevOps in der Praxis umgesetzt wird, um die organisatorischen Vorteile zu erzielen, die diesen Trend so einflussreich machen.
DevOps bietet Vorteile für Softwareentwicklungsteams und auf organisatorischer Ebene, indem es dazu beiträgt, Schwachstellen zu beseitigen, die mit der funktionalen Trennung zwischen denjenigen, die den Code einer Softwareanwendung schreiben und testen, bzw. denjenigen, die ihn bereitstellen und verwalten, verbunden sind.
Die frühen Befürworter von DevOps wie Patrick Debois, Andrew Shafer und John Allspaw vertraten die Ansicht, dass diese Trennung inhärente Schwachstellen aufweise, die die Gesamtqualität der an die Benutzer gelieferten Software beeinträchtigten. Diese resultierten aus der Tatsache, dass getrennte Teams, die nach unterschiedlichen Leistungsindikatoren beurteilt wurden, für dasselbe Endziel verantwortlich waren: den Benutzern eine möglichst hochwertige Software zu bieten.
Wenn das Softwareentwicklungsteam nicht an der erfolgreichen Bereitstellung der von ihm erstellten Software beteiligt ist und keine Verantwortung dafür trägt, liegt es in der Natur des Menschen, dass es sich weniger für die Qualität und Effizienz dieser Bereitstellung interessiert. DevOps bricht die Grenzen zwischen Entwicklung und operativen Abläufen auf, um die Verantwortung und Anerkennung für qualitativ hochwertige Software, die im Sinne der Nutzererfahrung definiert ist, zu teilen.
Jedes Unternehmen, das sich zu einer DevOps-Umstellung verpflichtet, benötigt KPIs (Key Performance Indicator), um die Auswirkungen auf die strategischen Ziele zu verfolgen und zu messen. Dazu gehören in den meisten Fällen:
DevOps wird vor allem mit Cloud und Cloud-nativer Entwicklung in Verbindung gebracht, ist aber keineswegs nur in diesem Kontext anwendbar. Im weitesten Sinne ist Cloud Computing definiert: „ermöglicht es, Infrastrukturen als Code oder Templates zu definieren und damit wiederholbare Prozesse zu schaffen, die ohne Cloud-Technologien nicht möglich sind.“
Diese „wiederholbaren Prozesse“ ermöglichen die Automatisierung, die, wie wir später noch näher erläutern werden, für die DevOps-Entwicklung von zentraler Bedeutung ist. Kurz gesagt, die Geschwindigkeit, Skalierbarkeit und Effizienz der Cloud helfen agilen und DevOps-Teams, die Geschwindigkeit und Qualität ihrer Arbeit zu erhöhen.
Die Cloud-native Entwicklung wird meist als „in der Cloud für die Cloud entwickelt“ beschrieben. Dies bezieht sich auf die Tatsache, dass die Entwicklungsumgebung von Cloud-nativen Anwendungen eine exakte Nachbildung der Produktionsumgebung ist bzw. sein sollte, in der die Software ausgeführt wird.
Die Spiegelung von Entwicklungs- und Produktionsinfrastruktur hat zwei wesentliche Vorteile:
DevOps verfolgt bei jeder neuen Anwendung einen Cloud-first-Ansatz, der die Frage „Sollen wir die Cloud für diese Anwendung nutzen?“ durch die Frage „Gibt es einen Grund, die Cloud nicht für diese Anwendung zu nutzen?“ ersetzt.
Zu den üblichen Gründen, warum eine Anwendung nicht ausschließlich oder überhaupt nicht in einer Cloud-Umgebung entwickelt und ausgeführt werden sollte, gehören Sicherheits- und Regulierungsanforderungen sowie manchmal auch umfassendere Infrastrukturfaktoren auf Unternehmensebene.
Aber die Nichtnutzung der Cloud oder nur der Cloud schließt DevOps nicht aus. Die DevOps-Mentalität, bei der Entwicklung und Betrieb gemeinsam auf das gemeinsame Ziel hinarbeiten, den Nutzern ein möglichst hochwertiges Softwareerlebnis zu bieten, gilt auch für die Bereitstellung von Hybrid- und „Bare-Metal“-Servern. DevOps und Cloud sind zwar eng miteinander verbunden, schließen sich aber nicht gegenseitig aus.
DevOps-Ingenieure und -Teams können auch mit Site Reliability Engineers (SREs) zusammenarbeiten, wobei ein gut definierter und verwalteter Ansatz erhebliche Synergieeffekte bietet.
Der Begriff DevOps-Architektur bezieht sich auf die spezifische Infrastruktur, die zur Unterstützung der DevOps-Prozesse und -Praktiken in den verschiedenen Phasen des Lebenszyklus einer Anwendung geschaffen wurde. Ein Teil dieser Infrastruktur besteht wahrscheinlich aus einigen der im vorherigen Abschnitt erwähnten Tools, während andere bei ihrer Erstellung verwendet werden.
Cloud-Plattformen, Virtualisierung, Containerisierung, Microservices, CI/CD-Pipelines, Sicherheitspraktiken und Infrastruktur als Code kommen in einer DevOps-Architektur in der Regel zusammen.
Container, die zumeist von Kubernetes orchestriert werden, bilden eine wichtige Säule der DevOps-Architektur. In Containern werden Quellcode, Konfigurationsdateien, Bibliotheken, Binärdateien und alle Abhängigkeiten in einem einzigen Paket zusammengefasst, um eine Anwendung schnell und zuverlässig auszuführen. Das Verpacken von Codemodulen in einem oder mehreren Containern ermöglicht den einfachen Transport zwischen Computerumgebungen, wie Entwicklungs-, Test- und Produktionsumgebung.
Container isolieren den Code von Unterschieden in der Betriebssystemverteilung, den Sicherheitsrichtlinien, den Netzwerktopologien und der zugrundeliegenden Infrastruktur, was für reibungslose CI/CD-Pipelines und viele der anderen Automatisierungen, die DevOps einführt, von entscheidender Bedeutung ist. Durch die Bereitstellung einer in sich geschlossenen virtuellen Infrastruktur (IaC) können Container den in ihnen verpackten Code in jeder Umgebung reibungslos ausführen.
Die Aufteilung einer Anwendung in kleinere containerisierte Module, die so genannten Microservices, ist ebenfalls Bestandteil einer DevOps-Architektur. Jeder Microservice läuft unabhängig und ist lose mit anderen Microservices gekoppelt, mit denen er über APIs kommuniziert. Diese Entkopplung von Merkmalen und Funktionalitäten hat zwei wesentliche Vorteile, die mit den Zielen von DevOps übereinstimmen:
Der DevOps-Ansatz wird zunehmend auf die Integration von Sicherheitsprozessen, -praktiken und -tools ausgeweitet, ein Trend, der sich in dem Maße verstärken dürfte, wie die Sicherheit als Priorität für alle Softwaresysteme und -anwendungen zunimmt. Die Integration der teamübergreifenden Verantwortlichkeit für die Sicherheit wird als DevSecOps bezeichnet.
Wenn das Ziel von DevOps die schnellere Bereitstellung von Software in besserer Qualität ist, dann ist das Ziel von DevSecOps die schnellere Bereitstellung von sicherer und besserer Software.
Das DevSecOps-Manifest von 2012 umreißt drei Kernprinzipien von DevSecOps:
Für jeden, der im Bereich IT und Softwareentwicklung tätig ist, ist es wichtig zu verstehen, wie DevOps in den verschiedenen Kontexten, die wir hier behandelt haben, definiert wird, welche Ziele es verfolgt und wie diese mit den hier vorgestellten Prozessen, Praktiken und Tools erreicht werden. Das gilt unabhängig davon, ob Ihre Funktion direkt mit den Lebenszyklen der Softwareentwicklung verbunden ist oder ob Sie eher als Stakeholder in einer technologieorientierten Organisation tätig sind.
Und warum? Weil DevOps zu einem Technologiestandard wird, ebenso wie die Nutzung von Cloud Computing und die Einführung agiler Entwicklungspraktiken. Tatsächlich wird DevOps als direkte Folge dieser beiden Trends zunehmend zur Norm. Alle drei Trends werden sich nicht nur in absehbarer Zeit weiter durchsetzen, sondern auch zunehmend zum Standard für moderne Softwarelösungen werden.
K&C - Wir schaffen innovative Tech-Lösungen seit über 20 Jahren.
Kontaktieren Sie uns, um Ihre individuellen Bedürfnisse oder Ihr nächstes Projekt zu diskutieren.