DevOps ist ein Neologismus aus Development und Operations und für viele in der Softwareentwicklung ein hippes Buzzword.

Tatsächlich steckt aber ein ernster und wichtiger Ansatz für den ökonomisch sinnvollen Betrieb und der (Weiter)entwicklung von Software dahinter. Dieser Ansatz basiert auf Lean-Prinzipien und agilen Methoden und soll regeln wie die Unternehmensführung, die Software-Entwicklung, das Team im Betrieb und die Qualitätssicherung gemeinsam und gleichzeitig an einer kontinuierlichen SW-Entwicklung arbeiten können.

Wie hat man bisher Software entwickelt?

In der Vergangenheit oder sehr oft auch jetzt noch wird Software wie auf einer Produktionsstraße entwickelt. Zuerst definiert die Unternehmensführung einen Bedarf, dann überlegen sich Business Analysten eine theoretische Umsetzungsmöglichkeit, dann entwickeln SW-Programmierer den SourceCode, dann wird dieser von der Qualitätssicherung geprüft und geht schlussendlich an den Betrieb zur tatsächlichen Verwendung. Jede einzelne Abteilung arbeitet für sich im stillen Kämmerchen und ist in keinen anderen Teilprozess eingebunden. Dadurch entstehen unterschiedliche Erwartungen und sehr lange Feedbackschleifen. Wenn die Qualitätssicherung Fehler entdeckt, kann dies daran liegen, dass die Entwicklung unsauber gearbeitet hat oder, dass die Anforderungen im Vorfeld zu ungenau definiert wurde. Wenn eine Software am Testsystem bei der Entwicklung läuft, bedeutet das nicht automatisch, dass diese am Produktionssystem auch fehlerfrei läuft.

Was ist der Mehrwert von DevOps?

Wenn man DevOps als essenziellen Geschäftsprozess implementiert

  • verbessert er die Kundenerfahrung, weil er den tatsächlichen erwarteten Nutzen der Kunden von Anfang an inkludiert und deren Feedback kontinuierlich einholt,
  • steigert die Innovationskraft, weil überflüssige Nacharbeiten und langwierige Ausbesserungen eingespart werden und die so freien Ressourcen für innovativere Aktivitäten genutzt werden können und
  • führt zu einer schnelleren Wertschöpfung, weil der gesamte SW-Entwicklungsprozess deutlich kürzer ausfällt

und liefert damit einen erheblichen unternehmerischen Mehrwert. Mehr noch kann der Einsatz von DevOps gewisse Geschäftsmodelle, die auf sehr schnelle Release-Cycles setzen, erst ermöglichen.

Mehr Zusammenarbeit? Ist das alles?

Nein, Zusammenarbeit über Teamgrenzen und Spezialisierung hinweg sind wichtig und grundlegend notwendig, um Feedbackschleifen so kurz wie möglich zu halten. Damit werden Fehler schneller erkannt und können auch schneller behoben werden („Fail fast, fail cheap“).

Mindestens genauso wichtig ist aber auch die Änderung des Release Prozesses. In einer Wasserfallumgebung durchläuft neue Software verschiedene Releases (Pre-Alpha, Alpha, Beta, Release Candidate, release to marketing, production). Jeder dieser Steps benötigt Zeit. D.h. Bis der Kunde die Software nutzen kann, ist sie mitunter bereits veraltet und wird nicht mehr benötigt.

Diese seriellen Schritte werden durch eine Continuous Delivery Pipeline (CDP) ersetzt. Diese Pipeline umfasst vier immer gleichzeitig laufende Prozesse:

  • Continuous Exploration
    Dieser Prozess treibt Innovationen voran und untersucht Anforderungen und Realisierungsmöglichkeiten und definiert Lösungsansätze
  • Continuous Integration
    Dieser Prozess erhöht die Softwarequalität, indem alle Änderungen immer sofort in den gesamten Build-Prozess eingebettet werden und damit Auswirkungen in allen Umgebungen (Test, Staging, Productive) erkannt werden können.
  • Continuous Deployment
    Dieser Prozess stellt jede kleine Softwareänderung sofort, nach erfolgreicher Tests, auch am Produktivsystem zur Verfügung. D.h. Man wartet nicht mehr auf ein zeitlich abgestimmtes Releasedatum, sondern veröffentlicht die Software in kleinen Teilen immer sofort, wenn diese fertiggestellt wurden.
  • Release on Demand
    Dieser Prozess stellt sicher, dass der Kunde die neuen Funktionen immer dann bekommt, wenn er diese erwartet. Also entweder so schnell wie möglich oder zu einem bestimmten Zeitpunkt.

Diese Vorgehensweise hat hauptsächlich zwei Vorteile:

  1. Der Nutzer bekommt Features sehr schnell und möglichst dann, wenn der Bedarf noch besteht und freut sich über kurze Wartezeiten
  2. Sollten Fehler auftreten, muss nur ein ganz kleiner Teil zurückgezogen und nachgebessert werden. Alle anderen Features bleiben erhalten.

Während Software-Hersteller früher alle paar Monate oder tlw. Jahre neue Releases herausbrachten, begannen die sogenannten IT-Startups alle Änderungen immer sofort zu veröffentlichen und gegebenenfalls zurückzuziehen oder eben schnell wieder zu patchen. Aufgrund der Automatisierung des Deploymentprozesses kann man Patches schneller ausrollen als vorher alle Eventualitäten zu bedenken und zu versuchen keine Fehler einzubauen. Daher veröffentlichen erfolgreiche IT-Unternehmen wie zb. Amazon, Netflix, Facebook, etc. etwa jede Sekunde einen neuen Release. Dabei sind die Änderungen so minimal, dass kaum gravierende Fehler auftreten können und der Updateprozess völlig unbemerkt verläuft.

Conclusio

DevOps ist daher aus der Software-Entwicklung nicht mehr wegzudenken und hat unsere Nutzererwartungen massiv verändert. Wir erwarten kontinuierlich Neuerungen und trotzdem zu jeder Zeit eine funktionierende IT. Diese Erwartungshaltung greift allerdings auch schon auf andere Branchen über. Tesla gelingt es zusätzliche Features oder Verbesserungen weltweit in ihre Autos automatisch und kontinuierlich zu deployen. Man muss daher nicht mehr in die Werkstatt, um die Leistung zu steigern, intelligente Assistenzsystem nachzurüsten oder die Bremsen zu verbessern.