Operations heute und morgen – Teil 2 – DevOps

Die agile Bewegung hat mit den Werten des Agilen Manifests dafür gesorgt, dass sich die Sichtweise auf Prozesse, Mitarbeiter und Kollegen verändert hat. Dass Personen über Prozesse gestellt werden und dem iterativen Vorgehen gegenüber langfristigen Planungen der Vorzug gegeben wird, hat mittlerweile auch den Bereich Operations erreicht.

Durch die Beschleunigung der Softwareentwicklung und die Bereitschaft, nicht Funktionierendes schnell zu verwerfen, erhöht sich der Druck auf Operations-Teams. Neue Server oder Servergruppen werden benötigt, Releases sind zu deployen und neue Buildserver hinzuzufügen – solche Standardaufgaben der Entwickler werden für den Betrieb zunehmend zum Problem. Viele Firmen bilden sie oft über Ticketprozesse ab, die jedoch nicht immer zur schnelleren Bearbeitung führen. Im schlimmsten Fall werden so mehrere Hundert Tickets pro Tag an die Teams geschickt und per “FIFO” (first in first out) abgearbeitet. Wenn aber ein Team seine Änderung schneller haben möchte, beginnt das Verhandeln um die Prioritäten.

In kleinen Firmen lässt sich so etwas noch auf kurzem Weg lösen: Der Hilfesuchende geht zum Kollegen und bittet ihn direkt um Hilfe. Er erhält so seine Änderung schneller als andere Anfragesteller. Jedoch wird der Kollege so in seinem Arbeitsfluss gestört, und die verbleibenden Tickets werden langsamer abgearbeitet. Das
Ergebnis ist, dass das Operations-Team zunehmend mit wiederkehrenden Aufgaben konfrontiert wird und weniger Zeit für die Wartung und Weiterentwicklung der Infrastruktur zur Verfügung hat.

Gestern und heute

Für gewöhnlich braucht es nicht viel Agilität, um die Arbeit im Bereich Operations durchzuführen. Die Patchdays sind oft bekannt, Schmerzen bereiteten hingegen unberechenbare Probleme wie ausfallende Coreswitches und Java-Updates. Ad-hoc-Aufgaben aus dem Rest der Abteilung kommen per Ticket oder Telefon und werden nach Wichtigkeit abgearbeitet. Die Arbeit kulminiert jedoch an Release-Tagen. Je nachdem wie die Firma ihre Deployments handhabt, muss der Betrieb sehr früh oder sehr spät dafür sorgen, dass das Release installiert wird. Darauf wird das Release vorbereitet, und zwar entweder vom Releasemanagement oder direkt vom Operations-Team.

Kollegen, die nicht an der Entwicklung der Software beteiligt waren, müssen sich um die Lauffähigkeit der Komponenten kümmern und haben zu entscheiden, welche Konfigurationsparameter zum Release gehören könnten und warum sich die Abhängigkeiten zum Release nicht auflösen lassen. Die Entwicklungsabteilung wirft das Release sprichwörtlich “über den Zaun”, und die Verantwortung lastet auf den Schultern derjenigen,
die das Update einspielen müssen. Diese Verantwortung wiegt insbesondere dann schwer, wenn die Verfügbarkeit der Plattform in den Zielvereinbarungen des Betriebs verankert ist. Jedes fehlgeschlagene Release bedeutet, dass es kein oder weniger Geld gibt – so als hinge die Verfügbarkeit der Plattform nur vom Betrieb ab.

Im Idealfall bearbeiten ein oder mehrere Kollegen in einer Zeitspanne von ein oder zwei Wochen wichtige Themen. Die Arbeit unterscheidet sich im besten Fall kaum von der Softwareentwicklung, nur verfügt diese in den meisten Fällen über einen geschützten Sprint, um ihre Arbeit zu erledigen. Diesen Schutz eines Sprints kann ein Operations-Team, insbesondere wenn es schwächer besetzt ist, nur schwer umsetzen. Auch seine Mitarbeiter hätten gern ausreichend Zeit für die Weiterentwicklung von Infrastruktur. Die verfügbare Zeit fällt aber aufgrund der Anforderungen an das Team, zunehmend schneller zu arbeiten, immer geringer aus.

Die Art und Weise, wie die Fachabteilungen und die Operationsabteilung arbeiten, muss sich strukturell angleichen. An diesem Punkt setzt DevOps an, dazu gleich mehr.