DevOps - Definition und Anwendung

Die Vorteile von DevOps in der Praxis

Uhr | Updated
von Markus Speth, Chief Marketing Officer, VSHN

DevOps steht für eine neue Kultur und Herangehensweise in der Zusammenarbeit von bis dato getrennten Abteilungen. Development (Softwareentwicklung) und Operations (IT-Betrieb) ziehen an einem Strang, um die Softwarequalität und die Verfügbarkeit zu erhöhen und damit die Kundenzufriedenheit zu steigern.

Markus Speth, Chief Marketing Officer, VSHN. (Source: zVg)
Markus Speth, Chief Marketing Officer, VSHN. (Source: zVg)

In einer Welt, in der Software immer wichtiger wird, hängt der Erfolg eines Unternehmens zunehmend davon ab, wie schnell Software entwickelt und bereitgestellt werden kann. Die technologischen Möglichkeiten entwickeln sich rasant, sind für jeden zugänglich und internationale Entwicklungsteams stehen auf Abruf bereit – wie kann man sich also im Wettbewerb noch abheben? Ausschlaggebend ist heute, wie gut ein Unternehmen seine Zielgruppe kennt und wie es durch schnelle Iteration die Kundenbedürfnisse besser und schneller befriedigt als die Konkurrenz. DevOps kann hierfür ein Wegbereiter sein.

Was ist DevOps?

DevOps ist ein schillernder Begriff, aber oft ähnlich vage wie "Cloud" oder "Container". Jeder versteht etwas anderes darunter, und teilweise wird DevOps schon inflationär oder einzig zu Marketingzwecken verwendet. Die Mehrheit ist sich jedoch einig darüber, dass DevOps im Mainstream angekommen ist. Ganz grundsätzlich ist DevOps ein Kunstwort aus "Development", also der Softwareentwicklung, und "Operations", dem IT-Betrieb beziehungsweise der Systemadministration. DevOps steht symbolisch für eine neue Kultur von zusammenarbeitenden Abteilungen, die historisch eher unterschiedliche Ziele verfolgten: Die Softwareentwicklung muss agil, kreativ und am Puls der technologischen Entwicklung sein, um ständig neue Features liefern zu können. Im Gegensatz dazu ist der IT-Betrieb auf Stabilität, Sicherheit und Verlässlichkeit ausgerichtet. DevOps versucht nun genau diesen scheinbaren Widerspruch zwischen Agilität und Stabilität zu vereinen. Als logische Weiterentwicklung der agilen Softwareentwicklung soll durch DevOps die gesamte Wertschöpfungskette interdisziplinär mit einbezogen werden. DevOps soll bestehendes Silo-Denken aufbrechen.

DevOps besteht aus Prozessen, Tools und Kulturkomponenten, wobei es in erster Linie auf die Menschen ankommt. Eine DevOps-Kultur muss gelebt werden. DevOps kann nicht "eingekauft" werden, weder durch die Nutzung von Tools, Einführung neuer Prozesse oder das Einstellen eines DevOps Engineers. DevOps ist die interdisziplinäre Zusammenarbeit, nicht nur von Dev und Ops, sondern von allen am Produktlebenszyklus beteiligten Parteien wie Product Owner, Scrum Master, Testing und Security. Die gesamte Organisation muss dazu beitragen. Ohne engagierte Menschen, die aus dem Denkmuster "Sysadmin vs. Programmierer" ausbrechen, ist es nicht möglich, eine DevOps-Kultur im Unternehmen zu etablieren. Dazu braucht es Leader, die die Kooperation und Zusammenarbeit zwischen den Teams fördern. Das Management muss die Vorstellungen teilen und sie vorleben. DevOps ist eine Philosophie beziehungsweise holistische Herangehensweise – keine Methodologie, kein Management-Framework, das einfach über eine bestehende Organisation gestülpt werden kann.

Wer profitiert von DevOps?

DevOps betrifft alle Sektoren und ist nicht nur auf die reine Softwareentwicklung beschränkt. Viele traditionelle Wirtschaftszweige unterstützen heute ihr Kerngeschäft durch Software: Egal ob Banken, Versicherungen, Handel oder Industrie – die Digitalisierung macht vor keiner Branche halt. Ist der Kunde glücklich, ist es auch das Team, der einzelne Mitarbeiter und letztlich auch das Unternehmen. Am Ende profitieren also alle von DevOps.

