Continuous Integration & Delivery

Was die digitale Transformation für Softwareentwickler bedeutet

| Autor / Redakteur: Sebastian Sturm * / Stephan Augsten

Wie eine Continuous Delivery Pipeline aufgebaut ist.
Wie eine Continuous Delivery Pipeline aufgebaut ist. (Bild: DoubleSlash)

Mit der digitalen Transformation geht ein gesellschaftlicher und wirtschaftlicher Wandel einher. Für die Softwareentwickler, die die Digitalisierung mitgestalten und umsetzen, birgt dieser Wandel besondere Herausforderungen.

Während die digitale Transformation die Rahmenbedingungen für Konsumenten, Unternehmen und deren Mitarbeiter immer rasanter verändert, gehen Softwareentwickler nicht ganz unvorbereitet in die neue Situation. Sie müssen schon länger auf die wachsende Dynamik und die Forderungen nach Kosteneinsparungen für IT-Budgets reagieren.

Die Werkzeuge dafür haben sich in den letzten Jahren entwickelt und etabliert. Nun stehen Unternehmen vor der Herausforderung, den nötigen Kulturwandel einzuleiten. Und wie ihre Kollegen in Führungsetagen und Fachabteilungen müssen auch die Entwickler umdenken. Die Unternehmenskultur will neu definiert, interne Prozesse wollen optimiert werden, der Einsatz neuer digitaler Technologien und Methoden wird zunehmend wettbewerbsrelevant.

Um die Transformation zu ermöglichen und ihre Anforderungen zu erfüllen, muss sich auch die Software-Entwicklung auf die neue Dynamik einstellen. Neue IT-Lösungen müssen heute schneller verfügbar sein und höhere Qualität bieten denn je. Denn je konsequenter ein Unternehmen seine Effizienz mittels Digitalisierung steigert und den Kunden in den Mittelpunkt stellt, desto erfolgreicher ist es.

Dazu müssen Anforderungen zügig umgesetzt werden. Tests, Lern- und Anpassungsprozesse dürfen die Entwicklung nicht bremsen. Quälend langes Bugfixing nach einem neuen Release kostet zu viel Zeit. Das geht schlicht nicht mehr.

Kurzum: Es ist an der Zeit, die Agilität in der Softwareentwicklung konsequent umzusetzen. Statt großer, zeit- und kostenintensiver Software-Einführungen sind agile Entwicklung und vollautomatisierte Prozesse gefragt.

Continuous Delivery bedient die Dynamik der Veränderung

Wie aber ist das zu leisten? Zu den relativ neuen Methoden, die geeignet sind, Softwareentwicklung in der geforderten Qualität, Geschwindigkeit und Effizienz umzusetzen, gehören Continuous Integration, Delivery und Deployment. Richtig angewandt, können sie Unternehmen in Sachen Echtzeitfähigkeit auf ein neues Level heben.

Ihre entscheidenden Merkmale sind:

  • die Automatisierung umfangreicher Testszenarien
  • die Durchführung dieser Tests während der laufenden Entwicklung, daher der Begriff „Continuous“

Der Vorteil liegt auf der Hand: Eventuelle Fehlermeldungen liegen dem Programmierer binnen weniger Minuten oder Stunden vor, er ist gedanklich noch im eben geschriebenen Code und kann Bugs schneller und effizienter beheben.

Wie sich Continuous Delivery, Integration und Deployment voneinander abgrenzen.
Wie sich Continuous Delivery, Integration und Deployment voneinander abgrenzen. (Bild: doubleSlash)

Ihre Bewährungsproben in der Praxis haben diese Methoden bereits bestanden – und sie erweisen sich zunehmend als Turbo für die Dynamik in der Softwareentwicklung. Digitale Giganten wie Google, Amazon, Netflix und andere arbeiten längst damit. Das versetzt sie in die Lage, ständige Anpassungen im Deployment- und Betriebsprozess vorzunehmen und ihren Kunden laufend neue Features zu präsentieren. Für andere Unternehmen erhöht das den Wettbewerbsdruck enorm.

Monolithen sind nicht agil

Fest steht: Software-Monolithen, wie sie früher üblich waren, verbunden mit langen Release-Zyklen, Bugfixing-Phasen und im schlimmsten Fall tagelangen Downtimes, stoßen angesichts dieser neuen Anforderungen an ihre Grenzen. Kleine Bausteine mittels Microservices und kurze Entwicklungs-Sprints sind das Gebot der Stunde, vollautomatisierte Tests ersetzen über weite Strecken manuelle Checkphasen.

Möglich wird das mit Continuous Integration und Delivery. Denn diese Methoden sparen Zeit und steigern die Qualität der Software. Sie machen Ergebnisse schneller sichtbar, binden den Kunden in den Entwicklungsprozess mit ein und erlauben es, veränderte Anforderungen quasi sofort in die laufende Entwicklung einzubringen.

Integration automatisieren

Der Vorteil von Continuous Integration ist, dass bereits bei den Modultests offensichtliche Fehler abgefangen werden, wodurch sich die Schleifen zwischen Qualitätssicherung und Entwickler reduzieren lassen. Das spart Kosten. Ständige Regressionstests auf Modulebene steigern zudem die Qualität der Software.

