01.3

Continuous Delivery

Build Automation & Deployment Pipelines

 

Wir glauben, dass ein Software-Projekt erfolgreich ist, wenn die Anwender die Software akzeptieren, sie produktiv und wertschöpfend einsetzen können. Dazu ist es wichtig, schnell auf Änderungen in Geschäftsprozessen und auf Anwenderfeedback reagieren zu können. Um schnell auf Änderungen reagieren zu können, muss man in der Lage sein, die Software jederzeit und ohne viel Risiko verändern und ausrollen zu können. D.h. wir müssen bei mind. gleichbleibender Qualität die Geschwindigkeit steigern (= Effizienz). Die Automatisierung von Build- und Deploymentprozessen ist dafür, insbesondere bei einem agilen Vorgehen, ein wichtiger und unerlässlicher Schlüssel. 

In den meisten produzierenden Domänen ist die automatisierte Fließbandproduktion und die damit einhergehende Effizienz- und Qualitätssteigerung selbstverständlich. In der IT ist dies leider noch nicht überall der Fall. Wir helfen Ihnen dabei Ihren Entwicklungs- und Betriebsprozess für Ihr Softwareprojekt so zu standardisieren und zu automatisieren, dass Sie in der Lage sind mit einem geringeren Ressourcenbedarf schnell und regelmäßig Software zu liefern. Die Automatisierung reicht von der Code-Qualitätsanalyse in lokalen Entwicklungsumgebung über zentralisierte Build-, Integrations- und Testprozesse bis hin zur verteilten Installation und Konfiguration Ihrer Software in Test- und Produktionsumgebungen. Die Visualisierung des Prozessstatus sowie frühzeitiges Entwicklerfeedback mithilfe so genannter Deployment Pipelines helfen Ihnen dabei Fehler frühzeitig zu erkennen und so teure Fehlerlösungen später im Prozess zu vermeiden.
 

 

Configuration Management

Die manuelle Installation und Konfiguration eines einzelnen Software-Pakets, auf einem Rechner in einer Umgebung stellt keine Herausforderung dar. In verteilten Enterprise Software-Systemen hingegen spielt das Deployment- und Configuration Magement eine große Rolle. Besteht ein verteiltes System z.B. aus fünf Software-Komponenten (z.B. Microservices), verteilt auf zehn Servern in drei Umgebungen, müssen bereits 150 Konfigurationen vorgehalten und gepflegt werden. Eine manuelle Wartung ist in diesem Fall bereits sehr fehleranfällig und zeitintensiv. Automatisierte Deployment und Konfigurationsmechanismen können helfen viel Zeit zu sparen und Fehler zu vermeiden. „Welche Version unserer Software ist gerade auf welchen Servern installiert?“ Und „Wie ist der Parameter XY gerade auf Produktion eingestellt?" Oder „Warum wurde Wert XY in der QA Umgebung geändert?“ Wenn Ihr Administrator diese Frage nicht innerhalb von einer Minute beantworten kann, läuft etwas falsch. Hier möchten wir helfen, sprechen Sie uns an.

Virtualization

Virtualisierung und Container-Technologien wie z.B. Docker bringen einen großen Nutzen für die Entwicklung und den Anwendungsbetrieb. Anwendungen können z.B. mithilfe von Betriebssystemvirtualisierung in Containern isoliert werden. Dadurch können die Anwendungen leichter bereitgestellt werden und eine korrekte Trennung der auf einem Server genutzten Ressourcen wird gewährleistet. Entwickler erhalten die volle Kontrolle über die Ausführungsumgebung, die jederzeit und unabhängig vom Server-Betrieb verändert werden kann. Alle Funktionstests laufen gegen dasselbe Image, das in Produktion verwendet wird. Dadurch erreichen wir weniger Abhängigkeiten und weniger Abstimmungsaufwände zwischen Entwicklung und Betrieb.