© iStock

Quantensprung in der Softwareentwicklung

Mit weniger mehr erreichen

03/2017 - Neue Software kontinuierlich in Betrieb nehmen – mit einem kleinen Team, das alles von Entwicklung bis Betrieb durchführt: Das ist Continuous Delivery in der Cloud mit einem DevOps-Team.

In der heutigen Zeit sorgen Start-ups, aber auch Unternehmen wie Amazon oder Zalando für hohe Innovationsgeschwindigkeiten. Das wird unter anderem durch extrem kurze Softwareentwicklungszyklen erreicht. Um diese Geschwindigkeit zu erzielen, kommen die Konzepte von agiler Softwareentwicklung, DevOps und Continuous Delivery ins Spiel.

Bei klassischen Softwareprojekten werden häufig zwei bis vier Releases pro Jahr eingeplant. Neue Anforderungen benötigen manchmal Monate, bis sie produktiv umgesetzt sind. So war es bis 2013 auch beim digitalen Konzern-Telefonbuch EVI. Mit diesen wenigen Releasezyklen war das Produkt nicht mehr zukunftsfähig. „Wir haben unsere Arbeit über den Softwarelebenszyklus von Anfang bis Ende in vier Schritten modernisiert“, sagt Dr. Stephan Pflume vom CIO-Bereich des Konzerns, „indem wir zunächst auf agile Softwareentwicklung umstellten. Anschließend wurde der Betrieb der Anwendung in die DB Enterprise Cloud überführt. Danach haben wir das Entwicklungsteam zu einem DevOps-Team erweitert und schließlich eine Continuous Delivery Pipeline aufgebaut.“ Ein kleines Team vereint also sowohl die Entwicklung (Development) als auch den Betrieb (Operations) der Software. Dadurch werden neue Features kontinuierlich – und nicht in einem festgelegten Turnus – in Betrieb genommen.

Begriffserläuterungen

  • DevOps: Dieser Ansatz hat zum Ziel, Releasezyklen zu verkürzen und die Qualität zu erhöhen. Dazu wird auf einheitliche Prozesse und Werkzeuge in einer CD-Pipeline und enge Zusammenarbeit der Bereiche Development und Operations gesetzt, um eine effektivere und effizientere Zusammenarbeit der Bereiche Dev und Ops zu erzielen.
  • Continuous Integration (CI): Das ist der Prozess des fortlaufenden Zusammenfügens von Softwareänderungen in einer versionsverwalteten Codebasis.
  • Continuous Testing (CT): Ein Prozess der Durchführung automatisierter Tests, um sofortige Rückmeldung zu den Geschäftsrisiken zu erhalten, die mit einem Release-Kandidaten verbunden sind.
  • Continuous Delivery (CD): Der Prozess liefert Release-Kandidaten automatisiert auf Entwicklungs-, Test-, Integrations- und Produktivumgebung aus. CD setzt dabei auf CI und CT.

Zuvor waren Entwicklung und Betriebsführung ganz klassisch strikt voneinander getrennt – mit jeweils unterschiedlichen Zielen: Entwickler haben ein großes Interesse daran, Systeme durch häufige Releases zu optimieren. Der Betrieb wiederum konzentriert sich darauf, dass die Systeme laufen. In der Regel treffen Entwicklung und Betrieb unter Zeitdruck aufeinander, zum Beispiel bei der Veröffentlichung eines neuen Releases oder wenn es ein Problem wie zum Beispiel einen Systemausfall gibt. Es beginnt dann das typische „Blame Game“, bei dem beide Bereiche sich gegenseitig die Schuld an dieser Situation geben. Mit DevOps wird nun die Automatisierung von Vorgängen im IT-Betrieb und die gemeinsame Nutzung von Tools zwischen Entwicklung und Betrieb gefördert. So können die Entwickler ihre verwendete Konfiguration der Infrastruktur an den Betrieb weitergeben und mit diesem abstimmen. Oder Entwicklung und Betrieb erarbeiten direkt gemeinsam den Infrastrukturcode und schließen somit von vornherein Inkompatibilitäten zwischen den Entwicklungs-, Test- und Produktivumgebungen aus.

© Deutsche Bahn AG

Wir können jetzt so arbeiten, wie wir uns das früher erträumt hatten.

Dr. Stephan Pflume (DB AG)

