Von Wasserfall zu DevOps

Immer schneller, immer besser, immer neu: Diese Maxime lässt Produktentwicklungszyklen immer kürzer werden. Durch den Prozessverbesserungsansatz „DevOps“ verspricht man sich in der Softwareentwicklung Agilität durch kürzere Entwicklungszyklen, häufigere Releases und geringere Fehlerraten.

Wissen Sie, wie viele Zeilen Softwarecode ein modernes Premium-Fahrzeug beherbergt?

Rund 100 Millionen. Diese Zahl lässt erahnen, in welchem Umfang digitale Applikationen die Anforderungen an die Softwareentwicklung in Fahrzeug und Backend steigen lassen.

Die Vernetzung von Fahrzeugen revolutioniert die Automobilindustrie und lenkt den Fokus von der Herstellung reiner Hardware – das Fahrzeug – hin zur Softwareentwicklung, den Connected-Car-Diensten. Sie bietet in diesem Zusammenhang nicht nur großes Potenzial, neue Geschäftsfelder zu erschließen, sondern auch die Chance, die Kundenbindung auf eine neue, digitale und datenbasierte Ebene zu bringen.

Digitale Fahrzeugapplikationen in modernen Entwicklungsframeworks effizienter umsetzen

Kein Wunder, dass die klassische Entwicklung überwiegend monolithischer Softwarepakete nach träger Wasserfall-Methodik und deren Erprobung mit aufwändigen Testfahrten an Grenzen stieß.

Heute halten moderne Entwicklungsframeworks in den Entwicklungsabteilungen der OEMs Einzug. Neben agilen Methoden wie Scrum, Kanban oder Lean steht insbesondere DevOps ganz oben auf der Agenda.

Der Ansatz verspricht Verbesserung auf verschiedensten Ebenen von der Toolchain bis hin zur Unternehmenskultur. Basis hierfür bildet die im Team geteilte Verantwortung für Softwareentwicklung und -betrieb. Durch das „Einreißen der Mauern“ zwischen Entwicklung (Dev) und operativem Betrieb (Ops) der Software werden Kräfte gebündelt und Abstimmungswege verkürzt.

Diese Entwicklung der Automobilindustrie gestaltet T-Systems als Partner maßgeblich mit: Der IT-Dienstleister hat im Jahr 2013 die Entwicklung und den Betrieb des Fahrzeug-Backends bei einem deutschen Premium-Automobilhersteller übernommen.

Detecon begleitet den IT-Dienstleister seit 2017 methodisch und operativ dabei, die Transition von Wasserfall zu DevOps voranzutreiben. T-Systems und Detecon haben in zwei Wellen die technologischen und prozessualen Grundlagen für die erfolgreiche Umsetzung agiler Arbeitsmethoden geschaffen:

In einem ersten Schritt haben die Entwicklungsteams den ursprünglichen Softwaremonolith im Rahmen eines aufwendigen Refactorings in einzelne Microservices zerschlagen. Um eine schnellere und qualitätsgesicherte Auslieferung der Software sicherzustellen, wurden Tester direkt in die einzelnen Entwicklungsteams integriert und das bisher manuelle Testing zunehmend automatisiert. Um die Agilisierung der Entwicklungsteams prozessual zu unterstützen, wurde die Entwicklung nach Scaled SCRUM ausgerichtet.

In einem zweiten Schritt sollten die Teams möglichst autonom agieren und die Ende-zu-Ende-Verantwortung vom Design über die Implementierung bis hin zum Betrieb ihrer Microservices und Produkte übernehmen. Dieser DevOps-Ansatz setzt organisatorisch die Integration von Operations in die Entwicklungsteams sowie technologisch die Migration der Microservices in die Cloud voraus.

Was genau verbirgt sich hinter DevOps?

Eine einheitliche Definition von DevOps findet sich in der Literatur nicht. Fakt ist, dass DevOps weit mehr als eine engere Zusammenarbeit zwischen Softwareentwicklung (Dev) und IT-Operations Betrieb (Ops) in einem crossfunktionalen Team ist. Es geht vielmehr um eine Philosophie, nach der sich Entwickler und IT-Operationsmanager kontinuierlich zu Kultur, Tools und Best-Practices austauschen und so immer effizienter gemeinsam digitale Produkte entwickeln.

Es geht darum, dem schnelllebigen, komplexen und produktzentrierten Markt mit optimierter Kommunikation und maßgeschneiderter Toolunterstützung zu begegnen. Was wie ein allgemeingültiger Ansatz zur Optimierung der unternehmenseigenen Wertschöpfung klingt, bedarf in der Realität großer Vorbereitung, denn klar ist: Auch eine Transition zu DevOps passiert nicht mal eben über Nacht.

Ein einfaches Rezept für DevOps gibt es deshalb nicht. Der Weg startet mit dem Abbau traditioneller Silos, der Verbesserung der Kommunikation zwischen Entwicklungs- und Betriebsteam sowie der Implementierung neuer Strukturen und Prozesse. Eine verbesserte Kommunikation ermöglicht es, die Anforderungen des jeweils anderen besser zu verstehen und enger zusammenzuarbeiten.

