DevOps_TitelbildSoftware entwickeln und dynamisch in den stabilen Betrieb überführen – das ist, wofür die DevOps-Strategie steht. Dabei handelt es sich um eine „End-to-End-Strategie“, die stark an die Prinzipien der agilen Organisation eines Unternehmens erinnert. Anders als die agile Organisation selbst ist DevOps aber ausschließlich für die Softwareentwicklung und den Softwarebetrieb gemacht. Was genau sich dahinter verbirgt, erfahren Sie in dieser Lektüre.

Dieser Artikel ist geeignet für: Jeden, dessen Arbeit nach den Prinzipien von DevOps organisiert ist und der – insbesondere als Softwareentwickler oder Administrator – Input zu Optimierungspotenzialen sucht. Dieser Artikel ist auch zu empfehlen, wenn Sie nicht mit DevOps arbeiten, sich aber ein Grundwissen dazu aneignen möchten.

Schwierigkeitsgrad:*1234

*Weite Teile des Artikels sind ohne Grundwissen verständlich. Um aber die Schnittstellen, insbesondere zu den Methoden des agilen Projektmanagements einordnen zu können, ist ein entsprechendes Grundverständnis dessen hilfreich. Wir empfehlen unsere Lektüre zum agilen Projektmanagement mit Scrum.

DevOps in Kürze + Definition

  • Definition: DevOps ist eine Arbeitsorganisation in der Softwareentwicklung, welche den Entwicklungsteil direkt mit dem Betriebsteil verbindet und so diverse Vorteile liefert.
  • Bei DevOps werden die Spezialisten aus Softwareentwicklung und -betrieb zur direkten Interaktion verbunden, wodurch die einen jeweils die Erwartungen der anderen kennen. Außerdem sind stets Prozessoptimierungen mit einer hohen Messbarkeit sowie der Einsatz von innovativen Tools und Werkzeugen vorgesehen.
  • Es gibt bei DevOps kein 100% stringentes Konzept, aber drei Eckpfeiler, die von zentraler Bedeutung sind – nämlich die Paradigmen der agilen Organisation und das agile Manifest sowie die Prozessoptimierungen und innovativen Werkezuge.
  • Als Projektmanagement-Methoden kommen in DevOps überwiegend Scrum und Kanban zum Einsatz – auch wenn dazugesagt werden muss, dass man bei Scrum eine Extramethode braucht, weil das Framework nur den Entwicklungsprozess (als Projekt) und nicht den Betrieb von Software abbildet.
  • Es gibt keine definierten Akteure in DevOps – eher bestehen die Teams aus den bekannten Rollen, die sich in den Bereichen der Softwareentwicklung und des Softwarebetriebs wiederfinden lassen. Gegebenenfalls empfiehlt es sich, einen davon unabhängigen Methodenexperten einzubinden, der die Einhaltung der allgemeinen Richtlinien von DevOps überwacht.

Warum ist die Arbeitsorganisation nach DevOps sinnvoll?

DevOps_AdministratorInsbesondere im Hinblick darauf, dass der Betriebsteil einer Software schon während der Entwicklung eine Rolle spielt, ist DevOps für die meisten Unternehmen im Softwareentwicklungsbereich sinnvoll. Schon bei der erstmaligen Entwicklung von Software und bei neuen Versionen wird der spätere Betriebsaspekt mit einbezogen. So ist beispielsweise eine gut organisierte und schnelle Überführung der Software aus dem Entwicklungsbereich in den Betriebsbereich sichergestellt. Eine hohe Betriebsstabilität sowie eine gute Wartbarkeit werden zu wichtigen Kriterien bei der Beurteilung der Produktionsreife. Sie sind Grundvoraussetzung für die Einführung einer neuen Software oder einer Softwareversion.

Gibt es konkrete Unterschiede zur normalen Organisation anstelle von DevOps?

