«DevOps» nennt sich ein relativ junger Ansatz, der Anwendungsentwicklung (Development) und IT-Betrieb (Operations) enger zusammenbringen will – speziell bei Webanwendungen und agil geführten Projekten mit hohen Änderungsraten. Dieser Beitrag zeigt, wie das neue Konzept den bisherigen Standard für IT-Betriebe ergänzen und integrieren kann.
«DevOps» nennt sich ein relativ junger Ansatz, der Anwendungsentwicklung (Development) und IT-Betrieb (Operations) enger zusammenbringen will – speziell bei Webanwendungen und agil geführten Projekten mit hohen Änderungsraten. Dieser Beitrag zeigt, wie das neue Konzept den bisherigen Standard für IT-Betriebe ergänzen und integrieren kann.
Quelle: Computerworld 3/2014, www.computerworld.ch
Eine der grossen Herausforderungen jeder IT-Organisation ist die (durch die komplexen Technologien fast zwangsläufige) Aufstellung in sogenannten funktionalen Silos. Die Datenbankadministratoren haben alle Hände damit voll, die Performance-Anforderungen der Kunden zu erfüllen – und wissen nicht, dass die Netzwerker eben eine neues Zonenkonzept eingeführt, die Security-Leute die Firewall neu aufgesetzt und die Systemadministratoren einen dringenden Patch eingespielt haben. Am Schluss läuft die Anwendung nicht richtig und das grosse Fingerzeigen beginnt.
Es war eines der Hauptziele von ITIL, diese Silos durch einheitliche Prozesse und Regeln aufzubrechen und so eine stabilere Betriebsumgebung zu erreichen. Nach mehr als 10 Jahren ITIL V2 und V3 steht fest, dass dies gelungen ist. Gerade die hier relevanten Prozesse Incident-, Problem-, Change- und Release-Management wurden inzwischen in sehr vielen IT-Betriebsorganisationen erfolgreich eingeführt. Allerdings gibt es in jeder IT-Abteilung immer noch zwei grosse Silos: Anwendungsentwicklung und IT-Betrieb. ITIL stellt nur Schnittstellen zur Anwendungsentwicklung zur Verfügung und verweist für den eigentlichen Entwicklungsprozess auf bestehende Best Practices wie CMMI, PRINCE2, TOGAF etc. Interessanterweise gibt es im ITIL-Lifecycle-Modul «Service Design» auch keinen Prozess für das Design von Services.
So geschieht es auch heute noch häufig, dass Software-Entwicklungsabteilungen am Freitagabend ein neues Release an den Betrieb übergeben mit der Bitte, diesen am Montag in Produktion zu nehmen. Vielerorts trennt ein tiefer Graben die Entwickler, die sich eher als Künstler verstehen und die Stabilität und Leistung der Infrastruktur einfach als Selbstverständlichkeit ansehen, und die «Schrauber», die sich täglich mit Abstürzen, Leistungsschwankungen und Security-Problemen herumschlagen müssen. Beide Seiten wissen wenig über die Arbeit der anderen Seite. Eine andere Ursache für die Spannungen sind auch die unterschiedlichen Zielsetzungen: Die Anwendungsentwicklung muss neue Funktionalitäten rasch liefern, während der IT-Betrieb vor allem für Stabilität, Leistung und Sicherheit zu sorgen hat.
Diese Situation verschärft sich mit neuen Methoden und Technologien noch. Agile Entwicklungsmethoden mit ihren kleinen, aber häufigeren Entwicklungsschritten («Sprints») stellen sehr hohe Anforderungen an Test-, Release- und Deployment-Management-Prozesse. In solchen Umgebungen reichen die üblichen zwei bis vier Releases pro Jahr bei Weitem nicht mehr. Neue Technologien wie Virtualisierung, Clustering, Loadbalancing oder Cloud (Infrastructure as a Service, Platform as a Service) erlauben hochflexibles Provisioning von Kapazitäten und ganzen Serverumgebungen auf Knopfdruck. Dies kann zu Inkompatibilitäten und Falschkonfigurationen führen. Es müssen also eine ganze Menge mehr Changes in einer potenziell labileren mgebung ausgeführt werden. Genau dies möchte das DevOps-Konzept adressieren.
DevOps ist mehr eine Bewegung als eine definierte Methode. Die Idee wurde von IT-Operations-Praktikern im Umfeld grosser Webanwendungen und unter dem Einfluss der agilen Entwicklungsmethode entwickelt. Das Konzept basiert auf folgenden fünf Grundideen:
Der neue Ansatz eignet sich vor allem für die Zusammenarbeit des IT-Betriebs mit agilen Projekten. Auch muss die Zahl der zu verarbeitenden Builds, Tests und Deployments relativ gross sein, damit sich der Automatisierungsaufwand lohnt. Beim Einsatz von Cloud-Diensten ist diese Herangehensweise sicherlich sinnvoll. Für kleinere Umgebungen, Legacy-Anwendungen und klassische COTS-Lösungen (Commercial off the shelf) lohnt sich der Einsatz kaum. DevOps wird heute vor allem in grossen Webumgebungen wie Google, Facebook oder Amazon angewendet. Allerdings muss sich jede Firma, die agile Methoden, Virtualisierung oder Cloud-Services einzusetzen gedenkt, über die neuen Anforderungen an die Service Transition Gedanken machen.
ITIL ist und bleibt der Standard für einen stabilen und ziel- d.h. serviceorientierten, kostenoptimierten Betrieb einer IT-Umgebung. Definierte Prozesse mit Regeln, Verantwortlichkeiten und Kennzahlen bilden eine hervorragende Grundlage für die Einführung von Lean-Konzepten, sei es für agiles Projekt-Management, DevOps-Transition-Management oder kontinuierliche Verbesserung. Unter dem Aspekt von sehr häufigen, aber kleinen Änderungen sind zwei Prozesse der Schlüssel für das erfolgreiche Zusammenspiel von DevOps und ITIL: Change-Management und Configuration-Management. Der Change-Management-Prozess ist dahingehend anzupassen, dass sehr viel mehr Change-Modelle erstellt und automatisiert werden. Ähnlich wie sich Standard Changes für Endanwender (z.B. die Installation von Visio auf einem Arbeitsplatzrechner) in einem Portal als «Selfhelp» automatisieren lassen, sollten normale Changes mit wenig Risiko und starker Automatisierung vom Administrator durchgeführt werden können. Via Runbook-Automation können auch Events aus dem Monitoring automatisch interpretiert und automatisierte Massnahmen eingeleitet werden.
Damit einhergehend muss das Configuration Management System (CMS), das in ITIL eher als passives Informations-Tool beschrieben wird, zu einem aktiven Konfigurationssystem ausgebaut werden, in dem sich für bestimmte Configuration Items oder -Klassen neue Sollzustände definieren lassen. Durch integrierte Software-Konfigurations- und -Verteilungs-Tools kann man diese vom Ist- zum Sollzustand führen.
DevOps ist ein vielversprechender, aber auch ehrgeiziger Ansatz, der im Kern aber sehr pragmatisch ist: Man darf die Arbeit nicht einfach bürokratischen Prozessen und Tools überlassen – am Anfang sollte immer die zwischenmenschliche Kommunikation stehen.
Kommentar