Tech Insights

DevOps: Eine Kooperationskultur für die schnelle und zuverlässige Bereitstellung von Software


Was ist DevOps?

Der Ausdruck DevOps setzt sich zusammen aus „Development“ (Entwicklung) und „Operations“ (IT-Betrieb, Administration). DevOps ist gleichermaßen Philosophie wie Herangehensweise an die Softwareentwicklung und stellt die Zusammenarbeit in den Mittelpunkt: Zusammenarbeit beim Testen, Paketieren und Installieren von Software mit dem Ziel, die Häufigkeit und die Stabilität von Software-Releases zu verbessern.

Im Cloud-Zeitalter ist DevOps unabdingbar für den Erfolg von Unternehmen, die intensiv mit Software arbeiten, denn DevOps verbessert die Reaktionsschnelligkeit der IT und die Kundenzufriedenheit. Genau aus diesem Grund schließen sich immer mehr Unternehmen der DevOps-Idee an. Sie investieren in Tools und fördern eine Unternehmenskultur der kooperativen Team-Arbeit.

Am Anfang standen eine bessere Verzahnung der Abläufe und die agile Softwareentwicklung, Ziel war die schnelle Auslieferung hochwertiger Software. DevOps wendet diese Herangehensweise nun konsequent und viel weiter gefasst an. Bei der agilen Softwareentwicklung stehen die Softwareingenieure und ihre Rolle bei der schnellen, schrittweisen Entwicklung von Software im Mittelpunkt. Da Software inzwischen zunehmend als cloudbasierter Service bereitgestellt und nicht mehr lokal installiert wird, gilt eine Software erst als ausgeliefert, wenn sie produktiv im Einsatz ist. Denkt man das Konzept der Agilität weiter, kommt es immer mehr auf die fortlaufende, schrittweise und rasche Bereitstellung von Softwarefunktionen an. Daher umfasst das Konzept mittlerweile auch die Geschwindigkeit und die Qualität der Abläufe, also aller Aktivitäten, die zwischen dem fertigen Code und dem produktiven Einsatz der Software liegen (z. B. Kompilieren, Testen, Installieren, Konfigurieren, Verteilen sowie die kontinuierliche Administration). Um Software zügig auszuliefern, müssen Entwickler – „Dev“ – und IT-Betrieb – „Ops“ – eng zusammenarbeiten.




Historischer Kontext

DevOps ist der Gegenentwurf zur herkömmlichen Arbeitsweise bei der Auslieferung von Software. In den meisten Unternehmen arbeiten die Softwareentwicklung und die IT-Administration vollkommen unabhängig voneinander, und dieser Mangel an Koordination ist für die zügige Auslieferung eher hinderlich. So können beispielsweise die Entwickler in den meisten Unternehmen die benötigte Infrastruktur nicht einfach selbst installieren und konfigurieren, da hierfür die IT-Administratoren zuständig sind. Das nimmt ihnen die Möglichkeit, standardisierte Umgebungen einzurichten. Stattdessen erstellt jeder Entwickler seinen Teil des Codes in einer eigenen Umgebung, die für effizientes Entwickeln und Testen konfiguriert ist. Anschließend wird die Software an die Administration übergeben, die aus den einzelnen Softwaremodulen – die von verschiedenen Entwicklern in unterschiedlichen Umgebungen entwickelt und getestet wurden – eine lauffähige Anwendung mit der vom Unternehmen gewünschten Verfügbarkeit, Skalierbarkeit und Sicherheit herstellt.

Ohne Unterstützung durch das Entwicklungsteam ist dies in der Regel ein komplexer, manueller, langwieriger und fehlerträchtiger Prozess. Probleme bei der Installation der Software führen meistens zu Spannungen und Misstrauen zwischen den Teams. Das verschärft sich sogar noch in einer modernen Umgebung, in der fortlaufend neue Software bereitgestellt wird: Von den Entwicklungsteams werden in rascher Folge neue Softwarefunktionen erwartet, die IT-Administration dagegen soll Stabilität garantieren, was sich (ohne moderne Automatisierung) praktisch nur über eine Begrenzung der Änderungen realisieren lässt.


