DevOps-Konzept

Automatisierte IT-Entwicklungszyklen

Setzt man im Rahmen der Software-Entwicklung auf das DevOps-Konzept, dann sind die Zeiten vorbei, in denen Entwicklungs- und Betriebsorganisation jeweils ihr eigenes Ding durchzogen. Im Schulterschluss arbeitet man nun mit immer kürzeren und vor allem automatisierten Entwicklungszyklen.

Schulterschluss, Bildquelle: Thinkstock/Fuse

Dank DevOps arbeitet man nun im Schulterschluss vor allem mit automatisierten Entwicklungszyklen.

Der Begriff DevOps setzt sich aus den Worten „Development“ und „Operations“ zusammen und soll den Schulterschluss zwischen Entwicklern und dem IT-Betrieb symbolisieren, wobei beide Seiten in sogenannten DevOps-Teams eng zusammenarbeiten. „Dabei steht hinter DevOps eigentlich eine Kultur, die Informationssilos sowie eine zu starke Abgrenzung von Entwicklung und Betrieb vermeidet“, berichtet Georg von Sperling, Manager Sales bei Automic Software, einem Anbieter von Lösungen für die IT-Prozessautomation. Mit dieser Vorgehensweise könne man dann einerseits die Anwendungsentwicklung beschleunigen sowie andererseits die Integrität von Produktionsumgebungen schützen. „Zudem steckt die Idee dahinter, dass für bestimmte Anwendungen gemischte Teams aus Development und Operations verantwortlich sind. Von daher gibt es in DevOps-Organisationen keine „andere Abteilung“ mehr, der im Zweifel der Schwarze Peter zugeschoben werden kann“, erläutert Prof. Dr. Volker Gruhn, Vorsitzender des Aufsichtsrats der Adesso AG und Inhaber des Lehrstuhls für Software Engineering an der Universität Duisburg-Essen.

Andreas Grabner, Technology Strategist Application Performance Management bei Compuware, betont ebenfalls, dass es sich bei DevOps nicht um eine Technologie, sondern vielmehr um eine kulturelle, organisatorische Veränderung innerhalb der Unternehmen handelt. Das damit verbundene Entwicklungsmodell beschreibt im nächsten Schritt der konkrete Ansatz des „Continuous Delivery“.

Die mit diesem Konzept verbundenen Vorteile liegen auf der Hand. So ermöglicht der enge Schulterschluss zwischen Entwicklung und Betrieb ein kontinuierliches Experimentieren und Optimieren. In diesem Zusammenhang erlaubt „ein zügiges Prototyping die schnellere Umsetzung erfolgreicher Applikationen, was wiederum für eine rasche Umsetzung der Unternehmensziele sorgt“, betont Dan Juengst, Director of Product Marketing and Strategy bei Red Hat. Von daher liegt die Hauptmotivation der meisten Kunden darin, mittels DevOps Geschäftsideen schneller ausrollen zu können sowie die Entwicklungs- und Betriebsmannschaft von lästigen Routinetätigkeiten zu entlasten. Dies wird laut Dan Juengst nicht nur durch die Automatisierung in der Entwicklung selbst, sondern vor allem durch die gesteigerte Prozess- und Produktqualität der laufenden Software erreicht.

Kleinwagen statt Luxuslimousine

Die Unterschiede zur herkömmlichen Software-Entwicklung treten dabei an verschiedenen Stellen zutage. So verfolgt DevOps keinen klassischen „Big Bang“ mit ein oder zwei großen Releases im Jahr. „Vielmehr werden häufigere und kleinere Releases priorisiert, die das Anwendererlebnis direkt und sofort verbessern können. Dies bezeichnet man als „Continuous Delivery“, erläutert Justin Vaughan-Brown, Senior Market Strategist bei CA Technologies. Er vergleicht diesen Vorgang damit, jede Woche viele massenproduzierte Kleinwagen herzustellen, anstatt ein oder zwei handgefertigte große Luxuslimousinen im Jahr.

Durch deutlich kürzere Releaszyklen gewinnt die IT-Organisation überdies ein höheres Maß an Flexibilität. „In der klassischen Entwicklung führen auftretende Probleme führen dazu, dass erst über mehrere Hierarchiestufen hinweg geklärt werden muss, ob die Software oder deren Betrieb fehlerhaft ist. Bei solchen Prüfprozessen geht Wissen über technische und inhaltliche Details verloren. Dieser Know-how-Verlust wiederum erschwert die Fehleranalyse“, betont Volker Gruhn. Die Folge seien Systeme, die bei Problemen unnötig lange nicht richtig funktionieren. Demgegenüber könne eine DevOps-Organisationsform die Software schneller und fehlerfreier erstellen und verfügbar machen.

