DevOps

digitalisierung-top DevOps

Wie lassen sich komplexe IT-Projekte erfolgreicher umsetzen?

Durch gemeinsame Anreize, Prozesse und Software-Werkzeuge wird eine effektivere und effizientere Zusammenarbeit der Bereiche Dev, Ops und Qualitätssicherung ermöglicht

 

Die Entwicklung neuer Software in den IT-Unternehmen bringt heute zahlreiche Herausforderungen mit sich. Eine immer größere Komplexität der Projekte führt zu Verzögerungen im Entwicklungsprozess: Verpasste Termine sind häufig keine Ausnahme, sondern die Regel. Für die Unternehmen stellt sich daher die Frage, wie sie mit dieser Komplexität umgehen können und wie sich Verzögerungen und Qualitätsmängel bei neuen Produkten vermeiden lassen. DevOps ist eine Antwort hierauf. Es geht dabei um Prinzipien, wie eine moderne und funktionsfähige Unternehmenskultur im Bereich der Softwareentwicklung aussehen kann.

vertical_devops-400x316 DevOps

Was ist unter dem Begriff zu verstehen?

 

Der Begriff DevOps setzt sich aus den beiden Wörtern Development (Entwicklung) und Operations (Prozesse) zusammen. Es handelt sich hierbei nicht um eine Software oder ein Tool. Vielmehr bezeichnet der Begriff eine Sammlung von Prinzipien, die die Unternehmenskultur prägen sollen hin zu einem besseren Umgang mit komplexen Entwicklungsprozessen. Insbesondere konzentriert sich der Ansatz auf die Automatisierung von Prozessen, die zwischen den verschiedenen IT-Teams ablaufen, die an der Entwicklung eines neuen Softwareprodukts beteiligt sind.

 

Die geschichtliche Entwicklung des Ansatzes

 

Die Entstehungsgeschichte lässt sich bis in das Jahr 2007 zurückverfolgen. Damals setzte sich in der IT-Branche die Erkenntnis durch, dass die bisherige Organisation der Arbeit nicht mehr tragfähig war und Antworten gefunden werden mussten auf die Herausforderungen, die immer komplexer werdende IT-Projekt mit sich brachten. Insbesondere wurde kritisiert, dass die Teams für die Entwicklung neuen Programmcodes und die Teams für das Testen und den Support voneinander getrennt waren.

 

Der herkömmliche Entwicklungsansatz sah vor, dass eine Software erst fertigentwickelt und dann in einem zweiten Schritt an die Testing-Abteilung weitergereicht wurde. Wurden Programmfehler entdeckt, die eine Veröffentlichung unmöglich machten, wurde die Software wieder an die Entwicklungsabteilung zurückgegeben und der Prozess begann von vorne. So erhielten die Entwickler Feedback häufig erst dann, wenn es bereits zu spät war. Development- und IT/Ops-Experten arbeiteten also voneinander getrennt. Was lag hier näher, als Development und IT/Ops zusammenzuführen?

 

Die Bewegung nahm zuerst in Internetforen Gestalt an und entwickelte sich allmählich zu einem der bestimmenden Diskussionsthemen in der IT-Branche. Von Anfang an wurde der neue Entwicklungsansatz nicht als magischer Problemlöser betrachtet, sondern als eine Möglichkeit, die Kultur in den IT-Unternehmen positiv beeinflussen zu können. Heute ist DevOps so vielfältig wie die Unternehmen selbst.

Wie sehen die konkreten Umsetzungsmaßnahmen in der Praxis aus?

 

Die konkreten Maßnahmen, mit denen sich die Entwicklungsprozesse in der Praxis optimieren lassen, können vielfältige Gestalt annehmen. Arbeiten die Experten für die Entwicklung und die IT/Ops-Experten zum Beispiel auf unterschiedlichen Stockwerken oder in verschiedenen Gebäuden? Hier kann es Sinn machen, die Teams lokal zusammenzuführen und so die Kommunikation zu befördern.

 

Grundsätzlich vertragen sich alle Maßnahmen mit dem Ansatz, die auf eine Automatisierung von Prozessen abzielen. Muss der Test bestimmter Programmabschnitte zum Beispiel unbedingt manuell vorgenommen werden oder lässt sich dieser Vorgang auch automatisieren? Die Teams sollten dazu angehalten werden, nach solchen Automatisierungspotentialen Ausschau zu halten. Der Einsatz von Computern für das Testing hat auch den Vorteil, dass Computer keine Hemmungen haben, Fehler schonungslos offenzulegen.

 

Um die Feedbacks zwischen den Teams besser gestalten zu können, sind kontinuierliche Messungen unerlässlich. Ohne die erforderlichen Daten wird sich eine deutliche Prozessoptimierung kaum erzielen lassen. Hier gilt es zu erfassen, wie viel Zeit zwischen der Entwicklung und dem Deployment vergangen ist, wie oft Fehler im Programmcode auftreten und wie lange die Behebung von Systemausfällen dauert. Dem Team sollten so viele Informationen wie möglich zur Verfügung gestellt werden, um die Entscheidungsfindung zu erleichtern und zu unterstützen.