Wichtige Faktoren

Es gibt keine festen Vorschriften zur Umsetzung von DevOps. Dennoch lassen sich bei erfolgreichen und gut funktionierenden DevOps-Modellen Gemeinsamkeiten hinsichtlich der Kultur, der Abläufe und der Ausstattung im Unternehmen feststellen.

Kultur
Eine erfolgreiche DevOps-Umsetzung ist undenkbar ohne eine Kultur, die den gemeinschaftlichen Erfolg, Zusammenarbeit und gemeinsame Verantwortung wertschätzt. Entwicklungs- und IT-Abteilung tragen gemeinsam die Verantwortung für die erfolgreiche Bereitstellung von Anwendungen. Das lässt sich durch organisatorische Veränderungen unterstützen (in dem man z. B. Abteilungen mit klar abgegrenzter Funktion, deren Mitglieder bestimmten Projekten zugewiesen sind, durch gemeinsame Einheiten mit Entwicklungs- und Betriebspersonal ersetzt, deren Mitglieder ihre Aufgaben gemeinschaftlich erledigen).
Bei DevOps kommt es auch auf Empathie an: Wenn Entwickler und IT-Administratoren die Aufgaben der jeweils anderen Gruppe besser verstehen, können sie sich in ihrer eigenen Arbeit auf die Bedürfnisse der anderen Seite einstellen, was die Zusammenarbeit effektiver gestaltet. Zum Beispiel würde ein besseres Verständnis der Umgebung, in der die Anwendungen später laufen, Entwickler in die Lage versetzen, mögliche Stolpersteine im Betrieb zu erkennen und schon beim Programmieren zu umgehen. Umgekehrt können auch die Administratoren für eine optimale Produktivumgebung sorgen, wenn sie das Design und die Ziele der Anwendungen genau verstehen.
Ein erfolgreiches DevOps-Konzept entschärft bewusst potenzielle Reibungspunkte, die durch unterschiedliche Erwartungen und Ziele entstehen (z. B. die Forderung an Entwickler, schnell neue Funktionen auszuliefern, gegenüber der Forderung an die Administratoren, so wenig wie möglich an den Produktivumgebungen zu ändern).

Prozess
Um in der Praxis eine DevOps-Kultur einzuführen, müssen gemeinsame Prozesse so eingerichtet werden, dass sich Entwickler und Administratoren austauschen und beraten können. Ebenfalls erforderlich ist ein genau definierter Rahmen für die Zusammenarbeit, der eine schnelle und strukturierte Auslieferung von Software und die Wiederherstellung im Fehlerfall gewährleistet. In diesem Rahmen kann zum Beispiel festgelegt sein, dass Entwickler sich die benötigten Kapazitäten über APIs selbst besorgen, für die Implementierung und den Support aber die Administratoren zuständig sind. Oder es lässt sich festlegen, dass es keine unterschiedlichen APIs für Entwicklungs-, Test und Produktivumgebungen gibt. Damit lassen sich Unterschiede zwischen Umgebungen – eine der Hauptquellen für Verzögerungen und Probleme – vermeiden.
Als weiteres Beispiel für einen abgestimmten Prozess lässt sich ein zentrales Archiv der Softwareabhängigkeiten vorstellen, das durch gemeinsam entwickelte Skripte auf dem aktuellen Stand gehalten wird. Mit der Zeit zahlt sich diese Zusammenarbeit durch Lernprozesse aus, durch schrittweise Verbesserungen und die Fähigkeit, häufige, auch kleine Softwareänderungen wiederholbar und mit geringem Risiko in den Produktivbetrieb zu geben.