In der Entwicklung ist die agile Arbeitsweise bereits etabliert, nun wird die Agilität in den IT-Betrieb verlängert. So lassen sich Funktionen, die agil in Sprints entwickelt werden, schnell und automatisiert in den produktiven Betrieb überführen – und sind so für den Kunden nutzbar. Dank dieser Arbeitsweise erreicht das Team heute bis zu 18 Releases pro Jahr. Damit kommen neue Anforderungen jetzt schneller in Produktion. Kleinere Releases haben einen weiteren Vorteil: Für die Anwender ist es leichter, sich an die veränderte Software anzupassen. Auch Feedback der Anwender kann jetzt schneller in der Entwicklung berücksichtigt werden. „Nun ist alles Software“, sagt Stephan Pflume, „wir können jetzt so arbeiten, wie wir uns das früher erträumt hatten.“ Durch Virtualisierung in der Cloud können alle Applikationen aus einer elektronischen Systemdefinition automatisiert bereitgestellt werden. Aber: Die Automationsprozesse müssen zuvor festgelegt und programmiert werden. Dazu benötigt das Team zusätzliche Fähigkeiten aus dem Bereich Software-Betrieb und Test-Automation.

Zwei Faktoren haben den Wechsel in die Cloud motiviert: Mit dem pay-per-use-Ansatz, also nur das zu bezahlen, was wirklich benötigt wird, ist ein erheblicher wirtschaftlicher Vorteil realisierbar. Darüber hinaus waren durch die „DB Enterprise Cloud“ datenschutzrechtliche Anforderungen erfüllbar. EVI war die erste Konzernanwendung in der Cloud. Von Beginn an konnten die Kosten reduziert werden: So werden Testsysteme in der Nacht und am Wochenende ausgeschaltet und ebenso ein Teil der Produktionsserver. Nach einer zweiwöchigen Evaluierungsphase wurde die Produktion bereits auf kleinere Server umgestellt. Derzeit wird die Softwarearchitektur geändert, damit in Schwachlastzeiten noch kostengünstigere Server ausreichen.

Die Continuous Delivery Pipeline

Stark vereinfachter Ablauf der Softwareentwicklung mit der Delivery Pipeline. Detailliertere Informationen stellt die Community DB-Angehörigen per E-Mail an den Verteiler „DB.SYSTEL.DevOps-Community-Kern“ zur Verfügung.

© DB Systel GmbH

Die Software, die Server und alle Komponenten werden automatisch zu einer ablaufenden Kette verbunden, der Continuous Delivery Pipeline. Sobald ein neues Stück Softwarecode fertig geschrieben ist, wird es automatisierten Tests unterzogen und in das Produktionssystem integriert. Um diese Abläufe entwickeln und ausführen zu können, müssen für das Team neue Tools eingesetzt werden. Bei der Wahl der Tools für die Automatisierung unterstützte DB Systel. „Wir haben die Rolle eines Integrators. Es gibt am Markt mehrere Tools, mit denen man Continuous Delivery umsetzen könnte. Wir suchen die passenden Bausteine aus und verbinden sie in einer Continuous Delivery Pipeline“, sagt Dr. Natascha Brosche, DevOps Community Managerin bei DB Systel. Sie ist von Haus aus Entwicklerin und kennt die Anforderungen ihrer Kunden. Je nach Bedarf werden Methoden und (Open-Source)-Tools ausgewählt und sowohl bei Entwicklung als auch Betrieb eingesetzt.

© DB Systel GmbH

Diese komplett durchgängige Automatisierung von Abläufen ist so etwas wie eine Revolution und ein großer Schritt zur Reduzierung von time-to-market.

Dr. Natascha Brosche (DB Systel GmbH)

In der Pipeline wird der gesamte Prozess der Auslieferung des Softwarepakets von der Entwicklungs- auf die Teststufe, später auf die Abnahme- bis hin zur Produktionsstufe automatisiert durchgeführt. „Diese komplett durchgängige Automatisierung von Abläufen ist so etwas wie eine Revolution und ein großer Schritt zur Reduzierung von time-to-market“, sagt Natascha Brosche. Das DevOps-Teammitglied bekommt nun ein Toolset, mit dem es auf Knopfdruck das ganze Release in Produktion schiebt. „Für mich ist die Innovation, dass jetzt das Releasen eigentlich so nebenbei passiert.“ Auch Stephan Pflume ist begeistert: „Mit diesen Methoden erreichen wir Geschwindigkeiten, die wir brauchen, um innovative Dinge zu realisieren. Alles andere ist zu langsam.“ Die Vorteile von DevOps werden auch in anderen Projekten im Konzern genutzt.

Ganz klar, der Anfang ist gemacht – die Zukunft kann kommen.