In diesem Zusammenhang verweist Aaron Nichols, Software Engineer bei Rally Software, auf die enge Verbundenheit des DevOps-Ansatzes mit der agilen Projektmethode, denn auch hier werden bereichsübergreifende Teams gebildet, die sich häufig zusammensetzen und sich täglich über Fortschritte und Herausforderungen austauschen. „Auf diese Weise lassen sich die Zeitspannen minimieren, in denen die Teams blockiert sind, weil sie auf den Input anderer Teams warten oder unerwartete Änderungen vornehmen müssen. Dies führt im Laufe der Zeit dazu, dass Software sich schneller bereitstellen lässt“, betont Nichols. Darüber hinaus spielt das Konzept an weiteren Stellen seine Stärken aus: „So geht DevOps neben Agile auch Hand in Hand mit allen Entwicklungsmodellen wie Scrum, RAD, Extreme, Lean oder dem traditionellen Wasserfallmodell“, ergänzt Georg von Sperling.

Vor diesem Hintergrund basiert das deutliche Einsparpotential von DevOps gegenüber herkömmlicher Methoden u.a. auf den kürzeren Feedbackschleifen zwischen Entwicklung und Betrieb. „Dabei geht ein Hauptteil der Zeit- und Kostenreduktion auf den hohen Grad der Automatisierung zurück. So werden bei DevOps manuelle Schritte so weit wie möglich durch automatische Prozesse ersetzt. Zudem wird schon frühzeitig die Qualität und Performance einer Software konkret gemessen, sodass Fehler oder Probleme frühzeitig erkannt und behoben werden", erläutert Andreas Grabner. Denn nichts sei aufwendiger als die mühsame Suche nach Fehlern, die viele Schritte vorher entstanden sind. In diesem Zusammenhang verweist er auf folgendes Beispiel: So verzeichnet Amazon dank eines auf DevOps basierendes Continuous-Delivery-Modells inzwischen 75 Prozent weniger Ausfälle und 90 Prozent weniger Ausfallminuten als zuvor. Laut Grabner führt der Onlinehändler dabei durchschnittlich alle 11,6 Sekunden ein neues Deployment durch, wovon nur jedes Tausendste ein Problem hat, das mit einem schnellen Rollback sofort wieder behoben werden kann.

Wie gelingt der Umstieg auf DevOps?

In der Theorie hört sich die Vielzahl der Argumente gut an. Doch wie gelingt den Verantwortlichen im Arbeitsalltag der Umstieg von der klassischen Software-Entwicklung auf die DevOps-Methode? „Die größte Herausforderung der Umstellung liegt in den kulturellen und organisatorischen Veränderungen im Unternehmen", glaubt Andreas Grabner. Denn in der Regel müssen die betroffenen Mitarbeiter von den konkreten Vorteilen der DevOps-Vorgehensweise überzeugt werden. Dies ist nach Ansicht von Grabner meist ein langwieriger Prozess, der durch externe Berater, kleine erfolgreiche Pilotprojekte oder Mitarbeiter, die bei anderen Arbeitgebern bereits Erfahrungen damit gemacht haben, beschleunigt werden kann.

Desweiteren kristallisiert sich für Aaron Nichols vor allem die interne Kommunikation als wichtiger Erfolgsfaktor heraus: „Durch tägliche Kommunikation und gemeinsame Zielsetzungen lernen die Teams, sich gegenseitig für ihre individuellen Fähigkeiten wertzuschätzen und entwickeln Empathie für die Herausforderungen, denen sich jedes Team stellen muss", so Nichols. Mit Blick auf das gemeinsame Ziel, Software in höherer Qualität schneller zu liefern, müssen die Teams anschließend nur noch diejenigen Tools finden, die für sie am besten geeignet sind.

Doch nicht nur Teamarbeit ist gefordert: „Darüber hinaus geht es bei DevOps um Offenheit, Automatisierung, Entscheidungsklarheit sowie Funktionsfähigkeit. Wenn man vorhat, so zu arbeiten, sollte man darauf achten, dass Stabilität und Kontrolle, das Credo der Mitarbeiter im Betrieb, mit dem Credo der Entwickler – Agilität und Geschwindigkeit – in Einklang gebracht wird und keine Wissensinseln entstehen“, fügt Georg von Sperling hinzu.

Ein Großunternehmen, welches bereits erste Erfahrungen mit DevOps gesammelt hat, ist der Versicherer HUK-Coburg. Dieser setzt für die Analyse der Lasttests während der Entwicklungsphasen das Tool „Compuware Dynatrace“ ein. Damit sollen sich laut Andreas Grabner weitgehend automatisch problematische Codezeilen exakt lokalisieren und Fehler entsprechend schneller beheben lassen. Auch die Anzahl der Testzyklen wurde deutlich reduziert. „Angesichts der Zeitspanne von bis zu sieben Werktagen zwischen zwei Durchläufen bedeutet das eine wesentliche Zeitersparnis im Entwicklungsprozess. Die getesteten Anwendungen werden für zwölf IBM-Websphere-Server als Anwendungsserver entwickelt. Auf diese greifen in Spitzenzeiten 5.000 Java Thin Clients zu“, berichtet Grabner aus der Praxis.

Webanwendungen bevorzugt

