Software-Entwicklung und -Betrieb

Wie DevOps die IT beschleunigen

02.02.2018
Frank Pientka arbeitet als Principal Software Architect bei der MATERNA GmbH. Als Software Architect sorgt er für mehr Qualität in der Software und kümmert sich, als Gründungsmitglied des iSAQB, um eine verbesserte Ausbildung und Zertifizierung von Architekten. Seit mehr als zwei Jahrzehnten unterstützt er Firmen bei der Umsetzung  und Modernisierung ihrer Software-Architekturen. Dabei führt er externe Reviews und Architekturbewertungen als Gutachter durch. Dazu hat er auch schon mehrere Bücher, Fachartikel veröffentlicht und Vorträge gehalten.
Entwicklung (Development) und Betrieb (Operations) sollen besser zusammenarbeiten - das Zauberwort heißt entsprechend DevOps, mit denen agile Arbeitsmethoden den Unternehmensalltag erreichen. Anwender müssen einige wichtige Grundregeln beachten.

Die Erwartungen der Konsumenten haben sich grundlegend geändert: In der Folge stehen Unternehmen unter Zugzwang. Reaktionszeiten auf Änderungswünsche der Kunden, erhöhte Anforderungen an Sicherheit und die Time-to-Market neuer Geschäftsmodelle sind ausschlaggebend für den dauerhaften wirtschaftlichen Erfolg.

Nur wer schnell ist, überlebt im Markt. Dafür braucht es neue Arbeitsstrukturen.
Nur wer schnell ist, überlebt im Markt. Dafür braucht es neue Arbeitsstrukturen.
Foto: alphaspirit - Fotolia.com

Vorbei sind die Zeiten, in denen die IT-Abteilung einmal im Jahr eine größere Aktualisierung vornehmen konnte. Inzwischen werden Anwendungen zwar immer öfter agil entwickelt und im Zweiwochenrhythmus getestet. Bis diese aber durch die internen Qualitäts- und Betriebsprozesse in Produktion gelangen, vergehen oft noch einige Tage oder Wochen. Nicht nur die verwendeten Werkzeuge, sondern auch die dahinter verborgenen Prozesse verzögern die Inbetriebnahme.

Die Automatisierung wichtiger IT-Prozesse erhöht die Effektivität und Effizienz. Die dabei erreichte höhere Transparenz und Feedbackmöglichkeit zeigen jedoch oft neu Schwachstellen auf. Das darf alles nicht auf Kosten der Qualität gehen.

DevSecOps aber sicher!

Gerade das Thema Sicherheit hat nicht umsonst in letzter Zeit eine hohe Aufmerksamkeit erreicht. Bestehende Sicherheits- und Integrationstestverfahren geraten deshalb schnell an ihre Grenzen. Deswegen müssen die bestehenden Prozesse um ein angepasstes Sicherheits- und Risikomanagement für DevOps ergänzt werden. Dieses wird als logische Weiterentwicklung DevSecOps genannt. Nur wenn kritische Sicherheitslücken oder Verletzung von Sicherheitsrichtlinien schnell erkannt und sicher behoben werden können, ist heute ein kontinuierlicher Betrieb in der Cloud möglich. Vorsorgen ist besser als heilen. Gleiches gilt für die Infrastruktur. Hier ist es einfacher diese automatisiert neu aufzusetzen, als diese zu reparieren - auch bekannt als (Cattle vs. Cats, Immutable Infrastructure).

DevSecOps: Secure Development as a Continuous Improvement Process
DevSecOps: Secure Development as a Continuous Improvement Process
Foto: Gartner

Weniger Komplexität, mehr Qualität

Um flexibler, schneller und kostengünstiger auf neue Anforderungen reagieren zu können, werden agile Prozesse und Werkzeuge benötigt. Bisher wendeten die Verantwortlichen agile Methoden wie Scrum vor allem in der Software-Entwicklung an. Mit der DevOps-Bewegung kommen diese Methoden nun auch im Betrieb zur Umsetzung. DevOps unterstützt das Technical Release Management, Software Configuration Management und Environment Management und dadurch auch die Übergabe einer Applikation von der Vorproduktion in eine Produktionsumgebung.

Aktuelle Tools und Methoden ermöglichen es, die Komplexität einer Applikation sowie ihrer Abhängigkeiten einfacher zu handhaben und anfallende Tätigkeiten zu standardisieren. Auftretende Veränderungen werden von Beginn an berücksichtigt, wodurch sich das damit verbundene Risiko deutlich reduzieren lässt.

DevOps - kurz gefasst

Um flexibel und schnell auf neue Geschäftsanforderungen reagieren zu können, müssen Entwicklung und Betrieb besser zusammenarbeiten und ihre Prozesse mehr aufeinander abstimmen. Der DevOps-Ansatz hilft dabei, agile Methoden auf den IT-Betrieb zu übertragen und Standardmodelle für Software-Entwicklung und IT-Betrieb miteinander zu verbinden. Dadurch werden kürzere Release-Zyklen möglich und das Risiko von ungetesteten Elementen wird minimiert, da dieselben Verfahren im gesamten Software-Prozess identisch und ohne Brüche eingesetzt werden.

