Zahlt sich ein Investment in DevOps aus?

Ueli Scheidegger
Nov 5 · 6 min read

fastforward hat gross ins Setup einer top DevOps Infrastruktur investiert. Unsere Software wird jetzt durch einen gut strukturierten und hoch automatisierten Prozess kompiliert, getestet und installiert. Dies hat uns eine Stange Geld gekostet. Wieso haben wir uns also dazu entschieden?

Was ist “DevOps”?

Entwickler schreiben Code, der anschliessend getestet und schliesslich vom Betrieb auf die Live-Server installiert wird. Nun muss das System wieder getestet werden, da die Entwicklungsumgebung mindestens geringfügig von der Live-Umgebung abweicht.

Da Testing viel Aufwand bedeutet, werden typischerweise die Anzahl der Installationen verringert, was weniger Flexibilität und längere Wartefristen für neue Funktionen oder Verbesserungen bedeutet. Und darüber freut sich natürlich die Konkurrenz!

Hier kommt DevOps ins Spiel. Es ist eine Kombination von Entwicklung (im Englischen: Development) und Betrieb (im Englischen: Operations) und beinhaltet alle Methoden und Tools, die dabei helfen, Software schnell und ohne grossen Aufwand zu implementieren, zu testen und zu installieren.

Die fastforward DevOps-Prozesse

Für unser agiles und gut ausgebildetes Team bedeutete die Umstellung auf die nötige Entwicklungskultur und -methoden kein grosser Aufwand. Aber wir mussten viel Geld und Zeit in die Tools investieren, damit die hoch automatisierte DevOps Infrastruktur den gesamten Prozess — vom Programmieren zum Überwachen der Live Prozess — abdecken kann:

Versionsverwaltung…

Bei fastforward legen wir den Code in einem Git Repository ab. Dieses ist in unser Projektmanagement-Tool sowie in unser Build-System integriert. Das erlaubt uns z.B., für jede einzelne neue Anforderung mit einem Klick einen neuen Ast (Version) zu erstellen. So können mehrere Entwicklerinnen an einem Projekt arbeiten, ohne einander in den Weg zu kommen.

…Automatisches Kompilieren…

Wenn ein Entwickler neuen Code in die Versionsverwaltung ablegt, wird automatisch der gesamte bestehende Code gemeinsam mit dem neuen Code kompiliert, die verwendeten Software-Pakete eingebunden und vieles mehr. Das Resultat wird dem Team via automatische Nachricht mitgeteilt, damit es schnell reagieren kann, falls der neue Code etwas kaputt machen sollte.

…Testing…

Damit wir neue Versionen schnell — und ohne Angst haben zu müssen — installieren können, wird die Software mit automatischen Tests überprüft. So können wir sicher sein, dass Änderungen an einem Ort keine Probleme an anderen Orten verursachen. Das ist zentral für einen guten DevOps-Prozess.

Wir führen drei Arten von Tests durch:

  1. Unit Tests überprüfen die Funktion von kleinen Einheiten (im Englischen: Units) der Software. Diese Tests sind klein, schnell und überprüfen eine einzige granular Funktion.
Beispiel eines automatisierten Frontend-Test

…und Installation

Wenn der Code ins Repository kopiert, kompiliert und getestet wurde, ist es Zeit, ihn auf dem Test-Server zu installieren. Denn die automatischen Tests sind zwar super, aber die Kunden möchten die neuen Funktionen selber ausprobieren und schauen, ob sie ihren Erwartungen entsprechen. Vielleicht war die Anforderung nicht genau genug beschrieben worden oder —recht oft — decken die Szenarien der automatisierten Tests noch nicht alle Funktionen genügend ab.

In den meisten DevOps-Ansätzen findet man verschiedene Umgebungen, z.B. “DEV” als Spielplatz für die Entwickler (im Englischen: Developers); die “TEST”-Umgebung, um eine Funktion zu testen; die “INT”-Umgebung (von Integration), die wie die “PROD”-Umgebung aufgesetzt sein sollte, um möglichst aussagekräftige Testresultate zu liefern, sowie oftmals auch für Last-Tests verwendet wird. Und schliesslich die “PROD”-Umgebung (von Produktion), wo sich echten Nutzerinnen des Systems befinden. Aber was machen wir, wenn Entwicklerin A ihre neue Funktion testen möchte, aber DEV ist von Entwickler B besetzt, der noch Code von Entwicklerin C überprüft?

