Auf gute Zusammenarbeit 20.04.2017, 00:00 Uhr

Ein Ziel für Dev und Ops

Vertrauen, Kommunikation und Zusammenarbeit bringen das Projekt zum gelungenen Abschluss.
(Quelle: dotnetpro)
Willst in der Öffentlichkeit du was platzieren, schaff ein Kunstwort, und es wird funktionieren. Nach diesem Motto scheint auch der Begriff ­DevOps entstanden zu sein. Er bezeichnet ein Zwitterwesen, das aus ­einem Teil Entwickler und einem Teil Administrator besteht.
Dabei steckt eine fundamentale Manifestation derzeitiger Entwicklungsvorgehensweisen dahinter: Agile Techniken erfordern während des gesamten Entwicklungsprozesses die Einbeziehung des Kunden.
Nach jedem Sprint soll er dem Entwicklungsteam – dem Dev-Anteil des Begriffs – Feedback geben: Was passt schon? Wo sind noch Änderungen nötig. Damit der Kunde das aber beurteilen kann, muss die Lösung in Betrieb genommen werden. Hier kommt der Ops-Anteil des Kunstworts ins Spiel: Installation und Betrieb liegen schon seit jeher im Aufgaben- und Verantwortungsbereich der Administratoren.
Unabhängig vom technischen Kontext, der mit der Definition von DevOps leider viel zu oft in Verbindung gebracht wird, geht es bei DevOps jedoch um mehr, als nur Automatisierungen durchzuführen und moderne Technologien einzusetzen.
IT-Abteilungen, die das DevOps-Konzept einsetzen wollen, sollten primär ein gemeinsames Ziel in den Fokus rücken und die folgenden zwei Hauptsäulen beachten: Kollabora­tion und Prozessdenken (Bild 1).
Die zwei Schwerpunkte innerhalb der DevOps-Kultur: Kollaboration und Prozessdenken. Elementare Bestandteile sind hierbei vor allem eine offene und transparente Kommunika­tion sowie das gemeinsame Ziel, Mehrwert für Kunden und Anwender zu generieren (Bild 1)
Quelle: Autor
Ob Unternehmen mit DevOps erfolgreich sind, hängt maßgeblich davon ab, ob es ihnen gelingt, DevOps als eine Art Kultur im Unternehmen zu verankern. Das Verantwortungsbewusstsein eines Administrators und Entwicklers endet zum Beispiel nicht dort, wo die Virtual Machine (VM) erstellt, bereitgestellt sowie der Code geschrieben und getestet wurde.
Vielmehr muss eine Sensibilisierung der jeweiligen Rollen erfolgen. Dies bedeutet, dass der Entwickler sich schon während der Entwicklung Gedanken machen sollte, wo sein Code deployt werden muss und mit welchen Abhängigkeiten dies einhergeht.
Ein Entwickler, der von DevOps geprägt ist, wird sich nicht mehr nur mit dem Testen seines Codes beschäftigen, sondern darüber hinausdenken. Klassische Denkmuster wie zum Beispiel „Code geschrieben, getestet und fertig“ bringen kaum jemandem einen richtigen Mehrwert.
Auf dem Weg zu mehr Agilität müssen auch Administratoren weiterdenken. So sollten sie sich aktiv mit Entwicklungs- und Deployment-Verfahren auseinandersetzen und über den Tellerrand schauen.
Oft hängt der Erfolg einer produktiven DevOps-Arbeitsweise maßgeblich davon ab, wie schnell und sicher Anpassungen und Weiterentwicklungen an bestehenden Infrastrukturen und Software-Architekturen realisiert werden können.

Die Kluft zwischen Dev und Ops

Seit Anbeginn der IT-Ära gibt es diese Zweiteilung: Die eine Seite bilden die Administratoren, welche die Server bereitstellen, die IT-Infrastruktur absichern und die Grundlage dafür schaffen, dass Software gehostet werden kann. Auf der anderen Seite stehen die Softwarenentwickler, die primär für das Realisieren von professionellen Software-Archi­tekturen sowie deren Weiterentwicklung verantwortlich sind.
Zumeist läuft der klassische Übergangsprozess so ab, dass der Entwickler seinen Code auf seiner Entwicklungsumgebung programmiert, testet und anschließend dem Administrator zum Deployment übergibt.
Vor allem in dieser Situation kommt es oft zu Differenzen, wenn das Zusammenspiel zwischen Software und Infrastruktur technisch nicht optimal funktioniert. Schnell suchen beide Seiten Gründe und Fehler bei der jeweiligen anderen Rolle. Dabei wäre es zielführender, sich vorher gemeinsam ein Bild zu verschaffen, wo die Ursachen für ein fehlerhaftes Zusammenspiel liegen könnten.
Der Grundgedanke von DevOps sieht vor, ein großes Stück Vertrauen im Hinblick auf alle anderen Beteiligten zu generieren, und ebenso Vertrauen in sich selbst. Gegenseitiges Vertrauen stärkt die Motivation und fördert darüber hinaus den Respekt füreinander. Dieses Zusammenspiel aus Vertrau­en, Respekt und Verständnis ist die Grundlage einer erfolgreichen und vor ­allem erfolgreich agilen Vorgehensweise.

