Es wird oft darüber gesprochen, dafür umso seltener umgesetzt - seit der ersten DevOps Konferenz, den DevOpsDays im Jahr 2009, soll das Konzept die Verbindung zwischen der Softwareentwicklung (Development) und der Systemadministration (Operations) herstellen. Doch ein Konzept alleine bringt noch keinen Nutzen. 80% der von Gartner in einer aktuellen Studie betrachteten DevOps-Projekte enden derzeit mit Frust und Ernüchterung. Wie kann DevOps also effektiv eingesetzt und nach ersten Rückschlägen wieder in Schwung gebracht werden?
Dabei kann es zunächst helfen, sich vor Augen zu halten, was DevOps nicht ist. DevOps ist kein Tool, keine eigene Software, keine neue Abteilung und kein neues Team, aber auch keine Philosophie und keine leere Worthülse. DevOps ist eine Zielsetzung für die IT-Abteilung, die die Unternehmenskultur betrifft und somit aktives Change Management erfordert.
Wer sich jetzt noch einmal motivieren und besinnen muss, warum man sich überhaupt mit DevOps beschäftigen sollte, findet im Folgenden die zentralen Vorteile. Wer bereits mittendrin ist, springt einfach zum nächsten Abschnitt.
Software kann schon lange nicht mehr isoliert betrachtet werden, unterschiedliche Teams aus den verschiedensten Bereichen wie beispielsweise Hardware und Elektronik arbeiten zusammen, um ein System, das wiederum Teil eines Systems (Systems of Systems) sein kann, zu entwickeln. Ziel ist die schnelle Umsetzung einer qualitativ hochwertigen Lösung. Agilität in der Softwareentwicklung verspricht kontinuierliche Produktinnovation und kürze Releasezyklen bei der Auslieferung. Diese Kontinuität soll nicht nur bis zur Auslieferung der Software, sondern bis zur Installation und Inbetriebnahme gewahrt werden. Rückmeldungen aus der Systemadministration an die Entwicklung ermöglicht so, das Verhalten und den Einsatz der Lösung besser zu verstehen und gegebenenfalls weitere Anpassungen und Erweiterungen vorzunehmen. Ein Kreislauf entsteht.
Die Idee von DevOps setzt genau hier an. Es geht um eine enge Verknüpfung zwischen Entwicklung und Betrieb, um eine schnelle Umsetzung und Fehlerbehebung, sowie eine schnelle Auslieferung und Inbetriebnahme zu gewährleisten. Werkzeuge, die diesen Prozess unterstützen können, von Continous Integration über Continous Delivery, gibt es viele. Aber bei DevOps geht es um viel mehr, als nur die Einführung eines Werkzeuges. Genau deshalb empfehlen sich die folgenden fünf Tipps.
Die erfolgreiche Einführung von DevOps beginnt bei den Mitarbeitern. Die Einführung neuer Methoden und Arbeitsweisen bedeutet ein Umdenken und eine extreme Veränderung. Dabei ist es wichtig, alle Beteiligten entsprechend zu trainieren. Der Wissensaustausch zwischen den unterschiedlichen Teams ist ein zentraler Bestandteil. Durch Offenheit und Transparenz können Synergien genutzt und so die Prozesse optimal angepasst und eingesetzt werden. Auch das Einbeziehen weiterer Abteilungen, wie beispielsweise aus dem Bereich Sicherheit, erhöht die funktionsübergreifende Zusammenarbeit und fördert den Grundgedanken der engen Verzahnung der einzelnen Teams. Also lieber eine Besprechung mehr einplanen und vor allem zu Beginn der Umsetzung Zeit nehmen, um die gemeinsamen Ziele und potentielle Bedenken zu besprechen.
Um die Zusammenarbeit der einzelnen Teams zu stärken, gibt es unterschiedliche Ansätze. So können beispielsweise Mitarbeiter aus den Bereichen Entwicklung und Systemadministration zu einem Team verschmolzen werden, um so ihr Know-how gegenseitig optimal zu teilen. Oder es entstehen neue Teams, die als Schnittstelle fungieren und Erfahrung aus beiden Bereichen haben. Welcher Weg der richtige ist, muss jedes Unternehmen für sich entscheiden. Matthew Skelton beschreibt in seinem Blog unterschiedliche Modelle zur Zusammenarbeit.
Neben der Definition zur Zusammenarbeit gehört auch die Nutzung von etablierten Methoden, wie beispielsweise SCRUM, um den Entwicklungsprozess zu beschleunigen. Meistens wird für die Entwicklung von Software auf agile Methoden zurück gegriffen, bei der kompletten Entwicklung eines Produktes ist das eher selten der Fall. Zur kontinuierlichen Entwicklung und Inbetriebnahme gehören jedoch viele Komponenten aus den unterschiedlichsten Bereichen. So braucht beispielsweise die Software auch entsprechende Hardware, auf der sie performant laufen kann.
Eine durchgängige Toollandschaft zur Unterstützung von DevOps unterstützt die Mitarbeiter in ihren täglichen Aufgaben. Da Software zunehmend in der Cloud in Betrieb genommen wird, stellen Cloud-Anbieter inzwischen auch spezifische Werkzeuge für Continous Integration und Delivery zur Verfügung. Frühe Validierung, beispielsweise durch Simulation von Software- oder Systemmodellen und der spätere Abgleich mit den Livedaten von Prototypen oder aus dem Betrieb, helfen ebenfalls, eine kontinuierliche Verknüpfung zwischen Administration und Entwicklung zu schaffen und so gewonnene Erkenntnisse aus dem Betrieb wieder zurück fließen zu lassen.
Bei der Einführung neuer Arbeitsweisen und Methoden, ist es empfehlenswert, durch zuvor definierte Messgrößen zu überprüfen, ob und wie erfolgreich die Einführung war. Nicht zuletzt um auch Kritiker zu überzeugen. Die KPIs für DevOps sind beispielsweise die Betriebskosten, Releasezyklen von der Auslieferung bis zum Betrieb oder die Qualität, die durch die Anzahl der Tickets ermittelt werden kann.
In Zeiten von zunehmender Cyperkriminaliät gewinnt das Thema Sicherheit immer mehr an Bedeutung. Mechanismen zur Vermeidung von Angriffen sind wichtiger denn je. Die zu entwickelnde Software sollte gezielt getestet und auf Schwachstellen überprüft werden. Die Reise ist somit bei DevOps nicht zu Ende - um schneller und wettbewerbsfähiger am Markt zu interagieren, sollte auch das Thema Sicherheit in den Prozess miteinfließen, man spricht von Development, Security und Operations, kurz DevSecOps.