Devops excellence hat für einen Kunden mit großer Entwicklungsabteilung und komplexem Software-Anwendungssystem die Aufgabe übernommen, eine durchgängige Software- Build-, Integration-, Konfiguration- und Deploymentkette aufzubauen. Die Kette soll durchgängig automatisiert sein. Release-Bau und die folgenden Schritte bis hin zum Deployment erfolgen automatisch und zwar abhängig vom Erfolg des jeweils vorhergehenden Schrittes. Ziel des Projektes war die drastische Verkürzung der Releasezyklen.
Der Kunde unterhält eine große SW-Entwicklung mir mehr als 90 Entwicklern. Das Softwaresystem besteht aus einer Vielzahl von Komponenten (20+) mit diversen Abhängigkeiten untereinander.
Gemäß den Kundenanforderungen wurde eine voll integrierte und automatisierte Software-Build-Produktionskette unter anderen mit Jenkins, maven und gradle realisiert. Sie umfasst das Bauen der Komponenten, ihre Integration, Konfiguration und die Qualitätssicherung. Dazu werden die Code-Quality anhand der vorgegebenen Programmierrichtlinien sowie die Funktionalität über Unit- und automatisierte Oberflächentests geprüft. Verwaltet werden die automatisiert gebauten Artefakte in einem Repository, das die zurückliegenden Release-Builds der jeweiligen Komponenten enthält. Mit von devops excellence entwickelten Skripts werden die Software-Komponenten schließlich auf Web-, Applikation- oder Datenbankserver verteilt.
Flankierend wurde ein Reporting etabliert, um die Quality Gates der zentralen Unternehmensarchitekten und das SoS-Meeting mit aktuellen Informationen zu den Build-Erfolgen zu versorgen. Das Reporting enthält Informationen zu Code-Metriken, dem Erfolg bzw. Misserfolg von Build-Ständen sowie zur Code-Quality.
Außerdem wurde den vielen verschiedenen Entwicklungsteams ein Mechanismus zur Verfügung gestellt, mit dem sie unabhängig von anderen Teams entwickeln und testen können, aber ihre Ergebnisse schnell in geforderte Komponenten einfließen können. Dazu nutzen sie Feature Branches, Snapshot und Release-Builds, die automatisiert auf verschiedenen Staging-Umgebungen deployt werden können.
Mit dem Projekt konnte die Zeit zwischen zwei Iterationen von einer Woche auf einige Stunden reduziert werden – ein wesentlicher Baustein für die Etablierung eines agilen Entwicklungsvorgehens.