Software-Entwicklung und -Betrieb

Wie DevOps die IT beschleunigen

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 im Zusammenhang mit Internet und Mobilität grundlegend geändert: In der Folge stehen Unternehmen unter Zugzwang. Reaktionszeiten auf Änderungswünsche der Kunden 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.

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.

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, darunter auch die der klassischen Infrastruktur-Virtualisierung wie beispielsweise VMware, 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.

Wiederverwendbare Container

Darüber hinaus wollen sich Anwendungsentwickler 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.

Lösungen für Platform as a Service (PaaS) und Backend as a Service (BaaS) stellen Systeme verlässlich und wiederholbar zur Verfügung. Im Hintergrund dieser Services stehen jedoch meist klassische Virtualisierungen.

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.

Ein führender Hersteller im Bereich xPaaS - hierbei geht es um das Zusammenwachsen von PaaS und IaaS und weiteren Services - ist das Unternehmen Docker, das von einem enormen Zuspruch und von großen Investitionen profitiert. Aus Sicht der Entwickler ist dies die perfekte Plattform für eine Applikation. Wie sich solche Lösungen für den Betrieb und vor allem bei Integration mit vorhandenen Umgebungen bewähren, wird die Zukunft zeigen. Fakt ist, auch ihr Einsatz erfordert einen gewandelten Blickwinkel auf die Entwicklung und das Management von Applikationen.

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. 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. 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. (sh)