DevOpsWas ist DevOps? Der Begriff DevOps setzt sich aus den… gehört in den vergangenen Jahren zu einem der beliebtesten Schlagwörter der Softwareentwicklung.
Abb. 01: DevOps Trends weltweit
Datenquelle: Google Trends (https://trends.google.de/trends/explore?date=all&q=%2Fm%2F0c3tq11)
Ein fundiertes Verständnis scheint allerdings noch nicht weit verbreitet, wie ein Blick auf die Google Trends zum Thema DevOps zeigt (Abb. 01). In diesem Blog möchten wir DevOps erläutern und Ihnen die grundlegenden Ziele und Charakteristika sowie die Herausforderungen und Vorteile dieser Entwicklungsphilosophie näherbringen.
DevOps Philosophie
DevOps beruht vor allem auf Prinzipien des Lean Managements und des Agile Manifesto und verfolgt im Kern das Ziel, unternehmerischen Erfolg durch die kontinuierliche und effiziente Erbringung von Mehrwert oder Nutzen für den Kunden bzw. Anwender zu gewährleisten (Kim & Demmig, 2017). In diesem Zusammenhang ist es bedeutend DevOps als Philosophie oder Kultur zu begreifen und es nicht auf die Verwendung bestimmter Methoden oder Tools zu reduzieren. Zur Verdeutlichung dieses Gesamtkontextes stellen wir Ihnen daher zunächst die grundlegenden DevOps-Prinzipien vor. Im Anschluss werden spezifische Prozesse, Methoden und Tools erläutert.
Prinzipien und Werte
Wie der Name DevOps bereits nahelegt, geht es zentral darum, die Bereiche Entwicklung (Development) und Betrieb (Operations) besser zu integrieren. Gene Kim hat in einem Blog bzw. als Mitautor des Standardwerks Das DevOps-Handbuch drei Wege formuliert, durch die diese Integration erreicht und eine DevOps-Organisation aufgebaut werden kann.
Der erste Schritt ist eine ganzheitliche Betrachtung des Lebenszyklus einer Softwareentwicklung. Aus Kunden- bzw. Anwendersicht endet eine Entwicklung mit der Fertigstellung in produktiven Umgebungen und sieht keine Brüche zwischen Testumgebungen in der Entwicklung und der finalen Administration im Bereich Operations vor. Die Vermeidung dieser Brüche und die Überwindung der typischen Silo-Konstellationen in der Organisation von Development und Operations ist daher ein wesentlicher Schritt, um organisatorische Hürden zu eliminieren, die Durchlaufzeiten zu verkürzen und so schneller relevante Mehrwerte für die Nutzer zu erzeugen und bereitzustellen.
Neben diesem Arbeitsfluss in Richtung des Kunden entlang der Bereiche Development und Operations ist auch die Rückbeziehung durch schnelles und kontinuierliches Feedback ein wichtiger Weg, der beschritten werden muss. Wie fast alle modernen Philosophien zur Prozessverbesserung, setzt auch DevOps eine Kultur des Diskurses und der Rückmeldung voraus, um Fehler schnell zu erkennen. Dadurch können ein wiederholtes Auftreten von Problemen und kumulative Risiken frühzeitig vermieden werden. Das Ziel ist die Schaffung sicherer Arbeitssysteme, die Probleme und Fehler in einem Stadium aufdecken, in dem sie keine allzu großen Auswirkungen auf die Durchlaufzeit haben, da sie schnell behoben werden können.
Der dritte Weg führt die zuvor genannten Aspekte konsequent fort und strebt durch ständige Wiederholungen der beiden ersten Wege eine Kultur des Lernens und Vertrauens an, in der die Beteiligten bereit sind Risiken einzugehen und Fehler zu begehen. Diese Entwicklung wird getragen von der Fokussierung auf kleine Schritte und Arbeitspakete, die keine großen Risiken entstehen lassen. Die konsequente und dauerhafte Wiederholung der Durchlaufzyklen wirkt sich positiv auf die gesamte Durchlaufzeit eines Projektes aus, da schneller nutzbarer Output erzielt wird. Darüber hinaus ergibt sich eine größere Flexibilität gegenüber ungeplanten Änderungen und Anpassungen an neue Gegebenheiten.
Phasen, Prozesse und Tools
Die DevOps Philosophie ist zunächst vor allem durch das Herunterbrechen der Entwicklungsaufgaben in kleine, voll auslieferbare Entwicklungsartefakte geprägt. Ziel ist die Veränderung des Entwicklungsansatzes von großen monolithischen Strukturen, mit wenigen, umfangreichen Durchlaufzyklen, hin zu kleinen agilen Servicearchitekturen, mit vielen Zyklen pro Tag. Eine eingängige Grafik (Abb. 2.2), die sich zu DevOps häufig findet, zeigt eine unendliche Schleife. Sie bildet die Verbindung der Bereiche Development und Operations mit den entsprechenden Phasen eines Durchlaufzyklus ab. Der entscheidende Faktor dieser andauernden Aufgabe ist Kontinuität. Aus diesem Grund haben sich spezifische Kontinuitätsprozesse innerhalb von DevOps etabliert (Abb. 2.2), die die Phasen flankieren und insbesondere durch einen hohen Automatisierungsgrad den Prinzipien und Zielen von DevOps Rechnung tragen sollen.
Abb. 02: DevOps Phasen und Kontinuitätsprozesse
Continuous Integration
Der erste dieser Automatisierungsprozesse ist die kontinuierliche Integration oder Continuous Integration, kurz CIContinuous Integration, bedeutet die kontinuierliche Zusammenführung von einzelnen Entwicklungsständen (Feature…. Sie erfolgt im Bereich der Entwicklung und verlangt, dass der heute häufig von mehreren Entwicklern oder Entwicklerteams parallel erarbeitete Quellcode laufend zusammengefügt wird. Der CI-Prozess sorgt dafür, dass alle Veränderungen des Quellcodes automatisch in einem gemeinsamen Repository münden und durch standardisierte Tests sichergestellt wird, dass keine Konflikte zwischen vorhandenem und neuem Code bestehen. Dadurch wird die Integrität der Entwicklungen laufend überprüft und gewährleistet, dass sich sämtliche Codebestandteile in das Gesamtgefüge des Produktes korrekt einfügen.
Continuous Delivery
Der zweite Kontinuitätsprozess im Rahmen von DevOps ist Continuous Delivery, kurz CDContinuous Delivery oder Continuous Deployment, zielt darauf ab kontinuierlich viele…. Dieser hat den Anspruch, dass Änderungen des Quellcodes bzw. neue Entwicklungen schnell, automatisiert und zuverlässig ausgeliefert werden. Dementsprechend geht es bei der Anwendung von Continuous Delivery um die Automatisierung der Auslieferungsprozesse in Entwicklungs-, Test- und Produktivumgebungen. Im Gesamtkontext von DevOps und der konsequenten Fortführung von Continuous Integration ist dabei das Ziel, bereits kleine Entwicklungsartefakte zum frühestmöglichen Zeitpunkt in einen produktiven Zustand zu versetzen. Im Hinblick auf die finale Auslieferung in Produktivumgebungen werden allerdings zwei Aspekte unterschieden: Ist die komplette Auslieferungskette automatisiert wird von Continuous Deployment gesprochen. Continuous Delivery setzt den Schwerpunkt auf die Versetzung jedes Entwicklungsartefaktes in ein geprüft auslieferbares Stadium. Zur Risikominimierung wird der Produktivumgebung häufig noch eine identische Vorinstanz vorgeschoben. Continuous Delivery umfasst nur die automatische Auslieferung bis auf diese Ebene. Das finale, operative Deployment erfolgt manuell, gegebenenfalls in zusammengefasten Paketen. Hierfür kann es gute Gründe geben, wobei der Trend in der Softwareentwicklung vermehrt zum Continuous Deployment, als erweiterte Form des Continuous Delivery geht. Durch den grundlegenden Fokus auf die Auslieferungsautomatisierung wird jedoch primär Continuous Delivery als zweite wesentliche DevOps-Säule neben Continuous Integration genannt und im Zusammenhang gerne von CI/CD gesprochen.
Continuous Testing
Ein weiterer Prozess, der eine gewichtige Rolle für die erfolgreiche Anwendung von DevOps spielt, aber häufig übergangen wird, ist das kontinuierliche Testen oder Continuous Testing, kurz CTContinuous Testing (CT), ein Bestandteil von CI und CD um…. Dies liegt daran, dass spezifische Tests bereits dem CI/CD Prozess zugeschrieben werden und Continuous Testing nur als beiläufiges Schlagwort neben der Testautomatisierung in den Ring geworfen wird. Dies verkennt allerdings den Schwerpunkt, den DevOps auf das proaktive Finden und Beheben von Fehlern legt, der über die Automatisierung von Prüfungen im Rahmen von CI/CD hinausgeht. Continuous Testing kann als verbindendes Element von CI und CD betrachtet werden (Abb. 2.2) und zwar in dem Sinne, das Tests in DevOps nicht mehr nur eine Phase im Softwareentwicklungslebenszyklus sind, sondern eine integrale Aktivität, die sich in verschiedenen Überprüfungsformen und persönlichem Feedback in allen Phasen manifestiert. CT wird auf diese Weise zu einem linearen Qualitätssicherungsprozess innerhalb der DevOps-Zyklen.
Continuous Feedback
Der letzte Kontinuitätsaspekt ist als übergreifender Prozess elementarer Bestandteil aller DevOps-Phasen und spiegelt die Verbindung der Fachbereiche Development und Operations sowie der Nutzer bzw. Kunden wider. Denn um die unendliche DevOps-Schleife mit Leben zu füllen, ist kontinuierliches Feedback unerlässlich. Sei es durch automatisierte Prüfungen oder durch Rückmeldungen beteiligter Stellen. Es bedarf der ständigen Kontrolle, ob die geplante Veränderung den erwogenen produktiven Mehrwert schafft, und Kommunikation, um Anforderungen richtig zu verstehen. Hierdurch werden Fehlentwicklungen und Probleme frühestmöglich erkannt und kumulative Risiken minimiert.
Tools
Unterschiedliche Tools unterstützen den DevOps-Prozess sehr stark, da sie sich weitestgehend für die Automatisierung der Prozessschritte verantwortlich zeigen. Die Tools finden zumeist in einem oder mehreren der skizzierten Prozessschritte Anwendung und sind entsprechend skalierbar. Darüber hinaus lassen sie sich durch offene Standardschnittstellen zumeist leicht miteinander verzahnen. Ziel ist es, manuelle, wiederkehrende Tätigkeiten entweder zu vereinfachen oder vollständig zu automatisieren. Die Liste verfügbarer Helfer des DevOps-Kosmos ist lang und es stehen sowohl kommerzielle als auch viele Open-Source-Lösungen bereit (Abb. 2.4). Dadurch kann die Tool-Auswahl grundsätzlich sehr flexibel und bedürfnisgerecht erfolgen. Eine globale Erläuterung führt in diesem Rahmen jedoch zu weit.
Abb. 03: Tools des DevOps Kosmos
Business Investition in DevOps
DevOps ist eine weitreichende Investition in Menschen, Prozesse und Tools wodurch sich Herausforderungen stellen, denen üblicherweise mit Methoden des Change Managements begegnet wird. In personeller Hinsicht müssen die Arbeitskräfte auf ein breiteres, fachübergreifendes Aufgabengebiet vorbereitet werden und sich offen für neue Prozesse und Technologien zeigen. Beim Erarbeiten der Prozesse wird die Umstellung von formalen Freigabestrukturen hin zu automatisierten Tests und Deployments, Aufwand in Anspruch nehmen. Zudem verändert sich der Arbeitsrhythmus und die Arbeitskultur. Darüber hinaus muss der technologische Status Quo ermittelt werden, um eine Aussage treffen zu können, inwieweit die vorhandenen Systeme und Organisationsprozesse DevOps-kompatibel sind und speziell dem erhöhten Automatisierungsgrad Rechnung tragen. Im Hinblick auf neue Tools kann auf eine Reihe von Open-Source-Produkten zurückgegriffen werden, allerdings können sich auch hier Aufwände ergeben. Zur Bewältigung dieser Herausforderungen ist die Begleitung durch erfahrene Experten ratsam. Diese können in der Phase der Transformation Anpassungsschwierigkeiten abfedern und dabei helfen, dass die Geschwindigkeits- und Qualitätsvorteile schnell zum Tragen kommen.
Business Mehrwert durch DevOps
Aus wirtschaftlicher Sicht weckt DevOps zwei zentrale Erwartungen: Die erste besteht darin, konzeptionelle Ideen schneller in Produktion zu bringen und damit früher wertstiftenden Output zu generieren. Wichtige Parameter in diesem Zusammenhang sind Durchlauf- und Verarbeitungszeit. Die Relation beider Kennzahlen gilt als wichtiger Indikator für die Effizienz des Wertstroms. DevOps setzt genau an diesem Punkt an und versucht insbesondere die Zeit, die eine Entwicklung in der Warteschlange zum Deployment verbringt, zu reduzieren und damit die Time-to-Market zu beschleunigen.
Der Schlüssel hierzu sind kleine Entwicklungspakete, die Entwickler schnell und voneinander unabhängig integrieren, validieren und letztlich ausliefern können. In diesem Merkmal liegt zudem der zweite wesentliche wirtschaftliche Vorteil, der sich durch die Risikominimierung im Vergleich zum Bau komplexer, monolithischer Entwicklungen ergibt. Probleme im Zusammenspiel verschiedener Komponenten werden früher erkannt und sind einfacher nachvollziehbar und behebbar. Insgesamt sinkt so die Time-to-Value und gleichzeitig steigt die Reaktionsfähigkeit und damit das Vermögen Kundenbedürfnisse besser zu verstehen.
Insoweit wird auch von einer Verschiebung vom ProjektmanagementWas ist Projektmanagement?Projektmanagement umfasst sämtliche – oft standardisierte – Aufgaben,… zum Produktmanagement gesprochen, in dem sich eine Ende-zu-Ende-Verantwortung der beteiligten Personen entlang des Wertstroms ergibt. Dies bedeutet, dass sich die Arbeit auf die Validierung von Produktideen fokussiert, was durch die kurzen Durchlaufschleifen und die aktive Feedbackkultur gewährleistet wird. Am Ende liefert DevOps auch wesentliche strategische Mehrwerte. In der Softwareentwicklung wird der Ansatz immer beliebter und die erfolgreiche Adaption dieser agilen Philosophie wird auf Kundenseite als Qualitätsmerkmal honoriert. Dies gilt umso mehr bezüglich des Wettbewerbs um fähige und engagierte Mitarbeiter, die entsprechende Arbeitsbedingungen zunehmend erwarten.
DevOps im Überblick
Ziele
- Die Durchlaufzeit von wertstiftenden Entwicklungszyklen zu vermindern (Time-to-Market)
- Die Qualität der Auslieferungen zu erhöhen (Time-to-Value)
- Die Risiken von schwerwiegenden Fehlern und Problemen zu minimieren
Charakteristika
- Kleine Entwicklungen und Auslieferung lauffähiger Artefakte (CI/CD)
- Integrierte, toolgestützte und weitgehend automatisierte Entwicklungsprozesse (CI)
- Umfangreiche und weitgehend automatisierte Qualitätskontrollen (CT)
- Zusammenlegung von Verantwortlichkeiten und Berechtigungen (CT, Ende-zu-Ende)
- Häufige Wiederholung der kleinen Durchlaufzyklen (CD)
- Enge und häufige Kommunikation aller beteiligten Stellen und Systeme (Continuous Feedback)
Herausforderungen
- DevOps ist eine umfangreiche Investition in Menschen, Prozesse und Technologie und eine Philosophie, die von den Beteiligten gelebt werden muss
- In der Transformationsphase sind Anpassungsschwierigkeiten zu erwarten, die die Geschwindigkeits- und Qualitätsvorteile negativ beeinträchtigen können
- Das größte Risiko besteht darin, die Menschen im Rahmen der Transformation zu verlieren
Vorteile
- Die Durchlaufzeit des Wertstroms sinkt und es werden nutzbare Ergebnisse in kurzen Zeiträumen erzielt
- Durch die kürzeren Durlaufzyklen und Feedbackschleifen steigt die Identifikation der eingebundenen Anwender mit ihrem Produkt und verstärkt den positiven Effekt
- Durch die kontinuierliche Feedbackschleifen steigt die Qualität der Auslieferungen und die Steuerung von Veränderungen, insbesondere durch neue Markt- oder Umweltbedingungen, wird leichter
- Das Risiko schwerwiegender Fehler beim Deployment in der Produktivumgebung wird erheblich minimiert
- Rollbacks auf Vorversionen sind leichter möglich
- Die organisatorische Komplexität der IT-Infrastruktur nimmt durch die engere Verknüpfung der Fachbereiche Entwicklung und Betrieb ab
Autoren: Dominik Fischer, Martin Peitz
Stefan Kahle
Senior Executive Manager
SAP Information Management
stefan.kahle@isr.de
+49 (0) 151 422 05 430