application-operation DevOps
devops-wide DevOps

Infastructure as Code: Was ist darunter zu verstehen?

 

Infrastruktur as Code kann als eine Voraussetzung für die erfolgreiche Umsetzung des bisher beschriebenen Ansatzes verstanden werden. Ohne Infastructure als Code macht auch die Continuous delivery keinen Sinn. Hier geht es darum, dass die Umgebung, in der ein Code ausgeführt werden soll, möglichst konstant gehalten wird.

 

Ein Problem in der Softwareentwicklung bestand in der Vergangenheit darin, dass sich die Umgebung im Zeitablauf der Entwicklung veränderte und damit das Deployment erschwerte. Statt die IT-Infrastruktur manuell zu verwalten, soll die Verwaltung nun automatisch per Code erfolgen. Dadurch können langwierige Anpassungsprozesse vermieden werden und der Code bleibt immer ausführbar. Aus diesem Grund wird auch von einer programmierbaren Infrastruktur gesprochen. Bei dieser Infrastruktur kann es sich zum Beispiel um das Netzwerk oder virtuelle Maschinen handeln.

 

Welche Prinzipien stehen im Vordergrund?

 

Da die Devops Kultur in der Literatur unterschiedlich dargestellt und in der Praxis vielfältig interpretiert wird, lässt sich keine allgemeingültige Definition des Begriffs vornehmen. Einige Prinzipien sind jedoch in allen Definitionen vorhanden und können daher als Grundprinzipien angesehen werden.

 

Zu diesen entscheidenden Prinzipien gehören die Automatisierung wie etwa Automated Tests, ein stetiger Informationsfluss zwischen den verschiedenen Teams und eine Prozessoptimierung durch fortlaufendes Lernen und Teilen von Wissen. Zudem soll die Zusammenarbeit der Teams in hohem Maße durch Vertrauen geprägt sein. Werden diese Prinzipien berücksichtigt, sollen Fehler und Verzögerungen vermieden werden und sich die Qualität des Endprodukts erheblich steigern lassen.

 

Die Continuous integration, das Continuous deployment und die Continuous delivery sind ebenfalls wesentliche Bestandteile des Ansatzes. Bei der Continuous integration werden die einzelnen Komponenten einer Anwendung fortlaufend zusammengesetzt, statt sie erst am Ende des Entwicklungsprozesses zusammenzuführen. So können Abhängigkeiten besser erkannt werden und auftretende Probleme bei der Zusammenführung lassen sich früher angehen.

 

Continuous deployment wiederum bezieht sich auf die kontinuierliche Veröffentlichung von neuen Softwareversionen. Da der Markt eine schnelle Anpassung von Software an veränderte Kundenwünsche fordert, ist dieser Ansatz heute unverzichtbar. Der Kunde soll so schnell wie möglich Zugriff auf neue Funktionen und Verbesserungen einer Software haben, die er in seinem Unternehmen einsetzt. Die kontinuierliche Delivery ist dann der letzte logische Schritt, bei dem die Produktivsetzung der Anwendung umgehend geschehen kann. Das ist möglich, da Anwendungstests den Entwicklungsprozess ständig begleiten.

 

Welche Vorteile bietet der Ansatz für IT-Unternehmen?

 

Grundsätzlich soll DevOps dabei helfen, Komplexität zu reduzieren und die Qualität des Produkts zu verbessern. Im Idealfall können die Softwareprodukte schneller von der ersten Idee zu einem marktreifen Produkt gebracht werden. Eine der größten Herausforderungen in der Entwicklung neuer Software besteht heute darin, dass sich die Geschäftsanforderungen ständig ändern. Interdisziplinäre Teams sollen hierauf möglichst schnell reagieren können.

 

Kann der Arbeitsablauf zwischen den Teams reibungsloser gestaltet werden, ergibt sich eine höhere Arbeitsgeschwindigkeit. In der Praxis lassen sich damit Releases erzielen, die stabiler laufen und dem Kunden einen größeren Nutzen bringen. Weiterhin bietet der Ansatz kürzere Feedbackkreisläufe. Die Mitarbeiter erhalten von den anderen Abteilungen sofort Ergebnisse und können den Programmcode daher schneller anpassen. Das ist nur im Rahmen einer offenen Kommunikation möglich und dann, wenn zwischen den Mitarbeitern ein hohes Vertrauen herrscht. Wichtig ist ein schnelles Feedback vor allem auch dann, wenn aufgetauchte Fehler umgehend ausgemerzt werden sollen. So lassen sich Hindernisse in der Release-Pipeline zügig beseitigen.

X