23.07.2024 - Tobias Hundt

⏱ Lesedauer: 4 Minuten

Der Zielkonflikt zwischen Dev und Ops


Entwickler und Betreiber haben, auch wenn sie am ​selben Produkt arbeiten, völlig unterschiedliche Ziele. ​Die Hauptaufgabe der Entwickler und ihr ​Selbstverständnis ist das Erschaffen neuen ​Kundenwertes, indem sie Features oder Verbesserungen ​für die Software erstellen und möglichst schnell in ​Produktion bringen. Operations hat das Ziel, die Stabilität ​und Verfügbarkeit der Software sicherzustellen. Oder ​kurz: Die Entwicklung will möglichst häufige ​Änderungen, Operations will möglichst seltene ​Änderungen. Diese zwei Ziele scheinen im ersten ​Moment unvereinbar.

Grafik KI-generiert

Auch kann aus diesem Konflikt eine Abwärtsspirale ​entstehen, die dort beginnt, wo die Menge an ​technischen Schulden so sehr steigt, dass Änderungen in ​Produktion zunehmend mehr Probleme verursachen ​und den Betrieb einschränken. Zu allem Überfluss ​passiert das am ehesten dort, wo viele Änderungen ​passieren und der höchste Druck herrscht: An unseren ​kritischsten Systemen.


Technische Schulden als Katalysator


In der Folge kommt es zu verhäuft notwendigen ​Notfalleinsätzen der IT-Operations bis tief in die Nacht, ​um die Auswirkungen der Fehler gering zu halten. ​Änderungen rückgänig machen, Backups einspielen, etc. ​Die Menschen sind gestresst, der Kunde unzufrieden. ​Wenn jetzt dem Kunden Versprechungen für ​Entschädigungen in Form von neuen, priorisierten ​Features gemacht werden, beschleunigt es die ​Abwärtsfahrt noch weiter. Das Entwicklerteam, welches ​ohnehin unter erhöhtem Stress steht ist nun unter noch ​höherem Druck, teils utopische Versprechungen ​einlösen zu müssen und geht weitere technische ​Schulden ein, um ansatzweise dem Ziel nahe zu ​kommen. Die Aufgabenliste wird immer länger. Die ​Arbeit wird abhängiger, da durch mehr Workarounds ​und unsaubere Trennungen mehr Konflikte im Code ​auftauchen können. Auch kleine Änderungen führen ​vermehrt zu Problemen, was die IT-Operations veranlasst ​immer weniger Änderungen anzunehmen und Releases ​zu verhindern, da sie der Entwicklung immer weniger ​vertrauen, fehlerfreie Änderungen einzureichen. Nötige ​Refactorings und Softwaretests werden verschoben. Die ​Entwicklung beginnt, IT-Operations ebenfalls weniger zu ​vertrauen weil sie die Änderungen nicht mehr schnell ​genug in Produktion bringen. Auf deren Seite wächst ​ebenfalls die Menge an technischen Schulden, da die ​Arbeit an Notfällen immer mehr Zeit in Anspruch nimmt. ​Die neuen technischen Schulden führen zu noch ​schlechterer Codequalität und die Spirale beginnt von ​vorn.


Die Menschen der Entwicklung fühlen sich nicht mehr ​wirksam, weil sie vermehrt Bugs beheben müssen und ​Operations zu viel blockiert. Operations geht das alles ​viel zu schnell und sie wollen sich erstmal stabilisieren. ​Beide Seiten haben geringeres Vertrauen in die jeweils ​andere. Das schränkt die Entwicklung weiter ein und ​erhöht den Druck auf die ganze Organisation.


Diese Sequenz kann mal stark und mal leicht ausgeprägt ​sein. Sie kann mal schneller und mal langsamer ablaufen. ​Teils unbemerkt und schleichend. Sie kann sich über ​Jahre ziehen bis sie wahrgenommen wird. Aber dann ​kann es schon zu spät sein und das Unternehmen leidet ​unter Unzufriedenheit, Abgängen und Marktverlusten. ​Und da immer mehr Unternehmen Software entwickeln ​kann sie fast überall auftauchen.


Die Lösung aus der Sicht von DevOps

