DevOps – nur wenige Begriffe werden so häufig verwendet und so selten klar definiert. Kein Wunder, denn es gibt keine Autorität, die den Begriff besitzt und offiziell definieren könnte.
Außerdem ist DevOps eine Idee, eine Bewegung, die sich über Jahre immer mehr manifestiert und gleichzeitig weiter entwickelt. DevOps zu definieren ist daher ein Schuss auf ein bewegliches Ziel.
DevOps ist letztlich eine nicht scharf abgegrenzte Sammlung technischer, prozessualer und kultureller Praktiken. Ihr primäres Ziel ist der Abbau der traditionellen Grenze zwischen Software-Entwicklung (“Dev”) und Betrieb (“Ops”). Daher kommt auch der Name: Dev und Ops ergeben zusammen DevOps.
Entwicklung und Betrieb stehen grundsätzlich in einem Zielkonflikt: Die Entwicklung möchte schnell auf (Markt-)Änderungen reagieren und möglichst dynamisch sein. Der Betrieb hingegen will Stabilität und möglichst keine Störungen. Klassischerweise werden Entwicklung und Betrieb von verschiedenen Teams oder Abteilungen übernommen, die dann nur wenig Verständnis für die Problemwelt der jeweils anderen Seite haben. Dementsprechend schlecht ist dann meist auch die Kommunikation zwischen den beiden. Vielfach leidet die Produktivität, die Situation verschlimmert sich und die Organisation ist in einer Abwärtsspirale gefangen.
DevOps beendet diese Situation, indem Entwicklung und Betrieb von ein- und demselben Team übernommen werden. Es gilt das Mantra: “You build it, you run it!” – also etwa: “Wer etwas baut, betreibt es auch selbst.”
Innerhalb der DevOps-Szene wird die entsprechende Arbeitsweise durch drei Prinzipien beschrieben, die sogenannten “3 Ways of DevOps”: Flow, Feedback und kontinuierliches Lernen und Experimentieren.
- Flow – Konzentriere dich auf den Fluss der Arbeit durch das Gesamtsystem, statt auf die Leistung individueller Personen, Teams oder Abteilungen.
- Feedback – Verkürze Feedback-Schleifen, sodass umgehend Korrekturen und Verbesserungen gemacht werden können.
- Kontinuierliches Lernen und Experimentieren – Es ist Teil deiner Arbeit, Neues auszuporbieren, Risiken einzugehen und lerne aus Fehlern zu lernen.
Wirklich verstehen lässt sich DevOps am besten, indem man sich die Geschichte des Begriffs vor Augen führt.
Die Frühgeschichte von DevOps
DevOps gehört zur selben Tradition wie Lean und Agile und blickt damit auf eine über 90-jährige Geschichte zurück.
Währen des 2. Weltkriegs riefen die USA das Programm “Training Within Industry” (TWI) ins Leben. Weite Teile der arbeitsfähigen Bevölkerung waren in die Armee einberufen worden, sodass akuter Fachkräftemangel herrschte. Mit TWI sollte dieser Mangel durch bessere Ausbildungskonzepte ausgeglichen werden. Den wesentliche Aspekt von TWI kennen wir heute noch: kontinuierliche Verbesserung. Mit dem Krieg endete der Fachkräftemangel und TWI geriet in den USA wieder in Vergessenheit.
Im Japan der Nachkriegszeit gab es jedoch sowohl starken US-amerikanischen Einfluss als auch eine Mangelsituation. Die Ideen von TWI fielen auf fruchtbaren Boden und beeinflussten die Entwicklung von Kaizen und des Toyota-Produktionssystems (TPS). Diese Arbeitsphilosophie beinhaltete auch damals schon den Fokus auf den Flow des Gesamtsystems, schnelles Feedback und kontinuierliches Lernen. Alle “3 Ways of DevOps” waren bereits konzeptionell vorhanden, wenn auch im Kontext der industriellen Fertigung.
Der Einfluss der USA auf die japanische Arbeitsphilosophie verkörpert niemanden besser als der Statistiker William Deming. Während der Besatzungszeit bildete er hunderte japanischer Ingenieure und Manager aus. In den 1980-er Jahren wurde Demin einem der Pioniere des Qualitätsmanagements, schließlich auch in den USA den Mainstream. Er richtete den Fokus vom Individuum auf das System, also die Gesamtorganisation. Ähnlich holistisch, wenn auch aus anderer Perspektive, entwickelte zu dieser Zeit Eliyahu Goldratt seine “Theory of Constraints” (TOC). Seitdem wissen wir: einzelne Prozessschritte zu optimieren ist zwecklos, es sei denn, der Schritt stellt im Gesamtprozess einen Engpass dar.
Einfluss auf die Software-Entwicklung
In den 1990er-Jahren wurde die iterativ-inkrementelle Arbeitsweise in der Software-Entwicklung immer populärer. In der zweiten Hälfte der 1990-er Jahre entstand mit Extreme Programming (XP) erstmals ein Vorgehensmodell welches auch Continuous Integration umfasste.
2001 formulierten die XP-Begründer gemeinsam mit anderen Größen der Software-Szene das Agile Manifest.
Wenig später veröffentlichten Mary und Tom Poppendieck ihr Buch “Lean Software Development” und übertrugen die Prinzipien des Lean-Manufacturing auf die Software-Entwicklung. Die Poppendiecks waren auch in der aufkeimenden Agile-Community aktiv, sodass ihre Ideen auch dort aufgenommen wurden.
Die Entstehung von DevOps
Ende der Nullerjahre entwickelte sich in Fachkreisen auf einer Reihe von Konferenzen eine neue Bewegung, die sicherlich auch durch die damals neuen Möglichkeiten des Cloud-Computings getrieben war. In der Branche, die bis dato viertel- oder halbjährige Releases gewohnt war, brachten einige Pioniere 10 Deployments pro Tag fertig. Dies gelang durch eine enge und pragmatische Zusammenarbeit von Entwicklung und Betrieb.
Das beeindruckte Patrick Debois derart, dass er 2009 eine eigene Konferenz zu diesem Thema ins Leben rief. Er taufte die Veranstaltung „DevOps Days“ – und hat damit den Namen geprägt, der sich bis heute hält.
Als DevOps ernst wurde – Das Accelerate-Programm
Von 2013 bis 2017 erforschten Nicole Forsgren, Gene Kim und Jez Humble mittels einer großangelegten Umfrage, was Software-Organisationen erfolgreich macht. Dies war das “Accelerate Research Program”, welches durch den seit 2013 jährlich veröffentlichten “State of DevOps Report” und das 2018 veröffentlichte Buch “Accelerate” einer breiten Öffentlichkeit bekannt wurden.
Die Forscher um Nicole Forsgren konnten die positive Wirkung von DevOps und der dazu gehörigen Praktiken auf den Unternehmenserfolg, also Profitabilität und Marktanteile, statistisch streng nachweisen.
In der IT sind derart belastbare, wissenschaftliche Erkenntnisse einzigartig. Seit der Accelerate-Forschung wissen wir, was in der Software-Entwicklung funktioniert und was nicht. In einer Branche, die ansonsten vor allem von starken Meinungen dominiert war, war dies ein Riesenfortschritt.
Bis heute bildet die Accelerate-Forschung das Rückgrat von DevOps. Die Arbeit von Nicole Forsgren und ihren Kollegen wird durch die Organisation “DevOps Research and Assessment” (DORA) weitergeführt, die mittlerweile zu Google Cloud gehört.
DevOps ist Mainstream
In den 2020er Jahren hat DevOps Einzug in praktisch jede IT-Organisation gehalten.
Nachdem sich ein gewisser Hype um das Thema entwickelt hatte, wurde der Begriff allerdings vielerorts stark aufgeweicht. Insbesondere hat im großen Stil eine Umbenennung der klassischen Betriebsteams in sogenannte „DevOps-Teams“ stattgefunden, ohne an der Arbeitsweise etwas zu ändern. Das Entwicklungsteam übergibt die Software also immer noch an ein Betriebsteam, welches jetzt einfach nur anders heißt. Dies entbehrt nicht einer gewissen Ironie, da die Essenz von DevOps gerade in der Überwindung der Grenze zwischen Dev und Ops liegt.
DevOps teilt dieses Schicksal mit anderen großen Strömungen, wie z.B. Agilität, deren Umsetzung sich mitunter auch weit von der ursprünglichen Idee entfernt hat.
Die Zukunft von DevOps
DevOps ist auch heute, nach mehr als 15 Jahren, eine lebendige Bewegung. Aktuell zeichnen sich drei sehr deutliche Trends ab: Platform Engineering, Organizational Design und DevOps als Gerüst für KI-Organisationen.
Platform Engineering
Während ein Team früher vielleicht „nur“ entwickelt hat, verlangt die Umstellung auf DevOps nun einiges mehr. Die Übernahme von Test, (Cloud-)Betrieb und Co. stellt eine enorme Mehrbelastung da (Fachleute sprechen von hoher Cognitive Load).
Um mit dieser Belastung fertig zu werden, bietet sich der Aufbau einer organisationsinternen Plattform an. Diese stellt Fähigkeiten, die von vielen Teams benötigt werden, zentral als Services bereit (z.B. Betrieb des Kubernetes-Clusters).
Das Platform Engineering hat in den 2020er Jahre die nötige Reife erreicht und ist im Mainstream angekommen.
Insbesondere aus Marketinggründen wird es teilweise als „das neue DevOps“ angepriesen. In Wirklichkeit ist Platform Engineering einfach ein Baustein von vielen, DevOps organisationsweit umzusetzen.
Organizational Design
Ganz im Sinne der Theory of Constraints und Demings System-Denken, setzt sich immer mehr die Erkenntnis durch, dass die Grenze zwischen Dev und Ops nur eine von vielen Grenzen ist, die den Wertstrom behindern.
Die meisten dieser Grenzen liegen nicht innerhalb eines Teams sondern zwischen den verschiedenen Teams und Abteilungen der Gesamtorganisation.
Modernes DevOps setzt deshalb auch auf dieser Ebene an. Die Zuweisung von Menschen und Aufgaben an die Teams sowie deren Interaktion untereinander.
Besonders erwähnenswert ist in diesem Zusammenhang die Herangehensweise von Team Topologies, die eine Strukturierung der Organisation in vier Team-Typen mit 3 Interaktionsarten vorschlagen. Dazu geben sie auch die nötigen praktischen Werkzeuge.
Aktuell gibt es auch verschiedene Ansätze, DevOps-ähnliche Ideen außerhalb der Software-Industrie einzusetzen. In diese Richtung gehen vor allem das Value Stream Management oder auch Gene Kim und Stephen Spear mit ihrem Buch „Wiring the winning Organization“.
DevOps als Gerüst für KI-Organisationen
Generative KI ist auf absehbare Zeit das bestimmende Thema in der Software-Szene. DevOps wird dadurch an Bedeutung gewinnen.
Einzelne Arbeitsschritte werden sich erheblich beschleunigen, wodurch die Produktivität einzelner Entwicklerinnen und Entwickler gewaltig steigt. Henrik Kniberg schreibt in seinem erkenntnisreichen Blog-Artikel “Are Developers Needed in the Age of AI?” (https://hups.com/blog/are-developers-needed-in-the-age-of-ai), dass die Arbeit einer Woche schon bald an einem einzigen Tag erledigt werden könnte.
Die Produktivität einzelner Teammitglieder ist aber nur in den seltensten Fällen der Engpass im Entwicklungsprozess. Meist wird sie durch ständige Unterbrechungen, plötzliche Änderung der Prioritäten und fehlerbehafteter Kommunikation völlig ausgebremst.
Um von den Effekten der generativen KI zu profitieren, benötigt eine Organisation also zu allererst einmal einen gesunden und reifen Software-Entwicklungsprozess – wie er mit der Einführung von DevOps erreicht wird.
Mik Kersten, der Autor von “Project to Product”, formuliert das in seinem Vortrag “Generative Value Streams: When Code is not a Constraint” (Zitat ist bei Minute 4:30 des Videos) folgendermaßen:
“If you have not put in place those DevOps practices, you are not structured properly for leveraging the change that is coming with generative AI.”
Fazit
Bei DevOps handelt es sich um eine Sammlung technischer, prozessualer und kultureller Praktiken. Gemeinsam stellen sie die modernste Art und Weise dar, Software zu entwickeln und zu betreiben.
DevOps ist aus der Praxis heraus entstanden, steht zusätzlich aber auch auf einem soliden wissenschaftlichen Fundament. Die Wirkung von DevOps ist also nachgewiesen – eine Seltenheit in der IT und darüber hinaus.