In Softwareunternehmen, die DevOps nicht anwenden, ist der Softwarebetrieb für gewöhnlich von der Softwareentwicklung getrennt. Beide Bereiche arbeiten in ihrer straffen Organisation an ihren Aufgaben, haben aber bis auf die konkrete Softwareüberführung keine gemeinsamen Verbindungen. Bei DevOps verschmelzen die Teams dagegen, vergleichbar mit der Grundstruktur einer agilen Organisation. Das bedeutet, dass nicht mehr zwei strikt voneinander getrennte Abteilungen für den jeweils einen und anderen Bereich existieren, sondern dass die jeweiligen Spezialisten aus beiden Bereichen in einem Team zusammenarbeiten. Sie interagieren direkt miteinander und tauschen sich aus. Die Entwickler wissen, worauf es den Betreibern ankommt und andersherum.

Bei DevOps sind zudem stetige Prozessoptimierungen durchzuführen. Das Ziel ist, bessere Software mit umfangreicherer Funktionalität in kürzerer Zeit herzustellen. Es kommt ebenfalls zu einer schnelleren Taktung der Softwareversionen, also zu kürzeren Releasezyklen. Zur Erreichung der genannten Ziele werden innovative Technologien und Werkzeuge eingesetzt. Die qualitativen und quantitativen Verbesserungen sind durch zentrale Kennzahlen (Key Performance Indicators = KPIs) zu messen und transparent zu machen. Auf der Basis objektiver Fakten wird eine kontinuierliche Verbesserung angestrebt. Das gibt es in klassisch organisierten Softwareunternehmen ebenfalls nicht.

Kurzum bringt DevOps mehrere  prinzipiell unabhängige Konzepte zusammen:

  • Zusammenarbeit von Entwicklung und Betrieb in einer agilen Organisation mit dem dafür typischen kulturellen Wandel im Unternehmen
  • Paradigmen / Kultur der agilen Softwareentwicklung (meist mit den Methoden von Scrum und mit Minimum Viable Products)
  • Effizienzsteigerung von Prozessen mit hoher Messbarkeit dieser
  • Einsatz von innovativen Technologien und Werkzeugen

Wie sieht die Funktionsweise von DevOps aus?

Sehen Sie sich verschiedene Quellen an, dann werden Sie schnell feststellen, dass jede das DevOps-Konzept ein wenig anders beschreibt. Demnach scheint es nicht ein 100% stringentes Konzept zu geben. Wohl gibt es bei DevOps aber drei grundsätzliche Eckpfeiler, die als Quasi-Standard bezeichnet werden können.

Paradigmen aus der agilen Organisation

Agile Organisationen zeichnen sich durch  Merkmale aus, die auch bei DevOps eine tragende Rolle spielen. Das bedeutet im ersten Schritt, dass alle an der Softwareentwicklung und am Softwarebetrieb Beteiligten in einem gemeinsamen Team arbeiten. Das entstehende Team ist nach dem „End-to-End-Prinzip“ für die Software verantwortlich. Als Arbeitsergebnis stehen immer am Markt verwertbare Softwareprodukte im Fokus. Hierarchien gibt es bei der Ergebniserarbeitung keine, genauso keine Einflussnahme von anderen Organisationseinheiten. Stattdessen weist jedes einzelne Teammitglied einen hohen Grad an Selbstorganisation und Selbstverantwortung auf. Die DevOps-Organisationseinheit sollte idealerweise nicht mehr als zehn Leute umfassen. So ist eine einwandfreie Zusammenarbeit durch Selbstorganisation gegeben. Weitere relevante Paradigmen agiler Organisationen können Sie in diesem vertiefenden Artikel nachlesen.

Agiles Manifest als Ausrichtungsgrundlage

Abgesehen von der agilen Organisation, verpflichtet sich DevOps auch grundsätzlich dem agilen Manifest. Das Manifest definiert Werte, die bei der Entwicklung von Software und bei deren Bewertung zu berücksichtigen sind. Vereinfacht beschrieben, ist das agile Manifest ein in vier Eckpfeilern formuliertes Wertesystem:

  • Individuen und Interaktionen stehen über Prozessen und Tools
  • Funktionsfähige Software ist wichtiger als eine Software-Dokumentation
  • Eine Zusammenarbeit mit dem Kunden und die Berücksichtigung seines Feedbacks sind von großer Bedeutung
  • Auf Veränderungen ist schnell und effizient zu reagieren