Aus Fehlern und Experimenten lernen, um die Qualität zu steigern

Sobald Fehler aufkommen, sei es in der klassischen Entwicklung oder im Aufsetzen oder Betreiben der Server-Infrastruktur, beschäftigen sich die Betroffenen zumeist neben der Lösungsfindung gern auch mit der Suche nach dem Verantwortlichen.
Irgendjemand muss schließlich für den Fehler verantwortlich sein und darauf hingewiesen werden, dass der Fehler nicht wieder auftreten darf, und vor allem darauf, dass man selbst ja nicht für den Murks verantwortlich ist.
An diesem Punkt erweist sich DevOps als hilfreich. DevOps hilft, nicht das Negative und die als Person Verantwortlichen in den Vordergrund zu stellen, vielmehr rückt es das eigentliche Problem in den Fokus.
Fehlerursachen können vielseitig sein, ein Fehler entsteht aus Versehen, aber auch aus Fahrlässigkeit oder fehlendem Know-how.
In jedem Fall sollte es eine offene und tolerante Fehlerkultur im Unternehmen geben. Die Verantwortlichen sollten sich darauf besinnen, dass Fehler zum Lernprozess dazugehören und letztlich helfen, die Qualität zu verbessern.

Feedback und Kommunikation

Neben den technischen Optimierungen durch Automatisierung der Build-, Betriebs- und Testprozesse kann ein Mehrwert nur dann entstehen, wenn es den Beteiligten gelingt, die Kommunikation zu optimieren und eine offene sowie kon­struktive Feedback-Kultur zu etablieren.
Dadurch lassen sich die internen Abläufe, die Zusammenarbeit untereinander und die Reaktionsfähigkeit gegenüber neuen Kundenanforderungen verbessern.
Entwickler und Administratoren sollten näher zusammenrücken und einen breiten Konsens finden. Sie sollten das gemeinsame Ziel fokussieren, ein „Projekt erfolgreich durchzuführen“ oder „Kunden zufriedenzustellen“.
Eine Sensibilisierung für die jeweils andere Rolle sorgt dafür, ein eigenes Verständnis für diese zu bekommen.
Die Bereitschaft und Motivation, auch über seinen eigenen Aufgabenbereich beziehungsweise Tellerrand hinauszublicken, muss aber tatsächlich von den einzelnen Beteiligten selbst kommen, dafür gibt es (noch) kein Konzept.
Intensiver miteinander zu reden und offen Feedback zu Handlungen und Fehlern zu geben kann das gemeinsame Arbeiten optimieren.

Lernphase DevOps für jede Rolle individuell

Um zu verstehen, welche nachhaltigen Mehrwerte die Dev­Ops-Kultur und -Praktiken mit sich bringen, ist es notwendig, dass sich Administratoren und Entwickler nicht nur (menschlich) verstehen, sondern sich auch technologisch austauschen. DevOps ist viel mehr als nur Anforderung, Entwurf und automatische Deployments.
Viel mehr geht es um Abhängigkeiten im Betrieb und bei der Weiterentwicklung und darum, welche Notwendigkeiten auf Seiten der Entwicklung und Administration entstehen, um den Gesamtprozess zu optimieren.
Konkrete Fragestellungen aus Entwicklersicht könnten zum Beispiel folgende sein: Welche Informationen benötigt der Admin, um seinen Job zu machen?
Ein weiterer Schritt wäre hier, sich aktiv mit den Aufgabenstellungen des Administrators auseinanderzusetzen, um zu verstehen, welche Arbeitsschritte notwendig sind.
Ebenfalls hilft es dem Admin, wenn er sich mit dem Code auseinandersetzt, den der Entwickler realisiert. Was bewirkt die Software auf den Systemen? Wie können Administratoren und Entwickler gemeinsam dafür sorgen, dass Infrastruktur und Software ideal zusammenarbeiten?
Die besten Voraussetzungen für den Erfolg eines DevOps-Prozesses haben Unternehmen, die auf etablierte Administratoren und Entwickler mit breitem technologischen Background sowie hoher Motivation für die eigene Weiterentwicklung in ihren IT-Abteilungen zählen können.
Denn schwierig gestaltet sich vor allem der Wunsch vieler Unternehmen, schon sogenannte DevOps-Engineers einzustellen, die Prozesse, Automatisierung und Technologien optimieren. Tatsächlich sollte es solche Rollen eigentlich gar nicht geben.
Um einen DevOps-Prozess erfolgreich etablieren zu können, sind Spezialisten in ihren jeweiligen Fachgebieten notwendig. Diese sollten zudem eine gewisse Hingabe verspüren, die jeweils andere Rolle zu hinterfragen beziehungsweise zu verstehen.
Um Agilität und Flexibilität in Form von schnelleren Reaktionsfähigkeiten und Entwicklungspotenzial zu optimieren, sollten die Beteiligten bestehende Prozesse und Arbeitsweisen stets infrage stellen und diese kontinuierlich weiterentwickeln.

Management und DevOps

Vertrauen und Respekt sollte jedoch nicht nur zwischen den operativ beteiligten Administratoren und Entwicklern bestehen, sondern auch zwischen Management und DevOps-­Akteuren.
Vor allem Geschäftsführer, IT-Leiter und Entscheider sollten ihr Vertrauen gegenüber den Beteiligten offen aussprechen und ihre Unterstützung anbieten. Ein großer Vorteil besteht dadurch vor allem in der höheren Motivation sämtlicher involvierter Personen. Auch höhere Privilegien und Entscheidungsvollmachten können bestimmte Prozesse und Entwicklungen positiv beeinflussen.
Ein schönes Beispiel ist hierfür das Bild eines Bootes, in dem sämtliche Mitarbeiter der IT-Abteilung sitzen, inklusive IT-Leiter und Management. Wenn alle Beteiligten im selben Takt und mit derselben Kraft rudern, bewegt sich das Boot leichter und schneller vorwärts.
Auch bei einem Fehler oder einer Störung ist es, um bei dem Beispiel mit dem Boot zu bleiben, erst einmal egal, wer das Leck im Boot verursacht hat.
Das primäre Ziel sollte es sein, dass alle gemeinsam das Leck reparieren, denn wenn das nicht geschieht, kann es passieren, dass alle gemeinsam untergehen.
Ist das Leck geschlossen, können alle Beteiligten offen darüber sprechen, wie es dazu kam und wie sich in Zukunft derartige Situationen vermeiden lassen. Transparenz und eine offene Fehlerkultur helfen dabei, dass andere Beteiligte den gleichen Fehler gar nicht erst machen, da sie über Ursache und Wirkung Kenntnis haben.

Best Practices für den Start mit DevOps-­Arbeitsweisen

Wenn Unternehmen darüber nachdenken, sich aktiv mit dem Thema DevOps auseinanderzusetzen, kann der erste und einzig sinnvolle Weg nur der sein, sämtliche Betroffenen zu Beteiligten zu machen. Dies bedeutet, dass Administratoren, Entwickler, Tester, Architekten und andere Beteiligte an einen Tisch müssen, um offen und transparent über das Vorhaben zu sprechen.
Dabei sind vor allem die Impulse und Ideen der Beteiligten sehr wichtig und auch notwendig. Mit einem Austausch sorgt das Unternehmen dafür, dass sämtliche Personen von Beginn an dabei sind und für das Vorhaben sensibilisiert werden.
Es ist wichtig, dass alle Beteiligten die DevOps-Arbeitsweise – offene Fehlerkultur, Verständnis und Vertrauen, Respekt, einheitliche Arbeitsweisen und Fokus auf ein gemeinsames Ziel – verstehen und künftig auch leben. Ohne dieses Verständnis können Unternehmen DevOps nicht erfolgreich einsetzen.
Neben den fachlichen und kulturellen Themen spielt es auch eine große Rolle, ob Unternehmen die technischen Gegebenheiten anpassen. Vor allem das Automatisieren von Test- und Build-Szenarien kann zu einem großen Mehrwert führen. Auch für die Administration kann das automatisierte Überwachen der bestehenden Systeme zu einer großen Entlastung im Betrieb der Infrastruktur führen.
Das Wichtigste für einen erfolgreichen und nachhaltigen DevOps-Prozess sind vor allem die Menschen. Sie müssen auf einer Ebene miteinander kommunizieren, sich gegenseitig vertrauen und ein gemeinsames Ziel haben.
Dokumente
Artikel als PDF herunterladen


Das könnte Sie auch interessieren