DevOps ist kein Werkzeug sondern eine Methode, die einem Lebenzyklus der Software-Entwicklung folgt. Den Kern von DevOps bilden die Menschen und die Art und Weise, wie sie zusammenarbeiten.
DevOps ist kein Werkzeug sondern eine Methode, die einem Lebenzyklus der Software-Entwicklung folgt. Den Kern von DevOps bilden die Menschen und die Art und Weise, wie sie zusammenarbeiten.
Foto: Materna GmbH

Bisher setzten Unternehmen DevOps eher in einzelnen Projekten ein. Es ist jedoch an der Zeit, daraus ein strategisches Thema zu machen und damit einen Mehrwert für das gesamte Geschäft zu generieren. Langfristig profitieren davon alle Beteiligten: Vor allem der Endanwender erhält deutlich schneller die für ihn wichtigen veränderten Funktionen.

Begriffserklärung

Was verbirgt sich überhaupt hinter dem Begriff DevOps? Prinzipiell versteht sich DevOps als ein strategischer Ansatz, um Prozesse rund um die Software-Entwicklung zu beschleunigen. Wer eine weitergehende Definition sucht, wird unterschiedliche Erklärungen finden.

Grundsätzlich besteht Einigkeit darüber, dass sich mit DevOps eine effizientere und reibungslosere Zusammenarbeit von Development und Operations realisieren lässt. Nach John Willis, einem Veteranen der DevOps Bewegung, bilden fünf Grundprinzipien das Gerüst der Management-Strategie: Culture, Automation, Lean, Measurement, Sharing. Im Detail lassen sich diese Punkte wie folgt erläutern:

Als kulturelle Basis der Zusammenarbeit lassen sich gegenseitiges Vertrauen, stetiger Informationsfluss und eine anhaltende Bereitschaft zum Lernen beschreiben.
Für eine erfolgreiche Umsetzung ist die Automatisierung bestimmter Arbeitsvorgänge unabdingbar. Sie beginnt bei der Abbildung einfacher wiederkehrender Tätigkeiten und geht bis zur Vollautomatisierung von Aufbau und Betrieb ganzer Umgebungen.
Setzt auf folgenden Prinzipien auf: Vermeide Verschwendung, generiere Wert, schaffe Transparenz und betrachte die Prozessoptimierung ganzheitlich. Deswegen passt als agiles Vorgehen Kanban besser als Scrum zum DevOps-Ansatz.
Um Qualität durchgängig zu sichern, sind einheitliche Bewertungskriterien wichtig. Es sollten nicht nur die gesamte Applikation und ihre Komponenten, sondern auch die dahinter liegenden Prozesse überwacht werden. Eine übergreifende kontinuierliche Verbesserung und für beide Seiten nachvollziehbare Metriken sind dabei unabdingbar.
Die Bereitschaft, Wissen zu teilen, voneinander zu lernen und Erkenntnisse proaktiv mitzuteilen, sorgt für die notwendige Basis einer klaren Kommunikation und ist ebenfalls ein wichtiger Aspekt der DevOps-Strategie.

Diese fünf Bestandteile des DevOps Lifecycle (Motto: Keep C.A.L.M.S. and Carry On) bilden die Grundlage für eine effizientere Zusammenarbeit und eine bessere Qualität der erzeugten Produkte. DevOps ist zwar selbst kein Werkzeug, jedoch bilden Software-Tools zur Automatisierung und dem Messen wichtige Bausteine bei der erfolgreichen Implementierung. Den Kern von DevOps bilden aber vor allem die Menschen und die Art und Weise, wie sie mit anderen zusammenarbeiten. Zum Weiterlesen empfehlen sich zu den organisatorischen Aspekten die Bücher das "Projekt Phoenix" und das "DevOps-Handbuch".

Automatisierung bringt mehr Möglichkeiten

Eine umfassende Automatisierung bei Aufbau, Konfiguration und Betrieb von Systemen ist fast zwingende Voraussetzung für den Erfolg von DevOps. Auch Virtualisierung spielt dabei eine entscheidende Rolle. Viele Software-Hersteller, aber auch Cloud-Anbieter, erweitern kontinuierlich ihren Funktionsumfang. So sind Möglichkeiten zur Automatisierung und Orchestrierung in fast allen Werkzeug-Suiten vertreten.

Die Überschneidungen einzelner früher dedizierter Werkzeuge werden immer größer. Das sorgt für Verunsicherung vieler Unternehmen - wird auf die richtigen Hersteller gesetzt? Hinzu kommt eine relativ große Bandbreite an Open Source-Werkzeugen, die mittlerweile ausgereift sind und teilweise bereits im großen Stil eingesetzt werden. Unternehmen wie Facebook, Google und eBay machen dies vor.