Natürlich könnte man noch ein paar Umgebungen mehr aufsetzen und hoffen, dass jeweils genügend vorhanden sind. Bei fastforward haben wir uns für “ad hoc”-Umgebungen entschieden, um dieses Problem zu lösen: Nachdem eine Code-Änderung erfolgreich durch den automatischen Kompilations- und Test-Prozess gelaufen ist, wird er auf einer eigens dafür erstellten Umgebung installiert — natürlich wiederum automatisch. Diese Installation kann jetzt für Überprüfung der Funktion durch einen Kollegen, eine Testerin und/oder den Kunden selbst benutzt werden und — klar!— wird danach automatisch wieder abgebaut. Dies gibt uns viel Flexibilität, um Code zu schreiben, testen und mit Kundinnen und Benutzern zu besprechen.

Und wieviel kostete das alles?

DevOps ist nicht nur Infrastruktur, sondern auch eine Mentalität. Letztere (die Bereitschaft, viel in Testing zu investieren; die Präferenz für kleine aber häufige Installationen; schnelle Feedback-Zyklen), kostet im Idealfall nichts, denn sie sollte sich im Evolutionsprozess eines guten Entwicklungsteams von selbst ergeben. Eine solche Infrastruktur aufzubauen und zu betreiben, bedeutet hingegen einen riesigen Aufwand. Unser DevOps-Team erweiterte und verbesserte das System laufend während ungefähr einem Jahr, und kleinere Anpassungen sind immer noch fast täglich nötig, damit unsere DevOps-Infrastruktur mit den fortlaufenden Änderungen in unserer Branche Schritt halten kann. Es ist schwierig, einen genauen Preis zu nennen, aber die Investition kostete uns definitv mehr als CHF100K.

Und was bringt uns das Ganze?

Automatische Installationen geben uns Stabilität. Falls die Installation auf INT erfolgreich war, wird sie wahrscheinlich auch auf PROD ohne Probleme laufen. Zudem laufen die Installation nun viel schneller ab als vorher. Niemand muss seinen Wecker für Sonntagmorgen, 2 Uhr, stellen, um eine neue Version zu installieren. Zudem können Entwickler rasch Feedback von Stakeholdern einholen, ohne das Operations-Team belästigen zu müssen.

Automatische Tests nehmen uns viel Stress ab. Mit guten Test-Szenarien wissen wir, dass unsere Änderung keine anderen Funktionen kaputt macht. Und wenn eine Änderung doch mal Probleme verursachen sollte, sagen uns die Tests sofort, dass und wo etwas schief geht. Das minimiert nicht nur die Zeit, die wir vorher für manuelles Testing aufwenden mussten, sondern gibt uns auch die Freiheit, eine neue Version zu installieren, wann immer wir wollen.

Automate Builds geben uns sofortige Rückmeldungen zu unserem Code. Vielleicht hat der Entwickler eine Library auf seinem Computer, aber er hat vergessen, sie beim Build Skript hinzuzufügen. Dank dem automatischen Build System weiss unser Team das sofort. So müssen andere Entwickler nicht viel Zeit verschwenden, wenn sie neue Arbeit in einem kaputten System beginnen wollen.

Screenshot of the build, test, staging, e2e-test, and deployment pipeline of one of our projects.
Screenshot of the build, test, staging, e2e-test, and deployment pipeline of one of our projects.
Der Build-, Test-, Staging-, End-2-End-Test- und Installations-Prozess von einem unserer Projekte.

Fazit

All diese Automation — verbunden mit der entsprechenden Team-Kultur — gibt uns die Flexibilität, rasch auf neue Anforderungen reagieren zu können. Wir können eine neue Version mit einem Klick aufsetzen, und so eine neue Funktion sofort umsetzen und dem Kunden präsentieren. Gleichzeitig haben wir die Stabilität verbessert und den Aufwand für manuelles Testing verringert. Dies ist natürlich keine Garantie für perfekte Software, aber die Basis für Qualität in komplexen Systemen. Dies alles führt zu viel schnellerer Einführungszeit von Verbesserungen und neuen Funktionen — den Wettbewerbsvorteil, den man auf Englisch mit dem Begriff “time to market” bezeichnet.

Vergleicht man also die Kosten von DevOps mit den Alternativkosten, die anfallen, wenn man keine solche Infrastruktur hat, so ist schnell klar, welchen Wert gutes DevOps hat. Unsere Kunden profitieren auf jeden Fall sehr von unserer teuren Investition, denn sie erhalten alle Vorteile zu einem Bruchteil des Preises, da wir die Kosten zwischen unseren Kundinnen aufteilen können. Und darüber hinaus können unsere Mitarbeiter erst noch besser schlafen, da es weniger böse Überraschungen gibt. Ich würde das als eine Win-win-Situation bezeichnen.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade