DevOps

Wissen kompakt: DevOps, eine Kombination aus Development (Dev) und Operations (Ops), integriert die Zusammenarbeit beider Fachgebiete in einem kontinuierlichen Prozess.

DevOps – die kontinuierliche Zusammenarbeit von Softwareentwicklung und IT-Betrieb

DevOps ist die Abkürzung von Development (Dev) und Operations (Ops) und integriert Softwareentwicklung und IT-Betrieb, mit dem Ziel, die Zusammenarbeit beider Fachbereiche zu verbessern. Dabei nutzt DevOps eine Reihe von Praktiken und Prinzipien, um den kontinuierlichen Ablauf von Development und Operations zu optimieren.

Der DevOps-Ansatz basiert auf vier einfachen Bausteinen:

  • Die permanente Erhöhung des Kundennutzens und dadurch die Steigerung der Wertschöpfung,
  • die Verkürzung von Feedbackzyklen inklusive der aktiven Nutzung des Feedbacks der Stakeholder,
  • die kontinuierliche Verbesserung der Abläufe, sowie
  • die gemeinschaftliche Verantwortung der Beteiligten für Softwareentwicklung und IT-Betrieb.

 

DevOps - die kontinuierliche Zusammenarbeit von Softwareentwicklung und IT-Betrieb

DevOps ist eine Arbeitsweise, bei der Entwicklungs- und Betriebsteams während des gesamten Lebenszyklus der Softwareentwicklung eng zusammenarbeiten, vom Entwurf und der Entwicklung bis zur Bereitstellung und Wartung. Dieser Ansatz zielt darauf ab, die Zusammenarbeit, Kommunikation und Integration zwischen diesen Teams zu verbessern, mit dem Ziel, Software schneller und zuverlässiger bereitzustellen.

In der Regel basiert der DevOps-Ansatz auf dem Einsatz von Automatisierungstools, um die Erstellung, das Testen und die Bereitstellung von Software sowie die Überwachung und Verwaltung der Infrastruktur, auf der die Software läuft, zu erleichtern. Auf diese Weise können Teams auftretende Probleme schnell erkennen und beheben, und die Software kontinuierlich verbessern sowie weiterentwickeln. Die Verwendung agiler und schlanker Methoden, die der schnellen Bereitstellung kleiner, brauchbarer Inkremente Vorrang vor dem traditionellen „Big-Bang-Ansatz“ einräumen, bei dem umfassende Versionen oftmals in großen Abständen bereitgestellt werden, erweist sich in der Praxis als sehr vorteilhaft.

Die Phasen im DevOps-Lebenszyklus

Der DevOps-Lebenszyklus wird häufig als eine kontinuierliche Schleife dargestellt, die folgende Phasen umfasst¹:

  • Plan bzw. Planung: In dieser Phase werden die geschäftlichen Anforderungen und Ziele für die Software sowie die zur Erreichung dieser Ziele erforderlichen Ressourcen und Zeitpläne festgelegt.
  • Code bzw. Codieren: Die Entwicklungsteams nutzen Entwicklungsumgebungen, schreiben Code und verwenden Versionskontrollsysteme, um Änderungen zu verwalten und zu verfolgen.
  • Build bzw. Erstellung: Der Code wird dann mithilfe von Tools zur kontinuierlichen Integration (CI) erstellt und getestet, um sicherzustellen, dass er fehlerfrei ist und wie erwartet funktioniert.
  • Test bzw. Testen: Der Code wird für Tests, einschließlich Integrations- und Akzeptanztests, in einer Staging-Umgebung bereitgestellt.
  • Release bzw. Freigabe: Sobald der Code erfolgreich getestet wurde, wird er für den produktiven Einsatz freigegeben und den Endbenutzern zur Verfügung gestellt.
  • Deploy bzw. Bereitstellung: Der Code wird in der Produktionsumgebung bereitgestellt, und alle erforderlichen Infrastrukturänderungen werden vorgenommen.
  • Operate bzw. Betreiben: Die Software wird in der Produktionsumgebung überwacht und verwaltet, um sicherzustellen, dass sie wie erwartet funktioniert, und um auftretende Probleme schnell zu erkennen und zu beheben.
  • Monitor bzw. Überwachung: Metriken, Protokolle und Daten werden gesammelt, um die Leistung des Systems zu überwachen und etwaige Probleme zu erkennen.

Auch wenn die einzelnen Phasen in der gelebten Praxis der Unternehmen variieren, so bleibt das Ziel unbenommen, einen kontinuierlichen und automatisierten Fluss zwischen den Phasen zum Zwecke einer schnelleren und zuverlässigeren Bereitstellung von Software zu ermöglichen. Besondere Bedeutung erfährt dabei das Feedback der Benutzer sowie das Monitoring zur Verbesserung des Ablaufs und der Gesamtqualität der Software.

DevOps-Praktiken in der Übersicht

Ein wichtiges Ziel von DevOps ist es, Prozesse zu automatisieren und zu rationalisieren, die mit der Erstellung, dem Testen und der Bereitstellung von Software sowie der Überwachung und Verwaltung der Infrastruktur, auf der sie läuft, verbunden sind. Um dieses Ziel zu erreichen, kommen verschiedene Praktiken zum Einsatz:

Versionierung: Die Softwareentwickler schreiben ihren Code unter Verwendung eines Versionskontrollsystems, sodass sämtliche Versionsstände allen Beteiligten permanent zur Verfügung stehen.

Continuous Integration bzw. kontinuierliche Integration: Während die Entwickler ihre Code-Änderungen übertragen, erstellt und testet ein Continuous Integration (CI)-System den Code automatisch. So können Integrationsprobleme frühzeitig erkannt werden, bevor sie zu größeren Problemen werden.

Continuous Delivery bzw. kontinuierliche Bereitstellung: Sobald der Code erfolgreich erstellt und getestet wurde, wird er automatisch in einer Staging-Umgebung für weitere Tests bereitgestellt. Diese Umgebung sollte so nah wie möglich an der Produktionsumgebung sein, um einen reibungslosen Übergang zu gewährleisten.

Continuous Deployment bzw. kontinuierliche Verteilung: Sind die Staging-Tests erfolgreich verlaufen, wird der Code in der Produktionsumgebung und somit den Endbenutzern zur Verfügung gestellt.

Monitoring und Management bzw. Überwachung und Verwaltung: Die Produktionsumgebung wird kontinuierlich überwacht, um sicherzustellen, dass die Software wie erwartet funktioniert. Werden Probleme entdeckt, werden sie schnell erkannt und behoben.

Während des gesamten Prozesses arbeiten das Entwicklungs- und das Betriebsteam eng zusammen, um sicherzustellen, dass die Software schnell und zuverlässig bereitgestellt wird, während sie gleichzeitig in der Lage sind, auf alle auftretenden Probleme zu reagieren. In der Unternehmenspraxis werden häufig Automatisierungswerkzeuge und -technologien wie Containerisierung und Orchestrierung, Cloud-Plattformen und Automatisierungstools zur Erleichterung dieses Prozesses eingesetzt.

Anmerkung: DevOps ist ein iterativer Prozess, bei dem die beteiligten Teams und Mitarbeiter ihre Prozesse und Praktiken im Laufe der Zeit kontinuierlich verbessern und weiterentwickeln werden.

DevOps-Prinzipien in der Übersicht

Die DevOps Agile Skills Association (DASA)² nennt sechs zentrale DevOps-Prinzipien:

Kundenzentriertes Handeln stellt die Bedürfnisse und Prioritäten des Kunden in den Mittelpunkt aller Entwicklungs- und Betriebsaktivitäten. Das bedeutet, dass der gesamte DevOps-Prozess, von der Entwicklung bis zur Bereitstellung, mit dem Ziel konzipiert und ausgeführt wird, dem Kunden so schnell und effektiv wie möglich einen Mehrwert zu liefern. Die genannten Praktiken wie bspw. kontinuierliche Integration, kontinuierliche Bereitstellung und kontinuierliches Feedback ermöglichen es den Teams, schnell und effizient auf Kundenanforderungen und -wünsche zu reagieren.

„Create with the end in mind“ ist ein Grundsatz, der sich auf die Entwicklung und den Aufbau von Produkten, Diensten oder Systemen mit einem klaren Verständnis des Endziels oder Ergebnisses bezieht, das der Kunde oder Endbenutzer anstrebt. Im Kontext von DevOps bedeutet dies, dass Entwicklungs- und Betriebsteams mit einem gemeinsamen Verständnis des gewünschten Ergebnisses für den Kunden zusammenarbeiten und ihre Bemühungen und Prozesse darauf ausrichten, dieses Ergebnis zu erreichen. Dieses Prinzip ermutigt die Teams, über den gesamten Lebenszyklus eines Produkts oder einer Dienstleistung nachzudenken, von der Konzeption und Entwicklung bis hin zur Bereitstellung und Wartung, und in jeder Phase die Bedürfnisse und Erwartungen des Kunden zu berücksichtigen. Dazu gehört auch, dass man sich Gedanken über Skalierbarkeit, Wartbarkeit und andere Faktoren macht, die sich langfristig auf die Leistung des Produkts oder der Dienstleistung auswirken werden.

Ein Kern der DevOps-Philosophie ist die „End-To-End Responsibility“. Durch hohes Interesse und Eigenverantwortung in den Teams wird die Motivation auf das Produkt gestärkt. Wichtig ist dabei, dass die Teams auch nach der Entwicklung und Einführung die Verantwortung für das Produkt behalten. Die Teams übernehmen bis zum Ende des Lebenszyklus den Betrieb und die Weiterentwicklung des Produktes.

Die Integration aus Softwareentwicklung und IT-Betrieb funktioniert am besten mit funktionsübergreifenden, autonomen Teams. Sie setzen sich aus Mitgliedern verschiedener Funktionsbereiche (z. B. Entwicklung, Betrieb, Testen usw.) zusammen und verfügen über die Autonomie, Entscheidungen zu treffen und die Verantwortung für ihre Arbeit zu übernehmen. Diese Teams sind befugt, die gesamte Verantwortung für die Bereitstellung eines Produkts oder einer Dienstleistung zu übernehmen, von der Entwicklung bis zur Bereitstellung und laufenden Wartung. Damit dies wirklich funktioniert, gilt es Unternehmens-Silos aufzubrechen, die den Entwicklungs- und Lieferprozess verlangsamen können. Indem den Teams Entscheidungsfreiheit eingeräumt wird, können sie schnell auf veränderte Kundenbedürfnisse und Marktbedingungen reagieren und den Kunden schneller einen Mehrwert bieten. Außerdem können die Teams die volle Verantwortung für das Produkt oder die Dienstleistung übernehmen und haben ein höheres Maß an Verantwortlichkeit und Engagement für den Erfolg des Produkts.

Die kontinuierliche Verbesserung ist ein weiteres Schlüsselprinzip des DevOps-Ansatzes. Es fordert eine Denkweise, die darauf abzielt, die Entwicklungs- und Betriebsprozesse sowie die Produkte und Dienstleistungen, die den Kunden bereitgestellt werden, kontinuierlich zu optimieren und zu verbessern. Der Anspruch dabei ist, den Kunden kontinuierlich Mehrwert zu liefern, bspw. indem Engpässe, Ineffizienzen und verbesserungswürdige Bereiche im Softwareentwicklungszyklus identifiziert und behoben werden. Dies kann durch Praktiken wie das Messen und Überwachen von Leistungsmetriken, das Sammeln und Analysieren von Daten und die Implementierung von Änderungen und Verbesserungen auf der Grundlage dieser Daten erreicht werden.