Es geht darum, diese agilen Grundwerte des Manifests bei der täglichen Arbeit der Softwareentwicklung zu leben und zu konkretisieren. Sämtliche Prozesse, Organisationen und Werkzeuge müssen sich hieran orientieren.

Prozessoptimierungen und innovative Werkzeuge

Im Rahmen von DevOps werden die wesentlichen Abläufe hinsichtlich zentraler Kennzahlen wie Durchlaufzeiten, Fehlerraten und Kapazitätsbindung stetig weiterentwickelt. Zusätzlich werden innovative Werkzeuge zur weiteren Verbesserung eingesetzt. Diese Prozessoptimierungen, innovativen Werkzeuge sowie weitere typischerweise im Zuge von DevOps angewendeten Methoden sind Gegenstand des nächsten Abschnitts.

Welche Methoden und Tools sind unter DevOps empfohlen?

DevOps_Designer

Methoden in DevOps

Typische Methoden, die im Rahmen von DevOps eingesetzt werden, sind Scrum und Kanban. Wobei Scrum genau genommen als Projektmanagement-Framework und nicht als Methode zu bezeichnen ist. Wichtig ist zu betonen, dass keine der genannten und auch keine anderen Methoden im Rahmen von DevOps explizit vorgeschrieben oder genannt sind. Die Organisationeinheit bestimmt autark, wie und mit welchen Tools und Werkzeugen sie ihre Ergebnisse erarbeitet.

Scrum und Kanban sind als die bekanntesten agilen Projektmanagementansätze einschließlich der typischerweise in diesem Zusammenhang eingesetzten „Untermethoden“ (etwa das Planungspoker bei Scrum) empfehlenswert. Obwohl man betonen muss, dass Scrum nur auf die Neu- und wesentliche Weiterentwicklung einzelner Produktinkremente ausgerichtet ist – also nur auf den Entwicklungsteil der Software – und dass für den Betriebsteil daher noch eine weitere Methode erforderlich ist. Das kann eine standardisierte  oder auch eine Individuelle sein. Kanban ist wiederum für beide Teile von DevOps gut geeignet und erfordert keine Zweitmethode.

Tools und Werkzeuge in DevOps

Neben den Projektmanagementansätzen kommen noch Tools und Werkzeuge ins Spiel, die etwa bei der Inbetriebnahme der Software eingesetzt werden. Hier besteht im Fokus ein enormer Mehrwert. Fokussieren Sie sich auf einige wenige Tools und Werkzeuge und wenden Sie diese mit hoher Effizienz an. Geht es um die Auswahl neuer Tools und Werkzeuge, dann geht es zuerst um die Frage, „was man bei der Entwicklung der Software oder bei deren Betrieb grundlegend verbessern“ möchte. Auf Grundlage dessen wird entschieden, welche Deployment-Tools, Releasemanagement-Tools, Software-Testtools und anderen Werkzeuge in Zukunft einzusetzen sind. Dabei gilt eine Maxime: Entscheiden Sie sich für einen der Marktstandards. Denn hier gibt es laufend Software-Updates, umfassende Dokumentationen und vor allem viel Personal, das sich damit auskennt. Klare Empfehlungen für Tools und Werkzeuge werden in DevOps nicht angesprochen.

Technologien in DevOps

Containerisierung von Anwendungen: Container sind technologisch vollständige Umgebungen für den Betrieb und die Entwicklung von Anwendungen. Sie vereinen die IT-Services „Rechenleistung“, „Virtualisierung“ und „Betriebssystem“. Im Gegensatz zur Virtualisierung ist Containerisierung auch gut für Entwicklungssysteme geeignet und ermöglicht eine flexiblere Konfiguration des Betriebssystems. Ein Beispiel für einen Container ist Docker, was neben dem Betriebssystem auch noch eine Entwicklungsumgebung bereitstellt.

