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.
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, Effizienz und reduziert Risiken. Die dabei erreichte höhere Transparenz und Feedbackmöglichkeit führen zu einer verbesserten Reaktionsfähigkeit. Das darf alles nicht auf Kosten der Qualität gehen.
DevOps ist das wahre Agile
Auch die agile Software-Entwicklung hat sich über die Jahre weiterentwickelt. Mit Scrum wurde zwar der Weg von der Anforderung in ausführbarer Software beschleunigt. Aber ohne zusätzliche Maßnahmen oder ein echtes Feedback aus der Produktion wird immer noch kein Nutzen generiert. DevOps ist der nächste größere Schritt, um Betrieb und Entwicklung enger zusammenzubringen und schneller auf Änderungen reagieren zu können.
Mit DevOps erhalten Unternehmen mehr Transparenz und Feedback über den gesamten Software-Entwicklungsprozess, da alle Ergebnisse und Schritte konsequent automatisiert und getestet werden. Damit können Änderungen schneller, sicherer und mit weniger Risiko vorgenommen werden. Noch wichtiger ist es Feedback dafür einzuholen, um Optimierungen durchführen zu können oder die Resilienz zu erhöhen. DevOps ist ein umfangreicherer Schritt zu einem kulturellen Wandel in der Software-Entwicklung und ein wichtiger Baustein auf dem Weg in die Cloud.
Für einen konsequenten Schritt hin zu Cloud-Anwendungen ist dieser jedoch unabdingbar. Nur Unternehmen, die DevOps wirklich leben, können Cloud-native Anwendungen und Services liefern.
DevSecOps ist keine Tool-Frage
Da das Thema Sicherheit gerade durch die Cloud immer wichtiger wird, machen traditionelle und nur temporäre Sicherheitstest am Ende der Lieferung keinen Sinn mehr. Diese müssen auch schon möglichst früh und automatisiert in allen Phasen der Entwicklung nicht nur beim Code, sondern auch an der Infrastruktur ausgeführt werden. Dafür haben die Beratungsfirmen Gartner und Forrester den erweiterten Begriff DevSecOps geprägt und dessen Erweiterungen beschrieben.
Gerade das Thema Sicherheit hat nicht umsonst in letzter Zeit eine hohe Aufmerksamkeit erreicht. Bestehende Verfahren für Sicherheits- und Integrationstests geraten 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 ein kontinuierlicher Betrieb in der Cloud möglich. Wie immer gilt die Regel: Vorsorgen ist besser als heilen. Gleiches gilt für die Infrastruktur. Es ist einfacher, diese automatisiert neu aufzusetzen, als sie zu reparieren - auch bekannt als Pets vs. Cattle.
Bei DevSecOps geht es nicht um Tools. Da auch die DevSecOps-Pipeline permanent gepflegt werden muss, ist es wichtig, dass die Änderungen vorher in einer Testumgebung getestet werden, bevor sie in der produktiven Umgebung verwendet werden. Die DevSecOps-Pipeline sollte wie ein produktives System behandelt werden und nicht wie am Anfang bei den CI-Systemen, die eher als Schattenprojekte entstanden sind. Hier kann eine gemanagte und integrierte DevSecOps-Suite, wie sie von GitHub oder GitLab angeboten werden, helfen, die Pflegeaufwände gegenüber einem Best-of-Breed-Ansatz zu minimieren.
Am besten, man verwendete gemanagte DevSecOps-Pipelines oder hat ein Plattformteam, das sich um die Pflege und den Betrieb dieser wichtigen Basisinfrastruktur kümmert. Dann können sich die Entwickler auf die Lösung von Business-Problemen konzentrieren und müssen sich nicht mit der Wartung von Infrastruktur herumschlagen, die ja nur Mittel zum Zweck ist.
Cloud-Provider bieten DevOps-Dienste
Da viele Anwendungen heute Cloud-Native entwickelt werden, bietet es sich an, die von vielen Cloud-Providern angebotenen gemanagten DevOps-Dienste zu verwenden. Sie sind bereits in die typischen Clouddienste der Providers gut integriert. Bei Multi-Cloud-Projekten ist allerdings ein Einarbeitungsaufwand in die unterschiedlichen Produkte unvermeidlich. Da GitHub oder GitLab sowohl on Premises als auch auf der Basis der meisten Cloud-Angebote zur Verfügung stehen, bedeutet das eine Vereinfachung: Überall kann die selbe Basis für alle Cloud-Projekte verwendet werden. Alternativ bieten die großen Cloud-Anbieter eigene DevOps-as-a-Service-Dienste an, die sich in deren Dienste nahtlos integrieren.
Der jährlich erscheinende State of DevOps Report zeigt eindrucksvoll, wie Unternehmen, die schon länger konsequent auf DevSecOps setzen, erhebliche Effizienz- und Qualitätsvorteile realisieren. Ihre Teams können durch die Bank schneller und häufiger liefern. Sie können auch unmittelbarer auf Fehlersituationen reagieren und das Feedback unter Live-Bedingungen in die Weiterentwicklung einfließen lassen.
Rezepte für erfolgreiche DevSecOps
Als Regeln für den erfolgreichen Einsatz von DevSecOps-Prinzipien und Werkzeugen lassen sich zusammenfassen:
Ziehe das Thema Sicherheit von Anfang (ShiftLeft) bis Ende (ShiftRight) durch.
Versuche möglichst viele Sicherheitstests über alle Phasen hinweg zu automatisieren.
Halte Deine DevSecOps-Pipeline einfach, sauber, aktuell und sicher.
Überwache Deine Softwarekomponenten kontinuierlich auf bekannte Schwachstellen.
Kenne Deine Abhängigkeiten und überprüfe sie regelmäßig (SBOMs).
Gieße Deine Sicherheitsrichtlinien in automatisiert ausführbare Prüfregeln.
Vertraue nur geprüften Quellen, fische nicht in trüben Gewässern.
Weniger Komplexitätführt zu mehr Qualität
Um flexibel, schnell und kostengünstig auf neue Anforderungen reagieren zu können, braucht man agile Prozesse und Werkzeuge. Nur wenn die Lieferketten robust sind, gilt das auch für die Systeme. Neuere Rahmenwerke, wie Supply-Chain Levels for Secure Artifacts (SLSA), OpenSSF Scorecard oder das NIST's Secure Software Development Framework (SSDF) geben hier Hinweise, wie man seine Software-Lieferketten absichern kann. Methoden wie Chaos Engineering oder Site Reliability Engineering (SRE) sind hilfreich. Setzen Sie die verschiedenen Deployment-Verfahren (Blue/Green, Canary, Rolling-Update) ein, um sowohl die Betriebs-infrastruktur, als auch die Anwendungsdienste mit wenig Risiko aktuell zu halten.
Im Gegensatz zu agilen Methoden lassen sich die Erfolge der Einführung von DevOps-Prinzipien durch das Messen von vier Hauptmetriken (Lead Time, Change Fail, Deployment Frequency, Time to Restore), aus dem Forschungsprogramm des DevOps Research and Assessment (DORA) sogar wissenschaftlich belegen. Viel wichtiger als die reine Beschleunigung ist es, kontinuierlich besser und sicherer zu werden.
DevOps - kurz gefasst
Um flexibel und schnell auf neue Geschäftsanforderungen reagieren zu können, müssen Entwicklung und Betrieb ihre Prozesse optimal 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 Softwareprozess identisch und ohne Brüche eingesetzt werden.
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 DevOps
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 aber Einigkeit darüber, dass sich mit DevOps eine effiziente und reibungslose 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: Als kulturelle Basis der Zusammenarbeit sind gegenseitiges Vertrauen, ein stetiger Informationsfluss und die ständige Bereitschaft zum Lernen wichtig.
Automation: Für eine erfolgreiche Umsetzung ist die Automatisierung bestimmter Arbeitsvorgänge unabdingbar. Sie betrifft einfache, wiederkehrende Tätigkeiten und geht bis zur Vollautomatisierung von Aufbau und Betrieb ganzer Umgebungen.
Lean: 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.
Measurement: 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 essenziell.
Sharing: 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 effiziente Zusammenarbeit und eine hohe Qualität der erzeugten Produkte. DevOps ist zwar selbst kein Werkzeug, jedoch bilden Software-Tools zur Automatisierung und zum Messen wichtige Bausteine bei der erfolgreichen Implementierung. Im Endeffekt geht es aber vor allem um die Menschen und die Art und Weise, wie sie zusammenarbeiten. Zum Weiterlesen empfehlen ich zu den organisatorischen Aspekten den Roman Projekt Phoenix und das DevOps-Handbuch.
Um den eigenen DevOps-Reifegrad zu bestimmen, ist außerdem das DASA DevOps-Kompetenz- und Skill Framework mit seinen 4 Skill- und 8 Wissensgebieten eine gute Basis. Es bietet auch herstellerunabhängige DevOps-Zertifizierungen an, um die für die unterschiedlichen Rollen benötigten Skills systematisch aufzubauen. Alternativ bieten die Cloud-Anbieter AWS und Microsoft Azure spezifische Zertifizierungen und Weiterbildungen zur Vertiefung an.
DevOps ist nicht einfach, es bedeutet einen Kulturwandel
Das lesenswerte DevOps-Handbuch von Jez Humble und Gene Kim, allgemein als Väter Bewegung anerkannt, beschreibt Best Practices und sinnvolle Metriken, um die Leistungsfähigkeit von DevOps zu messen. Humble und Kim haben neben vielen weiteren Büchern zum Thema auch eine wissenschaftliche Studie unter dem Namen Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations veröffentlicht. Sie basiert auf der Basis der jährlich stattfindenden Befragung des State of DevOps Report.
Die Ergebnisse haben es in sich: Sie zeigen, dass Teams, die konsequent DevOps umsetzen, nicht nur schneller und häufiger liefern, sondern auch kurzfristiger auf Fehlersituationen reagieren können. Die Performance-Lücke zwischen den Low- und High-DevOps-Performer-Teams wird über die Jahre noch größer, so dass die Guten noch besser werden und die Schlechteren eher stagnieren.
Die gute Nachricht ist, dass der Einstieg in DevOps gar nicht so aufwändig ist. Schwieriger ist es, dass damit verfügbare Potenzial kontinuierlich zu heben und keine Ressourcen zu verschwenden. DevOps hilft dabei, Software nicht nur auf Halde zu produzieren, ohne einen direkten Wert oder Feedback daraus zu generieren. Es hilft vor allem Software-Teams dabei, besser und sicherer bei Änderungen zu werden, so dass sie auf neue Anforderungen schnell und mit geringem Risiko reagieren können.
DevOps für mehr Zuverlässigkeit
Wenn Betrieb und Entwicklung schon frühzeitig zusammenarbeiten, können beide voneinander lernen. Dementsprechend müssen Freiräume geschaffen werden, in denen auch Fehler erlaubt sind. Auch muss es ausreichend Zeit und Ressourcen geben, um die Einführung einschließlich des erforderlichen Lernprozesses zu bewältigen. Tools sind dabei ein wichtiges Mittel zum Zweck. Unternehmen sollten ihre Beschäftigten bei deren Auswahl mitentscheiden lassen.
Im Idealfall bestimmen sie selbst über den Tool-Einsatz oder bedienen sich in den vom Plattformteam zur Verfügung gestellten Pipeline-Vorlagen. Die passenden Werkzeuge zur Erledigung der täglichen Aufgaben sorgen für Zufriedenheit. Je mehr das Unternehmen die DevOps-Kultur mitträgt, umso mehr wird sich die gesamte IT-Performance verbessern. DevOps beinhaltet nun einmal immer einen 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".
Bei DevSecOps handelt es sich um den nächsten logischen Weiterentwicklungsschritt von DevOps. Für DevSecOps gibt es inzwischen mehrere unabhängige Organisationen wie die Cloud Native Computing Foundation (CNCF), DORA oder DASA, die Standards und Best Practices weiterentwickeln, um die Verbreitung von DevSecOps zu fördern. 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.
Tool-Auswahl DevOps