Automatisierung und gemeinsame Tools
Eine schnelle und zuverlässige Auslieferung von Software erfordert gleichbleibende und wiederholbare Prozesse, die so optimiert sind, dass sie ohne unnötige manuelle Eingriffe auskommen. In Unternehmen verursachen beispielsweise nicht bereitstehende Kapazitäten, Diskrepanzen zwischen den Entwicklungs- und Produktionsumgebungen sowie komplexe manuelle Kompilierungs- und Testvorgänge häufig zu Verzögerungen.
Leistungsfähige DevOps-Abläufe basieren auf gemeinsamen Tools, die die Zusammenarbeit klarer und straffer gestalten und damit auf beiden Seiten zum Verständnis des gesamten Prozesses zur Auslieferung von Software beitragen. Das Ergebnis: mehr Konsistenz und stärkere Automatisierung, was wiederum die Auslieferung beschleunigt und dafür sorgt, dass weniger Zeit für die Behebung von Problemen bei der Installation oder für Wiederherstellungsmaßnahmen im Produktivbetrieb aufgewendet werden muss. Viele Anbieter bieten mittlerweile Unternehmenssoftware für die fortlaufende Integration oder die Automatisierung und Konfiguration der Infrastruktur an. Die Integration dieser heterogenen Einzellösungen erweist sich jedoch oft als komplexe Aufgabe, die zwar einen hohen Verwaltungsaufwand verursacht, dafür aber wenig Rendite einfährt.




Warum DevOps wichtig ist

Schnellere Markteinführung
In einer von Software bestimmten Welt hängt Erfolg entscheidend davon ab, ob es einem Unternehmen gelingt, schnell Software zu erstellen und auszuliefern und dabei die Anforderungen der Kunden immer besser zu verstehen und zu erfüllen. Nur so kann es sich im Konkurrenzkampf behaupten. Zwischen verteilten Komponenten in moderner Unternehmenssoftware gibt es komplexe wechselseitige Abhängigkeiten. Ausgereifte DevOps-Abläufe können Kommunikationsfehler und Verzögerungen verhindern und durch das gemeinsame Know-how von Entwicklern und Administratoren für eine zielgerichtete und reibungslose Auslieferung sorgen. Aus dem „2016 State of DevOps Report“ geht hervor, dass Unternehmen, die DevOps praktizieren, im Durchschnitt 200 mal so viele Installationen zählen und ihre Auslieferungsdauer (die Zeit zwischen der Absicht, Code zu installieren, und der produktiven Nutzung dieses Codes) um den Faktor 2555 verkürzen können. Ähnliches berichten auch andere Branchenstudien, wie sich aus dem folgenden Diagramm von Gartner ersehen lässt. Dieses listet zudem noch weitere Vorteile durch den Umstieg zu DevOps auf.

Geringeres Risiko und reibungsärmere Installation
Unternehmen entwickeln, installieren, skalieren, sichern und patchen moderne Anwendungen und sorgen für hohe Verfügbarkeit. All das zu koordinieren, ist eine komplexe Aufgabe mit vielen potenziellen Stolpersteinen. Eine DevOps-Kultur, die beim Paketieren, Installieren, Überwachen und Verwalten von Software auf Zusammenarbeit und Automatisierung setzt, sorgt für Konsistenz und beschleunigt die Produktivsetzung von neuem und aktualisiertem Code. DevOps-Teams lernen permanent dazu und können dadurch die meisten Problemquellen identifizieren und abstellen. Das zahlt sich aus durch einen robusteren, geradlinigeren, wiederholbaren und ausgereiften Prozess für die regelmäßige, problemlose Installation und Produktivsetzung von Software.

Schnellere Wiederherstellung
Mit DevOps ist ein Unternehmen gut aufgestellt, bei Produktions- und anderen Ausfällen durch fehlerhaften Code die genaue Ursache zu ermitteln und zügig zu beheben. Da der Großteil der Vorgänge zur Veröffentlichung und Verwaltung weitgehend automatisiert abläuft, kann ein gemeinschaftlich arbeitendes DevOps-Team die Fehlerursache schnell ermitteln und Änderungen bzw. Patches einspielen. Aus dem „2016 State of DevOps Report“ geht sogar hervor, dass diese schnellen und strukturierten DevOps-Reaktionen auf unerwartete Probleme im Produktivbetrieb im Durchschnitt 24 mal schneller eine Lösung herbeiführen und Änderungen dreimal seltener fehlschlagen.