Im Werkzeugkoffer von DevOps gibt es genügend ​Werkzeuge, um dieser Abwärtsspirale zu entkommen ​oder sie gar nicht erst entstehen zu lassen. Wichtigster ​Punkt dabei ist, dass Deployments zur reinen routine ​werden, auf die sich alle verlassen können. Sie müssen so ​einfach, so geübt und so vertrauenswürdig sein, dass sie ​auch unter der Woche zu normalen Arbeitszeiten und ​unter erhöhtem Entwicklungsdruck stattfinden können. ​Das klingt so simpel, ist aber ein großer Schritt. Um das ​zu erreichen, braucht es eine umfassende und früh ​beginnende Test-Strategie und Deployments auf ​Vorproduktions-Umgebungen, die auf Knopfdruck frisch ​entstehen und nicht durch jahrelange Benutzung ​kaputt-konfiguriert sind. Es braucht Automatismen, die ​manuelle Arbeit umfangreich ersetzt und damit ​menschliche Fehler oder Unachtsamkeiten verhindern. ​Es braucht eine nahtlose Einbindung der IT-Security und ​der QA in die Softwareentwicklung. Es braucht ​funktionierende und regelmäßig getestete Roll-Back-​Methoden. Es braucht viele und möglichst kurze ​Feedbackschleifen an die Entwickler und Betreiber. Es ​braucht eine Deployment-Strategie, die es ermöglicht, ​im laufenden Prozess Änderungen einzuspielen, ohne, ​dass die Kunden eine Downtime wahrnehmen. Für diese ​Ziele muss die Software vorbereitet werden: Kleine ​Entwicklerteams arbeiten an voneinander unabhängigen ​Features, beispielsweise in Microservice-Umgebungen. ​Einzelne Komponenten können unabhängig ​voneinander deployed werden. Kritische Komponenten ​können skaliert werden und parallel laufen.


Gegenseitiges Vertrauen ist unerlässlich


In einer solchen Umgebung mit schnellem Feedback ​und ausführlichen Tests kann wieder das nötige ​Vertrauen entstehen, mit Änderungen keine negativen ​Folgen zu erzeugen. Lange Not-Debugging-Nächte und ​Workarounds gehören der Vergangenheit an. ​Technische Schulden häufen sich weniger schnell an, da ​die Codequalität ein ohnehin höheres Niveau erreicht. ​Entwicklerinnen und Entwickler haben wieder Zeit und ​Vertrauen, zu experimentieren und damit neuen, ​möglicherweise unverhofften Wert zu schaffen.


Die nötigen Grundlagen zur Umsetzung ​schaffen

Das alles sind mitunter große Herausforderungen und ​nicht innerhalb kurzer Zeit zu meistern. Und nur mit ​Technologie ist es hierbei nicht getan. Es müssen ​Prozesse zu dieser Arbeitsweise passen und die ​Menschen müssen den Wert der neuen Praktiken ​verinnerlichen, um gemeinsam den Weg in diese neue ​Welt zu gehen. Dabei beginnt man am besten dort, wo ​die Menschen den höchsten Grad an Innovationslust ​haben und gern neue Dinge ausprobieren. Von dort ​verbreitet sich der Gedanke durch Erfolgsgeschichten ​schnell ins Unternehmen.


Aber ohne technische Hilfsmittel geht es auch nicht. Hier ​kann es je nach Organisation sinnvoll sein, mit kleinen ​Schritten anzufangen, die Menschen dort abzuholen wo ​sie sind und iterativ auf das Ziel hinzuarbeiten. ​Beispielsweise bei der Erhebung von relevanten ​Metriken wie die Fehlerrate für Releases und der ​durchschnittlichen Zeit von FeatureRequest bis zum ​Ausrollen in Produktion. Oder bei der konsequenten ​Umsetzung von automatisierten Teststrategien zum ​früheren Erkennen von Fehlern. So oder so geht es ​immer um die Automatisierung von Prozessen, die die ​Arbeit zwischen Devs und Ops vereinfacht, manuelle ​Tätigkeiten möglichst vermeidet und dafür sorgt, dass ​Menschen wieder Vertrauen in ihre Arbeit und in das ​Produkt gewinnen.

Möchten Sie mehr über dieses Thema erfahren oder ​mir Feedback geben, schreiben Sie mir gern unter:

Blue Atlas Technologies GmbH

Altewiekring 20a

38102 Braunschweig

Telefon: +49 176 637 645 63

E-Mail: kontakt@blue-atlas.de