Im nächsten Schritt, der Continuous Delivery, entstehen tatsächlich lieferbare Softwarepakete, die sich auf jedem beliebigen System aufspielen lassen. Entscheidend ist dabei die Automatisierung – vor allem der Tests: Der Entwickler spielt seinen eben fertiggestellten Code ins Code-Repository ein. Jetzt durchläuft der Code zahlreiche automatisierte Tests in der sogenannten Continuous Delivery Pipeline. Noch während der Testphase bekommt der Entwickler Rückmeldungen über eventuelle Fehler.

Wie die Pipeline im Detail aufgebaut ist, hängt natürlich vom jeweiligen Projekt und dessen spezifischen Anforderungen ab. Zu den typischen Funktionen gehören Unit-Tests, in denen die Software auf niedrigster Ebene und in kleinsten Einheiten getestet wird.

Zur statischen Code-Analyse gehört das Testen auf Bugs und Verwundbarkeit und ähnliches. Auch die automatische Installation der Applikation auf der Testumgebung und Integrationstests sind in der Regel sinnvoll. Ebenso wie Akzeptanztests, bei denen Use Cases im Browser geprüft werden, oder Lasttests.

Übrigens: Je früher getestet wird und je kleiner die Units sind, desto schneller und zielgenauer ist das Feedback für den Entwickler. Deshalb sollte den Unit-Tests ein hoher Stellenwert eingeräumt werden.

Beispiel einer Continuous-Delivery-Pipeline.
Beispiel einer Continuous-Delivery-Pipeline. (Bild: doubleSlash)

Die Pipeline wird so oft durchlaufen, bis keine Fehlermeldung mehr kommt. Jetzt kann die Software direkt ausgeliefert werden. Auf diese Weise wird eine ständige Lieferfähigkeit der Software erreicht. Das wäre mit einer manuellen Prozesskette nicht annähernd so effizient umsetzbar.

Auch bei Continuous Delivery wird nicht gänzlich auf manuelle Tests verzichtet. Allerdings ist die Software dann bereits so ausgereift, dass der Aufwand deutlich geringer ist als bislang üblich.

Natürlich ist mit dem Schreiben und Aufsetzen der automatisierten Tests und der Continuous Delivery Pipeline ein gewisser Initialaufwand verbunden. Der zahlt sich am Ende aber aus – für das Management und die Projektleiter, und nicht zuletzt für die Entwickler. Denn ihre Arbeit wird wesentlich einfacher und bringt mehr Erfolgserlebnisse. Allein schon, weil sie nicht wochenlang warten müssen, bis QS-Schleifen durchlaufen sind.

So lassen sich Fehler viel schneller und direkter beheben, ohne dass sich der Programmierer wieder neu in den Code eindenken muss. Darüber hinaus reduziert sich das Projektrisiko für alle Beteiligten, weil immer ein funktionierender Softwarestand verfügbar ist.

Deployment wird zum Kinderspiel

Mit Continuous Integration & Delivery automatisiert sich auch die Installation einer neuen Softwareversion. Das Deployment wird quasi zum Kinderspiel. Die Downtimes machen meist einen Bruchteil dessen aus, was früher üblich war.

Ein entscheidender Erfolgsfaktor für diese Methoden der Software-Entwicklung ist, dass sie gewissenhaft umgesetzt werden. Wer die Vorteile wirklich will, muss konsequent sein und darf den Aufwand nicht scheuen, der am Anfang entsteht. Hier muss ein Bewusstsein bei allen Beteiligten geschaffen werden, bei Projektleitern, Kunden und den Entwicklern selber.

Der initiale Aufwand macht sich nämlich spätestens dann bezahlt, wenn eine Software länger eingesetzt wird und beispielsweise Change Requests anstehen. Weniger Fehler heißt am Ende auch weniger Ärger, weniger Zeitaufwand und weniger Kosten. Abgesehen davon können die automatisierten Tests natürlich auch in anderen Szenarien und Projekten genutzt werden.

Sebastian Sturm
Sebastian Sturm (Bild: doubleSlash)

Continuous Integration und Delivery lassen sich natürlich auch in klassischen Softwareprojekten nutzbringend einsetzen. Zum Beispiel, um die Effizienz innerhalb des Entwicklungsteams zu steigern. Generell gilt: Die zunehmende Komplexität und die wachsenden Anforderungen an Unternehmen und die IT lässt sich auf mittlere Sicht nur beherrschen, wenn automatisierte Softwareentwicklung zum Standard wird.

* Sebastian Sturm ist Senior Software-Consultant und seit 15 Jahren bei doubleSlash. Er hat umfangreiche Projekterfahrungen im Umfeld der Logistik und Automobilbranche. Seine langjährige Expertise in Infrastruktur-Planung, Continuous Delivery, Java EE, Webservices, IoT und DevOps bringt er in zahlreichen IT-Projekten mit ein.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44756586 / Continuous Delivery & Integration)