Zufriedenere Kunden, marktgerechtere Produkte
Die rasche und zuverlässige Bereitstellung von Funktionen oder Bugfixes belegt nicht nur die Reaktionsschnelligkeit und steigert die Kundenzufriedenheit, sondern ermöglicht auch schnelles Feedback und eine schnellere Einsatzreife der Funktionen, die den Nutzern am wichtigsten sind. Das Kernstück dieser fortlaufenden Softwarepflege und der schnellen Bereitstellung ist DevOps. Nur durch die enge und andauernde Zusammenarbeit zwischen Entwicklern und Administratoren bei der Organisation dieser komplexen Vorgänge ist es möglich, moderne und sofort einsatzbereite Softwarefunktionen dauerhaft in diesem raschen Takt zu entwickeln, zu testen und auszuliefern.




DevOps und herkömmliche Ansätze im Vergleich

DevOps bringt unterschiedliche Denkweisen und neue Prozesse in Softwareunternehmen. Unten finden Sie die wichtigsten Punkte, in denen sich DevOps von herkömmlichen Arbeitsweisen unterscheidet.

Die wichtigsten Merkmale von DevOps
Die wichtigsten Merkmale herkömmlicher Arbeitsweisen
Zusammenarbeit. Für eine erfolgreiche DevOps-Arbeitsweise müssen Softwareentwickler und Admin-Teams eng zusammenarbeiten, permanent und produktiv, damit die Software schnell und zuverlässig entwickelt und ausgeliefert wird.
Isolierte Komponenten. Bei der herkömmlichen Arbeitsweise wird ein Produkt von einer Stelle an die nächste weitergeleitet, und dann heißt es „Aus den Augen, aus dem Sinn“. So fällt der IT-Administration dann die Aufgabe zu, mit bestenfalls minimaler Unterstützung durch die Entwickler Software zu installieren und den Produktivbetrieb am Laufen zu halten.
Strukturiert und weitgehend oder vollständig automatisiert. Die Automatisierung ist eine wichtige Säule von DevOps und gewährleistet bei der Bereitstellung und Konfiguration von Umgebungen Tempo, Konsistenz und Wiederholbarkeit. Dadurch wird sichergestellt, dass, was in der Entwicklungsumgebung funktioniert, auch in der Produktivumgebung funktioniert. Eine strukturierte Herangehensweise dient auch der schnelleren Wiederherstellung im Fehlerfall, denn wiederholbare und automatisierte Vorgänge erleichtern Rollbacks und die Wiederherstellung.
Heterogene, manuell gesteuerte Umgebung. Herkömmliche Strukturen nutzen zur Bereitstellung und Konfiguration der Infrastruktur spontane Kombinationen aus Skripten und manuellen Vorgängen, sodass die Konfiguration von Server zu Server unterschiedlich ist. Dadurch ist es schwierig, Server schnell und beim ersten Versuch richtig zu konfigurieren oder mehrere identisch konfigurierte Entwicklungs- und Produktivumgebungen bereitzustellen. Dies ist die Quelle zahlreicher Probleme.
Self-Service. DevOps liefert Rahmenbedingungen für die Zusammenarbeit und die Automatisierung, damit Entwickler und Administratoren unabhängig agieren können, ohne die jeweils andere Seite zu behindern. So können Entwickler zum Beispiel über automatisierte Abläufe rasch Entwicklungs- und Testumgebungen bereitstellen, statt auf die manuelle Bereitstellung durch die IT-Administration zu warten.
Ticket-System. Herkömmlicherweise übernimmt die IT-Administration die Verwaltung von Störungsmeldungen sowie repetitive und komplexe Aufgaben zur manuellen Bereitstellung und Konfiguration, die sich jedoch leicht automatisieren ließen. Das erhöht den Aufwand und führt zu Verzögerungen bei Bereitstellung, Installation, Skalierung und weiteren Aufgaben rund um die Softwarebereitstellung und -verwaltung.
Konzentration auf den Geschäftserfolg. Wo ein DevOps-Ansatz verwendet wird, konzentrieren sich alle Teams gemeinsam auf den Unternehmenserfolg. So wird die Verantwortung für die erfolgreiche Auslieferung von Software zur Gemeinschaftsaufgabe.
Konzentration auf den eigenen Verantwortungsbereich. Klassisch ist eine Aufgabenteilung, bei der sich die Entwicklungs- und Administrationsteams auf ihre Kernaufgaben konzentrieren. Für den Erfolg des Projekts als Ganzes sind sie nicht direkt (und schon gar nicht allein) verantwortlich. Wenn in dieser Situation Probleme auftreten oder Systeme ausfallen, kommt es zu gegenseitigen Schuldzuweisungen und Spannungen zwischen den Abteilungen.
Problemlose Änderungen. Die DevOps-Arbeitsweise ist von Natur aus automatisiert, wiederholbar und schnell. Schnelle Änderungen lassen sich ebenso sicher handhaben wie die zügige Wiederherstellung nach einem Ausfall. Geschwindigkeit gehört bei DevOps dazu.
Änderungsvermeidung. Herkömmliche Ansätze vermeiden nach Möglichkeit Änderungen in Produktionsumgebungen, da diese zu Problemen und möglicherweise sogar langen Ausfällen führen könnten. Die Verantwortlichen bemühen sich daher, Änderungen und Updates auf ein Minimum zu reduzieren und bremsen damit die Dynamik im Unternehmen.