Eine DevOps-Kultur, die auf Zusammenarbeit und Automatisierung setzt, sorgt nicht nur für Konsistenz und Planbarkeit und eine schnellere Code-Bereitstellung bei gleichzeitiger Erhöhung der Code-Qualität. Auch die Problemlösung profitiert von DevOps. Bugs und Ausfälle werden durch DevOps zwar nicht verhindert, aber durch ein gemeinschaftlich und lösungsorientiert arbeitendes Dev­Ops-Team und einen ausgereiften Automatisierungsgrad wird die Fehlersuche und Problemlösung um ein Vielfaches effizienter und schneller, wodurch die Kosten eines Ausfalls sinken. DevOps steht für den Lean-Gedanken von Continuous Improvement und einer bewussten und aktiven Feedback-Kultur. Fehler dürfen gemacht werden, um die Zusammenarbeit und Prozesse kontinuierlich zu verbessern. Die Softwareentwicklungs- und IT-Betriebsabteilung tragen gemeinsam die Verantwortung für die Bereitstellung der Applikation.

Herausforderungen von DevOps

Die grössten Probleme bei der Einführung von DevOps gibt es, wenn die Wichtigkeit der Firmenkultur unterschätzt oder DevOps nur als Schlagwort genutzt wird, um den "Output zu erhöhen", was schlussendlich zu höheren Burnout- und Fluktuationsraten führen kann. Das Ändern der Denkweise ist immer der schwierigste Teil einer organisatorischen Änderung und oft auch der Grund, dass die Initiative scheitert. Eine Herausforderung liegt schon in der Überzeugungsarbeit: Wie können die Entscheidungsträger über den tatsächlichen Return on Investment bei der Anwendung von DevOps überzeugt werden?

Reibungspunkte entstehen insbesondere zwischen DevOps und:

  • Closed Source Software-Stacks

  • stark regulierten Industrien

  • hochgradig hierarchischen Organisationsmodellen (mit "Befehlsketten"-Mentalität)

  • vor allem der Tradition: ITIL, Six Sigma, Capability Maturity Model (oder "immaturity"), ISO 20000, "Not-invented-here"- oder "Haben-wir-schon-immer-so-gemacht"-Syndrom, Wasserfall-Projektmanagementmethoden (also "klassische" Methoden)

Der grösste Fehler, den man im Zusammenhang mit DevOps jedoch machen kann, ist, sich nur auf einen oder zwei Aspekte von DevOps zu konzentrieren und nicht auf alle drei gleichzeitig: Prozesse, Tools und Kultur.

  • Prozess-Herausforderungen: Es besteht eine umgekehrte Korrelation zwischen hochgradig regulierten Branchen (Finance, Gesundheitswesen) und dem Grad des Vertrauens, das den Entwicklerteams entgegengebracht wird; dies hat eine direkte Auswirkung auf jede DevOps-Initiative. Je stärker reguliert wird, desto weniger Vertrauen wird den unteren Hierarchieebenen entgegengebracht.

  • Tooling-Aspekt: Proprietäre (Closed Source) vs. Open Source Software: Es besteht eine Spannung, wenn Teams nicht in der Lage sind, alle Probleme in ihrem Tech-Stack zu lösen und sich auf einen Anbieter mit längeren Release-Zyklen verlassen müssen.

  • Kultur: "Blame game" hat in zweierlei Hinsicht direkte Auswirkungen, sowohl auf Observability als auch die Qualität des Endprodukts.

Die kulturellen Aspekte von DevOps haben auch starke regionale Ausprägungen und werden oft bei der Einführung nicht berücksichtigt. Insbesondere die Risikobereitschaft ist für DevOps von zentraler Bedeutung. Diese ist in der Schweiz niedriger ausgeprägt als zum Beispiel in den USA und muss jedoch auch durch eine "Blameless"-Kultur unterstützt werden, also eine Kultur, in der nicht für jeden Fehler einen Sündenbock gesucht wird.

So wie "Agile" nicht nur ein morgendliches Stand-up-Meeting bedeutet, ist "DevOps" nicht nur eine CI/CD-Pipeline. Bei DevOps dreht sich alles um schnellere Releases und damit dies funktioniert, ist die Kommunikation und Zusammenarbeit zwischen den Abteilungen entscheidend. Entwickler, Software-Architekten, DevOps Engineers, SRE's, Produktmanager, Marketing und Sales müssen zusammenzukommen und bereit sein, den Status Quo aufzugeben, sich zu ändern und auch Aufgaben zu übernehmen, die zuvor nicht im jeweiligen Verantwortungsbereich lagen. Ein Beispiel wäre der Software-Entwickler, der künftig auch Verantwortung für den Betrieb von Software übernimmt.

