DevOps birgt für IT-Organisationen und deren interne sowie externe Kunden ein enormes Potenzial. Experten sprechen von High-Performance-IT-Organisationen mit vielen Vorzügen: Diese rollen häufiger neue Releases aus, beheben Softwarefehler schneller, verzeichnen weniger Ausfälle und bieten kürzere Durchlaufzeiten als etablierte Betriebskonzepte. Wer Software entwickelt und betreibt, für den ist DevOps inzwischen obligatorisch. Aber was genau ist DevOps, für welche Unternehmen eignet sich der Ansatz und welche Voraussetzungen müssen für eine erfolgreiche Einführung geschaffen sein?
Was ist DevOps und was ist es nicht?
Grundsätzlich variieren die Ziele, die Unternehmen mit DevOps für sich und ihre Projekte erreichen wollen. Unabhängig von der jeweiligen Intension sollte jedoch allen Beteiligten klar sein, was DevOps ist. Es ist mehr als eine Sammlung von Methoden, Tools und Vorgehensweisen. DevOps ist eine Unternehmenskultur!
Im Kern geht es darum, die Prozesse zwischen der Softwareentwicklung (Development – kurz: Dev) und der Systemadministration oder dem IT-Betrieb (Operations – kurz: Ops) zu verbessern sowie schnellere und stabilere Anwendungen bereitzustellen. Ursächlich ist der Zielkonflikt zwischen agilem Development und Betrieb:
- Development → viele Changes, um viel und regelmäßig (Scrum) neue Features zu releasen
- Operations → never change a running system
Eine gemeinsame Kultur, Ziele, Anreize, Prozesse und Werkzeuge sollen die Zusammenarbeit zwischen den Bereichen verbessern und die IT-Prozesse von der Konzeptionierung bis zur Nutzung durch den Endkunden beschleunigen. Daraus ergeben sich diese Vorteile:
- Silos und Mauern zwischen Dev und Ops werden durch gemeinsame Verantwortung und crossfunktionales Arbeiten abgebaut.
- Administratoren werden mehr zu Entwicklern und Entwickler mehr zu Administratoren. Es entsteht der DevOps Engineer.
- Tools & Prozesse ermöglichen autonomes, fehlertolerantes und automatisiertes Arbeiten.
Welche Voraussetzungen braucht die Einführung von DevOps?
Moderne agile Softwareentwicklung denkt nicht mehr in großen, umfassenden Releases neuer Softwareversionen, sondern in iterativer kontinuierlicher Weiterentwicklung einzelner Funktionen. Diese erhalten die Kunden über regelmäßige oder kontinuierliche Releases. Dies bedingt ein Umdenken bei den Operation Teams. Deren Arbeit entwickelt sich vom Einspielen von Releases, Testing und Betrieb der Plattformen dahin, dass sie Tools bereitstellen (welche die Entwickler autonomer arbeiten lassen) sowie Tests und Deployments automatisieren.
Wie sich die DevOps-Kultur erfolgreich im Unternehmen etablieren lässt, beschreibt John Wills, einer der wichtigsten Wegbereiter für DevOps, in fünf Grundprinzipien. Wir bei Adacor bauen auf diesen Prinzipien auf und haben sie durch unsere eigene Praxiserfahrungen mit weiteren Leitlinien ergänzt:
1. Culture
Ein vertrauensvolles Umfeld entsteht, wenn es gelingt die Grenzen zwischen den Bereichen „Dev“ und „Ops“ zu durchbrechen. Entwickler und Administratoren müssen an einem Strang ziehen und eng zusammenarbeiten. Zahlreiche Unternehmen setzen dafür ihre Teams völlig neu zusammen. Die IT-Fachkräfte werden nicht mehr mit Einzelaufgaben für separate Produkte oder Projekte betraut. Vielmehr bilden sie crossfunktionale Teams aus Entwicklung und Betriebsmanagement (Admins) und begleiten ein Produkt oder Projekt gemeinsam während der gesamten Lebensdauer. Wichtig ist, dass die IT-Fachleute den durchgehenden Wertefluss des Projektes verstehen, sich kontinuierlich austauschen und die Prozesse analysieren.
2. Automation
Verbesserungen werden am besten mit der Automatisierung von Prozessen erreicht. Automatisierung schafft Strukturen, beschleunigt Abläufe, vermeidet Fehler und spart Zeit. Damit eröffnet DevOps die Chance, eine kurze „Time-to-Market-Zeit“ zu erreichen und damit Wettbewerbsvorteile zu nutzen. Notwendiger Nebeneffekt der Automatisierung: Die Entwickler werden autonomer.
3. Lean
Sämtliche Ziele gilt es ohne Verschwendung von Ressourcen zu erreichen. Prozessoptimierung ist immer ganzheitlich. Dafür braucht es Transparenz und den Willen zur Veränderung. Damit sich die Teams auf die Entwicklung und Verbesserung der Produkte und Projekte konzentrieren können, sollten diese Routinen möglichst automatisiert ablaufen und keine Ressourcen binden. Das gilt für alle IT-basierten Prozesse: Internet- und Intranet-Anwendungen unterliegen ebenso wie Serverlösungen kontinuierlichen Aktualisierungen. In einem effektiven DevOps-Prozess sorgt Veränderung für Stabilität. Besonders in komplexen Projekten macht es Sinn, Neuerungen und „Changes“ kontinuierlich in kleinen Schritten gesteuert umzusetzen. Dadurch werden Risikofaktoren schneller erkannt und Fehler früher gemacht, wenn sie noch nicht so teuer sind. Wer stets versucht, Schaden von einem System fernzuhalten, indem Veränderungen abgelehnt werden, kommt schnell an die Grenzen. Dann müssen große Veränderungen plötzlich unter dem Druck des Marktes gestemmt werden.
4. Measurement
Eine kontinuierliche Prozessverbesserung kann mit einheitlichen Bewertungskriterien erzielt werden. Die Erfolgs- und Bewertungskriterien müssen dabei idealweise für alle Rollen (Dev und Admin) im Team einheitlich sein. Google verfolgt ein interessantes Konzept, dass statt „Verfügbarkeit“ von „Fehlerbudget“ spricht. Die Entwickler- und Betriebsteams haben ein Fehlerbudget für Ausfälle. Ist dies überschritten, müssen Sie gemeinsam Stabilität in die Anwendung bekommen, bevor neue Features released werden dürfen.
5. Sharing
Alle Beteiligten müssen bereit sein, ihr Wissen zu teilen, voneinander zu lernen und Erkenntnisse proaktiv mitzuteilen. Idealerweise verschwimmen die Grenzen zwischen Admins und Entwicklern und beide Rollen sehen sich irgendwann als DevOps Engineers. Silodenken, Knowledge-Hoarding oder Aussagen wie „das ist nicht meine Aufgabe“ sind an dieser Stelle fehl am Platz.
Diese Grundprinzipien haben wir bei Adacor um zwei weitere ergänzt:
6. Kosten- und Nutzenprüfung
Um die Vorteile für eine DevOps-Einführung abzuwägen, hilft Unternehmen eine Kosten- und Nutzenprüfung. Wer zum Beispiel auf den eigenen Systemen proprietäre Software betreibt, hat kaum Möglichkeiten die Entwicklung zu beeinflussen. In diesem Fall ist ein DevOps-Team überflüssig. Dann können sich aus der Überprüfung der Abläufe und Prozesse der eigenen, traditionellen IT-Landschaft Lösungen ergeben, die das System schneller laufen lassen. Alternativ können die Entwickler ganz von vorne anfangen. Viele Unternehmen lassen diesen wichtigen Punkt außer Acht. DevOps und Agilität sind trendy, deshalb steigen hier viele ein. Ob die Einführung vorteilhaft oder notwendig ist, wird häufig nicht hinterfragt.
7. Optimale Entwicklungsumgebung
Erfolgreiche IT-Unternehmen schaffen ideale Entwicklungsumgebungen: So bietet Cloud Computing beste Voraussetzungen für erfolgreiche DevOps-Projekte. Dort lassen sich umfangreiche Entwicklungsplattformen inklusive Test- und Staging-Umgebungen sowie Versionsverwaltung und Automatisierungstools implementieren, die virtuell reale Bedingungen abbilden. Die produktive Infrastruktur bleibt vom Entwicklungsprozess weitgehend unberührt
Der IT-Experte Donovan Brown von Microsoft hat vier Tipps, wie Unternehmen erfolgreich mit DevOps starten:
Tipp 1: Sorge dafür, dass jedes Mal, wenn Entwickler den Code ändern, diese Änderungen eingebaut werden.
Tipp 2: Stelle sicher, dass die Testumgebung deckungsgleich zur Produktivumgebung ist.
Tipp 3: Finde Wege, um automatisierte Tests zu ergänzen und führe diese mehrfach durch.
Tipp 4: Erweitere die Pipeline schrittweise und weite DevOps sukzessive aus.
Hürden bei der Einführung von DevOps
Der praktische Erfolg von DevOps stellt sich ein, wenn erreicht wird, dass Mitarbeitende und Kunden umdenken. Das alte Operations-Motto „Never change a running system!“ gehört der Vergangenheit an. Die Entwickler müssen sich nicht mehr allein neuen Business-Anforderungen stellen. Mit DevOps lautet die Devise: Alle ziehen im Sinne eines wirksamen „Value Flow“ gemeinsam an einem Strang! DevOps hebt den Gegensatz auf „schnell, aber gepfuscht“ oder „langsam, dafür aber stabil“.
Selbst eingespielte Teams aus Entwicklern und Betriebsmitarbeitenden, die plötzlich zusammen in einem Raum sitzen, müssen mit der neuen Denkweise vertraut gemacht werden. Häufig sind Hürden zu überwinden, bis die Zusammenarbeit reibungslos funktioniert. Trotzdem wird es weiterhin IT-Projekte geben, in denen es nicht gelingen wird, die Entwicklung und den Betrieb konzeptionell und organisatorisch zu einer erfolgreichen Zusammenarbeit zu bewegen. Dessen sollte man sich vor der Einführung von DevOps bewusst sein. Dennoch müssen solche Vorhaben beweglicher werden, um agiler und schneller auf die Businessanforderungen im Rahmen der Digitalisierung reagieren zu können. Entsprechende Ansätze und Denkweise helfen weiter. Ein Anfang sind zum Beispiel eine offenere Kommunikation sowie Ziele, die gemeinsam definiert und bearbeitet werden.
Unternehmen müssen von vorn anfangen
Wer eine Software erfolgreich entwickeln und betreiben möchte, für den ist DevOps ein Muss. Die Maßnahmen zur Prozessverbesserungen lassen sich jedoch nicht mal eben in ein Bestandprojekt integrieren, sondern sind ein umfassender DevOps-Prozess. In diesem werden zahlreiche agile Iterationsrunden gedreht, bevor eine funktionierende und stabil betriebene Applikation herauskommt, die wöchentliche, tägliche oder sogar kontinuierliche Releases verkraftet. Es ist viel initiale Projektarbeit nötig, um die erforderlichen Konzepte, Abläufe und Technologien aufeinander abzustimmen.
In den einzelnen Bereichen (Dev oder Ops) wird es weiterhin Spezialisten für den Betrieb und Spezialisten für die Entwicklung geben. Der eigentliche Betrieb wird von – im Bereich DevOps und einer darauf abgestimmten Technologie ausgebildeten – Experten durchgeführt werden. Auch bei der Realisierung von DevOps werden Spezialisten gebraucht.
Themen wie „administrativer Zugriff auf die Shell“ werden nicht mehr diskutiert, sie werden im Idealfall überflüssig. Die Administratoren oder die Softwareentwickler selbst „pflegen“ gemäß dem Cattle-/Cat-Prinzip eine Vielzahl der Systeme nicht mehr. Sie nutzen diese noch für ihren exakt bestimmten Zweck und eine potenziell kurze Zeit. Ob es sich um Container, virtuelle Server oder andere Abstraktionen handelt, spielt keine Rolle. Wichtig ist, dass die Entwickler selbst in der Lage sind, die Ressourcen zu verwalten und das Einspielen der Releases zu managen.
Als „Cat” werden Server mit eigenem Namen (zum Beispiel garfield.example.com) bezeichnet. Der Name dient nicht nur zur Server-Erkennung, sondern lässt erkennen, dass die Maschine per Hand großgezogen und für ihre Rolle ausgewählt wurde. Wenn auf solchen Servern ein Problem entsteht, werden sie wie ein Haustier beziehungsweise ein Kätzchen sorgsam umsorgt und gepflegt, bis sie wieder gesund sind.
„Cattle”, das Nutztier, stellt das andere Ende des Spektrums dar. Hier haben die Server meist keinen eigenen Namen, sondern nur Nummern wie web001.example.com. Die virtuellen Maschinen werden über ein Skript angelegt und mit ihrer Konfiguration bespielt. Der Server mit der Nummer Eins ist quasi identisch mit web002.example.com und anderen Servern mit derselben Aufgabe. Wenn auf einem der Server ein Problem auftritt, wird er gelöscht und ein neuer aufgesetzt.
Eine Definition des Cat- und Cattle-Prinzips und den verschiedenen Anwendungsmöglichkeiten haben wir in unserem Blog bereits veröffentlicht.
DevOps und Agilität
DevOps reagiert auf kürzere Release-Intervalle mit hoher Automatisierung und interdisziplinären Teams – das bedeutet eine höhere Komplexität von IT-Projekten. Zusätzlich sind in großen Unternehmen und Konzernen oft mehrere Releases zeitgleich in Vorbereitung. Sie befinden sich in unterschiedlichen Phasen von Entwicklung, Test, Integration und Deployment. Unternehmen, die DevOps umsetzen, verabschieden sich weitestgehend von etablierten Prozessen und setzen auf agile Arbeitsweisen wie Scrum. Aus selbstorganisierenden Teams ergeben sich die besten Architekturen, Anforderungen und Designs. Solche Teams reflektieren in regelmäßigen Abständen ihre Arbeit. Dabei finden sie Lösungen, wie sie noch effektiver werden können. Ihr zukünftiges Verhalten passen sie daraufhin an und schaffen nachhaltige Entwicklungen.
DevOps bei Adacor
Bei Adacor arbeiten wir in der Entwicklungsabteilung schon lange agil nach Scrum und haben die Tools und Prinzipien auch in anderen Bereichen wie Marketing oder People Operations verankert. Wir haben keine crossfunktionalen DevOps-Teams, aber die Zusammenarbeit zwischen Development und Technology Operations, welche die interne Virtualisierungsplattform bereitstellen, ist intensiv und darauf ausgerichtet die Entwickler immer autonomer werden zu lassen. In den Managed-Cloud-Projekten mit Kunden verstehen wir uns als echter DevOps-Partner und versuchen die Entwickler auf Kundenseite mit allen Tools und Prozessen zu unterstützen, damit eine moderne, agile Projektinfrastruktur entstehen kann.
Fazit: An DevOps führt kein Weg vorbei
Die Anforderungen an die IT wachsen weiter, vor allem in Bezug auf die Geschwindigkeit. Dabei stammen die Vorgaben selten aus der IT selbst, sondern werden aus Fachabteilungen oder durch das jeweilige Geschäftsmodell an Sie herangetragen. Gefordert sind schnelle Reaktionen auf Veränderungen, eine offene Sichtweise und ein vorausschauendes Tun und Handeln. IT-Teams, die gemeinsam, schneller und in kürzeren Taktzyklen liefern, sind für diese Anforderungen bestens aufgestellt. Dafür kann die Einführung der DevOps-Kultur hilfreich sein.
Im Vorteil sind Unternehmen, die agil starten und im ersten Schritt kleine, überschaubare Bereiche verändern. Zunächst sollten Erfahrungen in agilen Methoden gesammelt und die „traditionell“ gemanagte IT nicht generell und grundlos in Frage gestellt werden. Nicht jede traditionelle IT-Landschaft kann komplett auf agile Methoden umgestellt werden. Allen, die in der IT arbeiten, sollte bewusst sein: Ein System ist niemals fertig. Es muss sich entwickeln und bereit für Veränderungen sein.
Der Wettbewerb um den „Digital Customer“ ist in fast alle Branchen in vollem Gange. Nicht nur dass Kundenwünsche sich immer schneller verändern und stets Innovationen erfordern, auch Businessoperationen wie Zahlungsmethoden, Logistikwege oder der Zugang über mobile Endgeräte befinden sich in einer fortwährenden Transformation. IT-Teams, die gemeinsam, schneller und in kürzeren Taktzyklen liefern, sind für diese Anforderungen bestens aufgestellt. Wie gesagt: An DevOps führt kein Weg vorbei!