DevOps

Agile Software-Entwicklung und Prozessautomatisierung

Von der Idee bis zur Freigabe von Softwareprodukten

Der Unternehmensalltag ist bestimmt durch immer mehr Software – ob in der Verwaltung, der Forschung oder der Produktion. Die unterschiedliche Software und Funktionen müssen immer schneller, in kurzen Intervallen bereitgestellt werden.

Die IT-Entwicklung muss daher die Performance und Stabilität der Anwendung in immer kürzeren Releasezyklen gewährleisten. Auch unser Kunde, ein Unternehmen im Automotive Umfeld, hat eine Vielzahl von Anwendungen mit unterschiedlichen Funktionen in verschiedenen Fachbereichen im Einsatz. Die Vielzahl an unterschiedlichen Applikationen permanent funktionsfähig zu betreiben und schnell an sich ändernde Anforderungen von Fachabteilungen, Kunden und Märkten anzupassen, ist eine herausfordernde Aufgabe.

Die agile Softwareentwicklung macht es möglich, Software schneller und zuverlässiger zu erstellen, zu testen und freizugeben und damit den Softwareentwicklungsprozess maßgeblich zu verbessern. 

Mit Hilfe von Continuous Integration (CI), Continuous Delivery und Continuous Deployment (CD) lassen sich sämtliche Phasen (Testing, Configuration, Integration, Deployment, Monitoring) der Softwareentwicklung automatisieren. Der Entwicklungsprozess kann beschleunigt bzw. effektiver gestaltet und es kann flexibler auf Änderungen reagiert werden.

Gemeinsam mit unserem Kunden haben wir eine Continuous Integration and Continuous Deployment (CI/CD) Pipeline implementiert, die nun nach jeder Änderung die Pipeline startet und der Code die Phasen Build, Test und Deployment durchläuft.

Ein wichtiger Punkt war die Testautomatisierung, ein wesentlicher Bestandteil der CI/CD-Pipeline. Mit Microservices für eine Teilfunktion oder einem Service kommt man dem schnellen und schlanken Vorgehen der CI/CD-Pipeline entgegen. Anpassungen sind schneller und unabhängig von den anderen Komponenten umsetzbar. Die Effizienz der Entwicklung erhöht sich, wenn nur ein geschlossener Funktionsumfang je Microservice abgebildet wird. Zum einen können mehrere agile Units parallel an Services arbeiten und zum anderen können Microservices als eigene Prozesse, virtuelle Maschinen oder Docker-Container laufen. Container haben den Vorteil, dass sie unabhängig von dem darunterliegenden Betriebssystem funktionieren und die Orchestrierung mit Tools, wie z.B Kubernetes sehr einfach ist.

Für die CI/CD-Pipline sind Microservices als Softwarearchitektur ideal geeignet. Sobald die Eckpunkte für einen Service feststehen, erfolgt die Umsetzung. Alle neuen Codes der Entwickler werden im System zur Versionsverwaltung abgelegt und aktivieren damit die Pipeline. Indem lediglich eine Änderung pro Source-Code Version durchgeführt wird, können Störungen den entsprechenden Neuerungen leichter zugeordnet werden. Für kurze Bereitstellungszyklen eignet sich die Modulierbarkeit von Systemen in Form von Microservices hervorragend. Und da für jeden Pipeline-Abschnitt ein erfolgreicher Test zu durchlaufen ist, steigt die Qualität der Software Stück für Stück - je weiter ein Softwarestand in der CI/CD-Pipeline voranschreitet, desto höher die Qualität. Und nachträgliche Korrekturen der Software, die viel Zeit und Mühe bedeuten würden, lassen sich dadurch vermeiden. Denn am Ende der Pipeline steht ein Softwarepaket, dessen Qualität gesichert ist und das produktionsreif sowie installierbar ist.

Die Durchlaufzeit einer Softwareidee bis hin zur Produktivsetzung wird durch Continuous Delivery erheblich reduziert. Dabei sind der agile Prozessrahmen, Microservices und Automatisierungstools wichtige Elemente.

Mit dem Entwicklungsteam unseres Kunden haben wir die nötigen Infrastrukturen designt, um für einen reibungslosen Betrieb zu sorgen. Durch den Einsatz von Containeranwendungen, Microservices und dynamischen Infrastrukturen sowie den DevOps-Tools sorgen wir für die Orchestrierung und Automatisierung der IT-Infrastruktur, um Software stabil und kontrolliert auszuliefern.