Kontinuierliche Verbesserung bedeutet zudem auch, immer nach Möglichkeiten zu suchen, den Prozess, die Automatisierung und die Tools zu optimieren, um den Wert schneller und effizienter zu liefern sowie die Risiken zu minimieren und die Qualität des Softwareprodukts zu erhöhen.

„Automatisiere alles, was du kannst“ ist das sechste Prinzip, das die DASA benennt. Es ist ein Grundsatz, der die Verwendung von Automatisierung zur Rationalisierung und Optimierung der Entwicklungs- und Betriebsprozesse betont. Dieser Grundsatz ermutigt Teams, wiederholende Aufgaben, Prozesse und Arbeitsabläufe zu identifizieren und zu automatisieren, insbesondere wenn diese anfällig für menschliche Fehler sind oder deren manuelle Ausführung viel Zeit und Mühe erfordert.

Das Ziel der Automatisierung besteht darin, Zeit und Ressourcen für wertvollere Aufgaben wie Innovation und Problemlösung freizusetzen und die Effizienz, Konsistenz und Zuverlässigkeit des Softwareentwicklungszyklus zu erhöhen. Die Automatisierung kann Aufgaben wie Build und Test, Bereitstellung, Überwachung und Skalierung umfassen.

Die Automatisierung kann durch den Einsatz verschiedener Tools wie Skripte, Konfigurationsmanagement-Tools, Tools für die kontinuierliche Integration und Bereitstellung sowie Überwachungs- und Protokollierungstools erreicht werden. Indem Organisationen so viel wie möglich automatisieren, können Teams idealerweise ihren Zeit- und Arbeitsaufwand für die Ausführung von Aufgaben reduzieren und die Geschwindigkeit, Qualität und Genauigkeit des Softwareentwicklungsprozesses erhöhen.

 

Vorteile und Nachteile von DevOps

Der DevOps-Ansatz bietet verschiedene Vorteile:

  • Schnellere Softwarebereitstellung: DevOps ermöglicht es Teams mithilfe der genannten Praktiken, Software schneller zu erstellen, zu testen und bereitzustellen, sodass neue Features und Updates schneller an die Endbenutzer geliefert werden können und der Nutzen für die Anwender steigt.
  • Erhöhte Zuverlässigkeit: Durch die Automatisierung des Softwareentwicklungsprozesses trägt DevOps dazu bei, menschliche Fehler zu reduzieren und die Gesamtqualität der Software zu verbessern.
  • Verbesserte Zusammenarbeit: DevOps fördert eine Kultur der Zusammenarbeit zwischen Entwicklungs- und Betriebsteams, was idealerweise zu einer besseren Kommunikation und effizienteren Problemlösung führt.
  • Größere Flexibilität: DevOps ermöglicht es den Teams, schnell auf Änderungen der Geschäftsanforderungen und Kundenbedürfnisse zu reagieren.

Diesen Vorteilen stehen auch einige Nachteile gegenüber:

  • Komplexität: Die Einrichtung und Umsetzung von DevOps kann komplex sein, insbesondere für Unternehmen, die diesen Ansatz noch nicht kennen.
  • Bedarf an speziellen Fähigkeiten: DevOps erfordert spezielle Fähigkeiten, wie z. B. Erfahrung mit Automatisierungstools oder Cloud Computing.
  • Hohe Anfangskosten: Die Implementierung des Ansatzes kann teuer sein, speziell, wenn Unternehmen in neue Tools und Technologien investieren müssen.
  • Sicherheitsbedenken: DevOps kann die Anzahl potenzieller Angriffsvektoren erhöhen, weshalb Unternehmen während des gesamten Entwicklungsprozesses ein besonderes Augenmerk auf die Sicherheit legen sollten.
  • Kontinuierliches Lernen: Der Ansatz entwickelt sich ständig weiter, sodass Unternehmen, die dem Ansatz folgen, stets mit den neuesten Tools und Best Practices Schritt halten müssen.