Hierbei ist es ratsam, klein zu starten und Schritt für Schritt in Richtung DevOps zu gehen. Somit wird das Team langsam mit agilen Methoden vertraut gemacht, anstatt zu versuchen, das gesamte Projekt mit einem großen Knall auf DevOps umzustellen.

Einerseits braucht es Zeit, die technologischen Grundlagen zu schaffen, denn der Übergang vom Monolithen hin zu cloud-nativen Microservices erfordert ein zeitintensives Refactoring. Anderseits brauchen auch Menschen Zeit, sich in ihrer neuen Rolle zu entwickeln, um sich den damit verbundenen Anforderungen und der Verantwortung zu stellen.

Dazu haben wir zu Beginn der DevOps-Reise in den einzelnen Entwicklungsteams gezielt erfahrene Berater als Botschafter und Vorreiter agiler Arbeitsmethoden platziert. Sie sind als Product Owner, Scrum Master und Agile Coaches vorangegangen und haben die Vorteile agiler Methoden erlebbar gemacht, um auf diese Weise die nötigen agilen Strukturen nach SCRUM zu implementieren und ein agiles Mindset über die eigenen Entwicklungsteams hinaus zu verankern.

Abbildung: Vom Wasserfall zu DevOps in zwei Wellen

Knapp drei Jahre hat der Weg von Wasserfall zu DevOps gedauert. Die letzten Schritte liegen in den kommenden Monaten noch vor uns.

Stolpersteine auf dem Weg von Wasserfall zu DevOps – Kultur und Mindset

Kulturelle Veränderungen sind mitunter die größten Herausforderungen in Unternehmen oder auch Projekten. Auch der Erfolg einer DevOps-Transition ist maßgeblich davon abhängig, ob die tiefgreifende Veränderung der Kultur und des Mindsets gelingt.

Die DevOps-Kultur bringt insbesondere mehr Verantwortung für die Mitglieder des Entwicklerteams mit sich. Agile Methoden setzen zudem Offenheit für Veränderungen während des Projekts voraus. Dieses Mindset passt nicht zu einem risikoaversen Mindset, welches traditionellen Wasserfallprojekten zugrunde liegt.

Denn: Weder das Ergebnis eines Projektes noch der Weg können vorab exakt definiert werden. Auch Unsicherheiten lassen sich nicht schon zu Beginn beschreiben. Statt das Ergebnis einmalig am Projektende abzunehmen, müssen in regelmäßigem Abstand Fortschritte beurteilt und das weitere Vorgehen besprochen werden.

Um diese Stolpersteine weitgehend aus dem Weg zu räumen, ist es wichtig, alle Beteiligten rechtzeitig mitzunehmen – in unserem Fall hat sich diese Vorgehensweise bewährt:

In eintägigen DevOps Workshops haben wir zu Beginn der zweiten Transitionswelle zu DevOps ein gemeinsames Verständnis für die DevOps-Werte geschaffen und in direktem Bezug zum Projekt analysiert, inwieweit die Vorrausetzungen für DevOps bereits in den einzelnen Entwicklungsteams erfüllt sind.

Anschließend hat die Programmleitung in regelmäßigen Abständen All-Hands-Calls durchgeführt, in denen alle Beteiligten über die aktuellen Entwicklungen informiert und um Feedback gebeten wurden. Zusätzlich dazu wurde eine DevOps Taskforce gegründet, die interessierten und engagierten Projektmitgliedern die Mitgestaltung bestimmter DevOps-Themen ermöglicht hat.

Hier wurden eine gemeinsame Zielvision definiert, abgestimmt und regelmäßig überarbeitet, Prozess-Workflows geschärft, die Automatisierung von Tests und Deployments weiter vorangetrieben sowie KPI-Dashboards designt und in mehreren Feedbackschleifen mit den Nutzern des Dashboards optimiert.

Um ein agiles Mindset nachhaltig im Projekt zu verankern, ist es wichtig, dass Tools die agilen Prozesse unterstützen und sicherstellen, dass die Prozesse auch gelebt werden. Tools müssen die Zusammenarbeit und den Austausch zwischen den Teams fördern und alle auf einen gemeinsamen Stand bringen.

SCRUM Events wie das Team-übergreifende SCRUM-of-SCRUM zeigen mögliche Hindernisse und Abhängigkeiten zwischen den Teams auf und versuchen, diese aufzulösen. In Retrospektiven nach SCRUM werden die Teams angehalten, regelmäßig zurückzublicken, um aus Fehlern zu lernen. Diese Routine prägt eine Kultur, die Fehler verzeiht, sofern man aus ihnen lernt.

Tools können helfen, ein agiles Mindset zu verankern und agile Prozesse zu unterstützen, indem sie das Systemdenken in den Entwicklungsteams fördern. Wer in Systemen denkt, weiß, dass seine Handlungen nicht nur das eigene Team beeinflussen, sondern auch alle anderen am Release-Prozess beteiligten Teams – ganz dem DevOps-Gedanken entsprechend.

Gemeinsame KPI Dashboards schaffen Transparenz und ein gemeinsames Verantwortungsgefühl für Fortschrittserfolge und Qualität. Durchdachte und einfache JIRA Workflows stellen klare Verantwortlichkeiten zwischen den Teams her und stellen den Arbeitsfortschritt transparent dar.

 

Von Philipp Niedermeier und Andreas Eisenbach