DevOps in der Praxis

Eine funktionierende DevOps-Organisation zeichnet sich in der Praxis durch häufige und schnelle Releasezyklen, automatisierte Deployments (inklusive automatische Rollbacks bei Bedarf) sowie Continuous Integration und automatisiertes Testing aus. Das Idealbild ist eine vollautomatisierte Pipeline ohne die Notwendigkeit des manuellen Eingreifens. Wichtig dabei ist auch, dass das Management die Teams mit der Autorität ausstattet, autonom Entscheidungen treffen zu können, ohne auf ein "Go" warten zu müssen. Ein praktisches Beispiel ist Selfservice: Der Entwickler kann sich bei Bedarf selbst eine Entwicklungs- oder Testumgebung bereitstellen, ohne auf die IT-Administration warten zu müssen. Die grösste Hürde für die Zusammenarbeit von Teams liegt oft in den festgefahrenen Vorgehensweisen und in der "Macht der Gewohnheit". In solchen Fällen benötigt es viel Überzeugungsarbeit und Zeit, bevor eine DevOps-Kultur Einzug halten kann. Man muss sich nur vorstellen, wie sich ein Unternehmen auch kulturell ändern muss, damit es sich von wenigen Software-Releases im Jahr durch den Einsatz von Continuous Delivery hin zu täglichen oder gar stündlichen Releases weiterentwickeln kann. Die Softwarebereitstellungszyklen werden durch Continuous Integra­tion / Continuous Delivery (CI/CD) immer kürzer, da Produktionspipelines zunehmend durch Microservices und Cloud-Native-Umgebungen skaliert werden können. Fehler werden idealerweise bemerkt, bevor diese in die Produktion gelangen. Je früher in der Kette ein Fehler gefunden und behoben wird, desto günstiger ist die Fehlerbehebung. DevOps-Prinzipien und Automatisierung ermöglichen das zum Beispiel durch die Nutzung mehrerer Testumgebungen.

Die aktuell erfolgreichsten Produktfirmen wie Netflix deployen ihre Applikationen mehrere hundert bis tausend Mal pro Tag. Ausfälle können nicht verhindert, aber von vornherein eingeplant werden, um von ihnen zu lernen. Durch den Einsatz von Chaos Engineering, das heisst dem absichtlichen und zufälligen Beenden von Servern und Prozessen auch in der Produktion, hat Netflix die Stabilität und Robustheit seines Services signifikant erhöht. Der Serverausfall wird als Selbstverständlichkeit angesehen und mit in die DNA des Dienstes eingebaut. Ohne eine ausgereifte und flächendeckende DevOps-Mentalität in der gesamten Organisation wäre es unmöglich, Software in dieser Geschwindigkeit und Qualität liefern zu können. Auch in der Schweiz sind Softwarefirmen auf dem Vormarsch, die durch eine gelebte DevOps-Praxis ihre Applikationen stetig verbessern und ihre Kunden in den Vordergrund stellen. Beispielsweise Sherpany mit seiner Software für Führungs- und Vorstandssitzungen oder Amazee.io, das mit Lagoon ein modernes Docker-Build- und Deployment-System für Kubernetes und Openshift entwickelt hat.

Fazit

Im Gegensatz zu Agile geht DevOps über den Entwicklungsteil hinaus und hat die gesamte Wertschöpfungskette im Visier: DevOps-Teams tragen die Verantwortung für ein Produkt über den gesamten Lifecycle hinweg. DevOps hilft zu skalieren und trotzdem flexibel zu bleiben und bietet eine Vielzahl quantifizierbarer Vorteile wie kürzere Entwicklungszyklen, erhöhte Deploymenthäufigkeit und eine schnellere Time-to-Market.

Doch DevOps ist nicht nur dazu da, die Software­entwicklung durch Erhöhung des Automatisierungsgrads und Steigerung der Effizienz und Agilität zu beschleunigen. DevOps kann Enabler des kulturellen Wandels einer Organisation sein und Zusammenarbeit, Arbeitsklima und Motivation insgesamt verbessern. DevOps steht für Kollaboration, Flexibilität, Agilität und die Konzentration auf den gemeinsamen Geschäftserfolg: zufriedene Nutzer, marktgerechte Produkte und langfristig motivierte und loyale Mitarbeiter.

Tags
Webcode
DPF8_162614