Anmerkung: DevOps ist Einheitslösung ist, sondern umfasst wie beschrieben eine Reihe von Praktiken, die auf die spezifischen Bedürfnisse und Ziele eines Unternehmens zugeschnitten werden müssen. Folglich hängen die Vor- und Nachteile stark von den Bedürfnissen, der Kultur und der Umgebung des Unternehmens ab.

Herausforderungen bei der Einführung von DevOps

Die Einführung von DevOps kann für viele Unternehmen eine Herausforderung darstellen, da sie eine erhebliche Veränderung in der Art und Weise der Zusammenarbeit von Teams und der von ihnen verwendeten Technologien bedeutet. Einige häufige Herausforderungen sind:

DevOps erfordert einen Kulturwandel, bei dem Entwicklungs- und Betriebsteams eng zusammenarbeiten und auf ein gemeinsames Ziel hinarbeiten. Dies kann für Unternehmen, die traditionell in Silos gearbeitet haben, schwierig sein. Zudem erfordert der Ansatz ein hohes Maß an Kommunikation und Zusammenarbeit zwischen Entwicklungs- und Betriebsteams. Wenn Teams nicht an die Zusammenarbeit gewöhnt sind, kann dies ein erhebliches Hindernis für die Einführung darstellen.

Immer wieder passiert es in der Praxis, dass Teams ihre Arbeitsweise ändern müssen, sich einige Teammitglieder aber latent oder auch offen gegen diese Veränderungen aussprechen. In Verbindung mit einem Mangel an qualifiziertem Personal, das bspw. über umfassende Erfahrungen mit Automatisierungstools verfügt, kann dies ein sehr großes Hindernis darstellen.

Grundsätzlich ist die Automatisierung ein Schlüsselaspekt von DevOps, und Unternehmen, die nicht über die erforderlichen Tools und Technologien verfügen, haben oftmals Schwierigkeiten bei der Umsetzung. Auch die hohen Anfangskosten zur Implementierung des Ansatzes stellen sich häufig als Hindernis heraus.

Und zu guter Letzt ist die Erfolgsmessung schwierig, insbesondere wenn Organisationen wenig Erfahrung mit der Quantifizierung einer schnelleren Softwarebereitstellung oder einer höheren Zuverlässigkeit haben.

Um diese Herausforderungen zu meistern, gehen viele Unternehmen schrittweise vor und fangen klein an, indem sie sich auf bestimmte Projekte und Bereiche konzentrieren, in denen DevOps große Wirkung entfalten kann. Es ist wichtig, allen Beteiligten die Vorteile und Ziele des integrierten Ansatzes zu vermitteln und die Zustimmung des gesamten Unternehmens einzuholen. Und es ist auch wichtig, Schulungen und Unterstützung für die beteiligten Teams und Mitarbeiter anzubieten, damit diese notwendige Fähigkeiten und Kenntnisse erwerben können.

Impuls zum Diskutieren:

Wie lässt sich der interne Ansatz der Kombination von Softwareentwicklung und IT-Betrieb auch als Verkaufsargument in Richtung Markt nutzen?

Hinweise:

Haben Sie Lust auf einen neuen Lieblings-Newsletter?

[1] Der dargestellte Lebenszyklus ist stark vereinfacht.
[2] DASA

Hier finden Sie ergänzende Informationen aus unserem Blog:

t2informatik Blog: DevGreenOps - Klimawandel meets DevOps

DevGreenOps – Klimawandel meets DevOps

t2informatik Blog: DevOps und Microservicearchitekturen unter der Lupe

DevOps und Microservicearchitekturen unter der Lupe

t2informatik Blog: Wertströme in DevOps

Wertströme in DevOps