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

Teilen

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.


Devops Cartoon

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.
Mehr erfahren

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).
Mehr erfahren

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.




„DevOps ist heutzutage im Mainstream angekommen ... DevOps ist nicht mehr bloß ein nettes Extra oder ein Wettbewerbsvorteil, sondern eine Notwendigkeit, um wettbewerbsfähig zu bleiben.“

Ovum Research; Changes Within and Driven by DevOps; June 2016




Next Section
Warum DevOps?