Nicht nur das HUK-Coburg-Beispiel macht deutlich, dass sich der DevOps-Ansatz generell für die meisten Applikation sowie sämtliche Programmiersprachen eignet. „Häufig kommt das DevOps-Prinzip jedoch zunächst bei der Entwicklung neuer Anwendungen zum Einsatz, etwa wenn es um Lösungen für Einsatzgebiete wie Web, Mobile oder service-orientierter Applikationen geht“, berichtet Dan Juengst von Red Hat. Hier sollen sich aufgrund ihrer Funktionen für Rapid Development vor allem moderne Scriptsprachen wie Node.js oder Ruby ideal für DevOps eignen.

Nach passenden Programmiersprachen befragt, betont Andreas Grabner ebenfalls, dass sich prinzipiell alle Programmiersprachen für DevOps nutzen lassen. Wichtig sei jedoch, dass Werkzeuge verwendet werden, die ein hohes Maß an Automatisierung erlauben. Den Anwendungen entsprechend werden vorwiegend Websprachen wie Java, .Net, PHP, CSS oder HTML eingesetzt.

Doch diese Einschätzungen teilen nicht alle Experten. So sind laut Volker Gruhn doch nicht alle Arten von Projekten und Software gleichermaßen für DevOps geeignet. „In Anwendungslandschaften mit tiefen Aufrufhierarchien bedeutet DevOps oft einen massiven Eingriff“, so Gruhn. Demgemäß würden hauptsächlich einzelne, nur lose gekoppelte Projekte eher eine Umstellung auf DevOps vertragen. Zudem gilt: Auch in Organisationen, die weitestgehend auf DevOps setzen, gibt es noch immer zentrale Dienste – demzufolge agieren DevOps-Teams meist nicht vollständig autonom.

Obwohl es sich bei DevOps wie eingangs erwähnt um ein Konzept und nicht um eine Technologie handelt, gibt es Tools, die diese Vorgehensweise bestmöglich voranbringen können. Bei der Auswahl solcher Werkzeuge sollte man allerdings bestimmte Dinge beachten. So sollte man keine Tools nutzen, sagt Georg von Sperling, die zu Dev- oder zu Ops-lastig sind. Denn sie würden die Zusammenarbeit nicht optimal unterstützen. „Darüber hinaus müssen die Tools skalierbar und hochverfügbar sein, aktuelle Sicherheitsmodelle berücksichtigen, Transparenz bieten sowie den internen und gesetzlichen Vorgaben entsprechen, ansonsten sind sie für das Betriebsteam nur wenig geeignet. Außerdem sollte man darauf achten, dass die Software weder wartungsintensiv noch technologiegebunden ist, damit sie Entwickler und das Qualitätssicherungsteam nicht von ihren Kernaufgaben ablenken“, berichtet von Sperling.

Nicht zuletzt liegt ein weiterer Unterschied zu traditionellen Methoden laut Justin Vaughan-Brown von CA darin, dass Testprozesse bei DevOps bereits während des Software-Entwicklungs-Lebenszyklus durchgeführt werden und nicht erst zu festdefinierten Zeitpunkten. Eine wichtige Komponente des Ansatzes ist dabei die „Continuous Integration“. In diesem Rahmen werden, so Vaughan-Brown, isolierte Änderungen sofort getestet und gemeldet, sobald sie zu einer größeren Codebasis hinzugefügt werden. Ein Vorteil: Defekte würden früher identifiziert – d.h. zu einem Zeitpunkt, zu dem sie günstiger und einfacher zu korrigieren sind.

Von einer Verdichtung der Tests bei gleichzeitigem Verschwimmen einzelner Teststufen, berichtet auch Volker Gruhn. Demnach bestünde in einer DevOps-Organisation kein Grund mehr, strikt zwischen Integrations-, Smoke- und Abnahmetests zu unterscheiden. Allerdings bedeute dies nicht, dass einzelne Tests komplett entfallen, sondern nur, dass sie in einem ganzheitlichen Testprozess weniger trennscharf unterschieden werden können.


Was steckt hinter DevOps?

DevOps ist ein IT-Ansatz, der eine intensive Zusammenarbeit zwischen dem IT-Betrieb und der Applikationsentwicklung fördert. Das Ziel ist es, die Bereitstellung von IT-Services zu beschleunigen und die Robustheit sowie die Stabilität der Applikationen und der IT-Infrastruktur zu steigern. DevOps kann eine Kombination neuer Technologien und Änderungen der Kultur von IT-Organisationen umfassen, um die Zusammenarbeit, das Experimentieren sowie eine schnellere Markteinführung von Applikationsservices zu ermöglichen.

Quelle: Dan Juengst, Director of Product Marketing and Strategy bei Red Hat

 

Bildquelle: Thinkstock/Fuse

©2019Alle Rechte bei MEDIENHAUS Verlag GmbH

Unsere Website verwendet Cookies, um Ihnen den bestmöglichen Service zu bieten. Durch die weitere Nutzung der Seite stimmen Sie der Verwendung zu. Weitere Infos finden Sie in unserer Datenschutzerklärung.

ok