Was Sie beachten müssen, wenn Sie DevOps in Betracht ziehen.

Um die Auslieferung von Software zu verbessern, beschreitet DevOps ganz neue Wege – mit einer Kombination aus Kultur, Prozessen und Tools. Weil die Umstellung äußerst anspruchsvoll erscheinen kann, hier einige Tipps, die Ihnen die ersten Schritte und die Planung Ihrer DevOps-Abläufe erleichtern können.

Richten Sie die Planung ganz genau an Ihren Anforderungen aus. Die Implementierung Ihrer DevOps-Abläufe muss voll und ganz an den speziellen Anforderungen Ihres Unternehmens ausgerichtet sein und dabei die Organisationsstruktur, Anreize für Teams, die aktuellen Software-Lebenszyklen, Ursachen von Verzögerungen und das Automatisierungspotenzial berücksichtigen.


Bleiben Sie bei wichtigen Themen auf dem Laufenden

Newsletter-Anmeldung

Investieren Sie in Automatisierung und neue Prozesse. „Die unablässige Automatisierung ist eine Notwendigkeit für die Bereitstellung moderner Services.“ [Quelle: Forrester Brief: „Good DevOps Requires Collaboration, Automation, And Cultural Change“; Juni 2016] Die Verwendung von Tools, die automatisierte Abläufe ermöglichen, bringt Ihre DevOps-Umgebung erheblich voran. Oft erfordert der erfolgreiche Einsatz von DevOps einen ganz neuen Ansatz für die Automatisierung. Aber die Investition in die Förderung der Zusammenarbeit verschiedener Teams, in die Einrichtung neuer Prozesse und den Einsatz neuer Tools wird sich auszahlen.

Laut dem oben zitierten Bericht des Marktforschungsunternehmens Forrester setzen 82 Prozent der befragten Fachleute in mindestens einem der folgenden Bereiche Automatisierungslösungen ein: Release-Management, Konfigurations- und Änderungsmanagement.