Automatisierte Testtools und automatisiertes Deployment: Automatisierte Testtools ermöglichen differenzierte und effizientere Softwaretests. Anstellle in Tools, können die Tests auch auf Codeebene erfolgen. Zudem sind Tests einzelner Komponenten sowie deren korrekten Zusammenwirkens denkbar. Beim Deployment soll eine exzellente Lösung in den Betrieb übergehen. Die automatisierten Tests helfen dabei, Fehlerquellen sofort zu entdecken und zu beheben. Beim Deployment selbst eignen sich Automatisierungen ebenfalls. Sie überführen Softwareupdates schnell in die gewünschte Umgebung. Ein Beispiel für eine in diesem Zusammenhang häufig eingesetzte Technologie ist Jenkins.

Auch automatisierte Releasemanagements, Orchestrationen und Monitorings sind denkbar.

BEST PRACTISE

KPIs und Wirtschaftlichkeit spielen bei DevOps eine zentrale Rolle. Aus diesem Grund sollten Sie zumindest einige der innovativen Technologien einsetzen. Zusätzlich besitzen Optimierungen zentraler Softwareentwicklungs- und Betriebsprozesse eine wichtige Bedeutung. Stets ist die Produktivität und der Fortschritt zentraler Prozesse zu messen und weiterzuentwickeln. Sollten die Messwerte schlecht ausfallen, ist zu überlegen, ob DevOps tatsächlich eine gute Herangehensweise in Ihrem Unternehmen ist beziehungsweise wo noch etwas wesentlich zu verändern ist. Nebenbei nimmt dadurch ganz automatisch auch die Qualität der Software zu.

Wer sind die Akteure bei DevOps?

Bestimmte Rollen und Akteure werden in DevOps nicht explizit benannt. Es sind alle Mitarbeiter im DevOps-Team zusammenzufassen, die sich mit der Entwicklung und mit dem Betrieb von Software beschäftigen. Das können folgende Profile sein:

  • Software-Ingenieure
  • Softwareentwickler
  • Softwaretester
  • Software-Administratoren
  • IT-/Solutions-Architekten
  • Datenbank-Administratoren
  • Support-/Helpdesk-Mitarbeiter
  • „Angrenzende Profile“ wie etwa IT-Sicherheits- und Netzwerkexperten

Ähnlich wie bei Scrum mit dem Scrum Master (Übersicht zu allen Scrum-Akteuren) ist es sinnvoll, zumindest zu Beginn, einen Methodenexperten einzubinden, der sich mit DevOps im Detail auskennt und das Team in die Organisationsform hineinlotst. Der Methodenexperte hat die grundsätzliche Aufgabe, die im Rahmen von DevOps anzuwendenden Regeln festzulegen, das Team mit ihnen vertraut zu machen sowie zu überwachen, dass die Regeln eingehalten werden.

Fazit

Sofern Sie DevOps konsequent einsetzen, zahlt sich die Organisationsstrategie im Bereich der Softwareentwicklung typischerweise voll und ganz aus. Die Grundziele bestehen in der schnelleren Entwicklung von Software-Releases, besserer Software-Funktionalität sowie der Betriebsoptimierung dieser Software. Geeignet ist DevOps allerdings nur dann, wenn sich die Softwareentwicklung in viele, agil zu erarbeitende Releases aufteilen lässt. Bei Software, die wenige und stark zu kontrollierende Releases erfordert – so wie es beispielsweise bei Finanzsoftware oder Luftfahrtsoftware der Fall ist – eignet sich DevOps häufig nicht oder es eignen sich nur einige Teilbereiche hiervon. Denn diese Arten von Software erfordern eine hohe Planbarkeit, das Ergebnis muss eine hohe Konstanz und Fehlerfreiheit aufweisen. Bei den letztgenannten Softwaretypen herrscht sogar eine Null-Fehlertoleranz. Eine Null-Fehlertoleranz ist mit einem agilen Prozess nicht erfüllbar. Von daher sollten Sie in diesem Fall von DevOps absehen.