Konzentration aufs Wesentliche

Grundgedanke der weiterführenden Virtualisierung ist die maximale Abstraktion der Bestandteile einer Applikation und Fokussierung auf die einfache Portabilität. Anstatt Server und Betriebssystem werden exakt zugeschnittene Komponenten bereitgestellt. Um die Container zu bestücken, gibt es eine große Auswahl vorgefertigter Bausteine, die auf eine einheitliche Weise in einem Repository verfügbar sind. Ähnlich, wird der Code und Artefakte für die Infrastruktur genauso wie der Sourcecode versioniert verwaltet, um so ein Single Repository of Truth für das gesamte System zu haben.

Spielte am Anfang die Firma Docker Inc. bei der Etablierung von leichtgewichtigen Virtualisierungscontainern unter dem Motto "build, ship and run applications anytime and anywhere" eine große Rolle, kümmert sich unter dem Dach der sehr erfolgreichen Linux Foundation (LF) die herstellerunabhängige Cloud Native Computing Foundation (CNCF) um deren Weiterentwicklung, Standardisierung und Zertifizierung. Deren Mitgliederliste liest sich wie das Who's Who der Internet-Branche. Getreu dem Motto, dass man in der Gemeinschaft mehr als jeder Einzelne allein bewegen kann. So verwundert es nicht, dass die Spende der Cluster-Management-Software Kubernetes von Google den Grundstein für die CNCF.

Inzwischen haben alle Cloud-Anbieter ihr Angebot auch um gemanagte Container-Cluster-Lösungen, Container as a Service (CaaS) oder auch um DevOps-Dienste in der Cloud ergänzt. Um auch den Trend zur Poly-Cloud zu unterstützen gibt es inzwischen auch Frameworks und Werkzeuge, um Cloud-Infrastrukturen und Dienste weitgehend herstellerunabhängig aufsetzen und anpassen zu können.

Wiederverwendbare Container

Die Anwendungsentwickler wollen sich immer weniger Gedanken über Aufbau und Betrieb der Systeme machen. Dieses Grundbedürfnis macht die Nutzung von Cloud-Diensten als Basis für Entwicklungen immer interessanter. Vor allem bei Cloud-Diensten liegt der Fokus auf der Bereitstellung eines Service, bei dem der Nutzer sich möglichst nicht mehr um den klassischen Betrieb oder um Aktualisierungen kümmern muss.

Der Trend zu Microservices und ihre kleinen Geschwister Function as a Service (FaaS) basieren letztendlich auf Container.

DevOps einführen

Wenn Betrieb und Entwicklung bei DevOps schon frühzeitig zusammenarbeiten, können diese voneinander lernen. Dementsprechend muss Raum geschaffen werden, der Fehler zulässt. Sonst wird sich kein Unternehmen trauen, diese Innovation zu erproben. Dabei spielt auch die verfügbare Zeit eine wichtige Rolle. Hier müssen ausreichende Ressourcen für die Einführung und den Lernprozess verfügbar sein.

Das DevOps-Dilemma zwischen Qualität und Flexibilität.
Das DevOps-Dilemma zwischen Qualität und Flexibilität.
Foto: Materna GmbH

Auch Tools sind ein wichtiges Mittel zum Ziel. Unternehmen sollten ihre Mitarbeiter in den Entscheidungsprozess für die einzusetzenden Werkzeuge einbeziehen. Im Idealfall bestimmen sie diese sogar. Die passenden Werkzeuge zur Erledigung täglicher Aufgaben sorgen für Zufriedenheit. Je mehr das Unternehmen die DevOps-Kultur mitträgt, umso mehr wird sich auch die gesamte IT-Performance verbessern. Denn DevOps behinhaltet immer einen stetigen Lern-, Veränderungs- und Verbesserungsprozess. Manchmal braucht es Wanderer zwischen den Welten, die beide Seiten verstehen und zwischen ihren widersprüchlichen Interessen vermitteln können.

Da es sich bei DevOps um einen Ansatz handelt, der den gesamten Entwicklungs- und Betriebsprozess betrifft, sollten Verantwortliche die bestehenden Vorgehensweisen und Zuständigkeiten überdenken. Eine Cloud-Strategie ohne DevSecOps ist heute kaum denkbar oder anders ausgedrückt "Wer Cloud möchte muss DevOps können". Dabei handelt es sich bei DevSecOps um den nächsten logischen Weiterentwicklungsschritt für DevOps.

Um nachhaltig Vorteile zu erzielen, ist es wichtig, dass alle gemeinsam an der kontinuierlichen Verbesserung beteiligt sind und sich ihr Arbeiten danach ausrichtet. Somit können agile Praktiken die IT-Organisation nachhaltig verändern.