Machen Sie sich die wichtige Rolle von Teambildung und Arbeitskultur klar.
Die Anreize und die Ziele der Entwicklungs- und Administrationsteams müssen so weit wie möglich übereinstimmen, damit Vertrauen und echte Zusammenarbeit entstehen. So werden Teams mit gemeinsamen Zielen, die aktiv an einem bestimmten Projekt zusammenarbeiten und gemeinsam für alle Aspekte seines Erfolges gerade stehen müssen, mit größerer Wahrscheinlichkeit zusammenarbeiten als in einer Situation, in der Entwickler und/oder Administratoren ihre ganz eigenen Funktionen und Zielsetzungen (z. B. Systemstabilität oder schnelle Einführung neuer Funktionen) für mehrere Projekte haben – sich aber nirgendwo für den Projekterfolg verantworten müssen. Neue Tools lassen sich zwar leicht beschaffen, liefern allein aber nicht die Vorteile einer echten DevOps-Arbeitsweise. Tools entfalten dann ihre Vorzüge, wenn sie im Kontext einer Arbeitskultur eingesetzt werden, die auf Zusammenarbeit und gemeinsame Verantwortung baut.

Machen Sie sich bewusst, wie die Dynamik im Unternehmen zum Hindernis werden kann.
Die Einführung neuer Prozesse und Tools bringt in jedem Fall Umbrüche in den bisherigen Abläufen mit sich und stellt festgefügte Aufgabenfelder in Frage, insbesondere, wo es um Compliance, Sicherheit und Audits geht. Die Beteiligten müssen unbedingt mit ins Boot geholt werden und voller Überzeugung ebenfalls auf das große Ziel hinarbeiten. Anderenfalls kann auch ein gut durchdachter DevOps-Plan durch willkürliche Verzögerungen zurückgeworfen werden. Die Unterstützung durch die oberen Etagen der Geschäftsleitung und durch alle Teams trägt dazu bei, auch solche inneren Widerstände zu überwinden. Tatsächlich gab die Hälfte der Teilnehmer bei einer Gartner-Umfrage 2015 an, dass der menschliche Faktor das größte Hindernis bei der DevOps-Umsetzung in ihrem Unternehmen war.

Denken Sie daran, dass komplexe Umgebungen den Integrationsaufwand erhöhen.
Es gibt viele Softwarehersteller und so ist es ganz einfach, für jeden Aspekt des ganzen großen DevOps-Plans eine eigene Punktlösung anzuschaffen. Dies kann jedoch ein komplexes Gefüge ergeben – mit entsprechend hohem Wartungsaufwand, wenn aus vielen Punktlösungen ein nahtloses Ganzes werden soll. Diese Gefahr können Sie mit einer einheitlichen Lösung aus dem Weg gehen, die sich konsequent an Best Practices orientiert, in die Laufzeitplattform der Anwendungen integriert werden kann und bei alldem ausreichend Flexibilität lässt, um die Automatisierung genau an die Anforderungen des Unternehmens anzupassen. So machen Sie sich mit sicherem Schritt auf den Weg.

Fangen Sie klein an.
Bei der Entwicklung einer DevOps-Umgebung müssen Sie eventuell experimentieren und sich dem gewünschten Ziel schrittweise nähern. Daher empfiehlt es sich, klein anzufangen. Sie erhalten bereits aussagekräftige Ergebnisse, wenn Sie mit einer echten Anwendung beginnen, die allerdings nicht zu groß und auch nicht geschäftskritisch sein sollte, um die geschäftlichen Ziele nicht zu gefährden.

Berücksichtigen Sie bei der Auswahl auch ältere, bereits vorhandene Anwendungen.
DevOps eignet sich nicht nur für neue Projekte. Wenn Sie vorhaben, vorhandene Anwendungen zu modernisieren oder in die Cloud auszulagern, überlegen Sie, wie sich bei dieser Gelegenheit DevOps-Prinzipien und Automatisierung einbauen lassen. DevOps kann nämlich auch für ältere Anwendungen gewichtige Vorteile bei der Release-Häufigkeit und der Zuverlässigkeit und Stabilität von Installationen bringen.

Machen Sie sich klar, dass bei DevOps der Weg das Ziel ist.
DevOps ist eine Philosophie für die Praxis. Sie definieren ein Team und eine Vorgehensweise, aber nichts davon ist statisch. Arbeitslasten, Anforderungen und der betriebliche Kontext ändern sich und die Praxis muss mitwachsen und sich ebenfalls ändern, um ihrem Zweck weiterhin gerecht zu werden: Software schnell und zuverlässig bereitstellen.