CI/CD - Mehr Effizienz und Qualität im Entwicklungsprozess

Ein großer Wassertropfen biegt die Spitze eines Grashalms
Das läuft wie mit Wassertropfen

Als ehemalige Designerin ertappe ich mich auch heute noch dabei, dass ich bei "CI/CD" zuerst an Corporate Identity und Corporate Design denke. (Interessanterweise löse ich "CC" nie mit Corporate Communications auf, sondern mit Creative Commons.) Abkürzungen sind sowieso immer nervig, weil sie Fragen provozieren, die zu stellen sich viele dann nicht trauen. Damit ihr nicht fragen müsst, gibt es diesen Artikel.

Was verbirgt sich hinter der Abkürzung CI/CD?

Continuous Integration (CI) und Continuous Deployment (CD) sind zwei zentrale Begriffe in der Welt der Softwareentwicklung, die auf den ersten Blick komplex erscheinen mögen, aber in Wirklichkeit sehr praktische und effiziente Methoden darstellen. Sie sind die Säulen einer modernen und agilen Entwicklungsmethodik, die darauf abzielt, die Qualität der Software zu verbessern und gleichzeitig den Entwicklungsprozess zu beschleunigen.

Continuous Integration (CI)

Continuous Integration, im Deutschen auch als kontinuierliche Integration bezeichnet, bezieht sich auf die Praxis, Änderungen an einem Softwareprojekt regelmäßig und häufig in die Hauptcodebasis zu integrieren. Anstatt große Mengen an Änderungen auf einmal zu integrieren, was oft zu Konflikten und Fehlern führt, werden kleine Änderungen kontinuierlich integriert. Das ermöglicht es, Probleme frühzeitig zu erkennen und zu beheben, was höherer Softwarequalität führt.

Continuous Deployment (CD)

Continuous Deployment hingegen geht noch einen Schritt weiter. Hierbei handelt es sich um die Praxis, Änderungen, die durch die CI erfolgreich getestet wurden, automatisch in die Produktionsumgebung zu übertragen. Damit sind neue Funktionen und Verbesserungen fast sofort für die Endnutzer*innen verfügbar. Dies führt zu einer schnelleren Auslieferung von Funktionen und ermöglicht es auch, wiederum schnell auf Feedback zu reagieren.

Nachteile

Obwohl Continuous Integration und Continuous Deployment viele Vorteile bieten, gibt es auch einige Herausforderungen.

Die Einführung von CI/CD kann einen erheblichen initialen Aufwand erfordern. Die Einrichtung der notwendigen Infrastruktur und Tools, die Schulung des Teams und die Anpassung der bestehenden Arbeitsabläufe können Zeit und Ressourcen in Anspruch nehmen. Zudem kann CI/CD die Komplexität des Entwicklungsprozesses erhöhen. Mit der Einführung von CI/CD kommen in der Regel auch neue Tools und Technologien hinzu, die gelernt und verwaltet werden müssen. Dies kann insbesondere für kleinere Teams eine Herausforderung darstellen.

Da Änderungen häufig und automatisch in die Produktionsumgebung übertragen werden, können Fehler und Probleme schnell zu Ausfällen führen, wenn sie nicht sofort erkannt und behoben werden. Dieses Risiko lässt sich allerdings vermeiden, wenn das automatisierte Deployment zunächst auf einem Testsystem passiert und erst nach sorgfältigen Tests auf das Livesystem ausgerollt wird.

Und schließlich kann es auch schwierig werden, die richtige Balance zwischen Geschwindigkeit und Qualität zu finden. Während CI/CD eine schnellere Auslieferung von Änderungen ermöglicht, kann dies auch dazu führen, dass weniger Zeit für umfangreiche Tests und Überprüfungen zur Verfügung steht, weil schon die nächsten Features bereitstehen.

Trotz dieser Herausforderungen und potenziellen Nachteile ist CI/CD jedoch ein mächtiges Werkzeug, das, wenn es richtig eingesetzt wird, zu einer effizienteren und qualitativ hochwertigeren Softwareentwicklung führen kann. Es ist daher wichtig, die Einführung von CI/CD sorgfältig zu planen und durchzuführen und dabei sowohl die Vorteile als auch die potenziellen Nachteile zu berücksichtigen.

Vorteile

Da Änderungen häufig und in kleinen Schritten integriert werden, können Fehler und Probleme frühzeitig erkannt und behoben werden. Dies führt zu einer höheren Softwarequalität und -stabilität. Gleichzeitig ermöglicht der automatisierte Deployment-Prozess eine schnellere Auslieferung von neuen Funktionen und Verbesserungen. Dies führt zu einer höheren Kundenzufriedenheit und Wettbewerbsfähigkeit.

Auch wenn dieser Absatz wesentlich kürzer ausfällt als die Betrachtung der Nachteile, ist dieser Artikel ein klares Plädoyer für CI/CD.

Ein Beispiel

In einem Intranet-Portal sollen Stellenangebote nicht mehr in Form von News veröffentlicht werden, sondern über einen dedizierten Inhaltstyp. Es soll ein Template für das Einpflegen zur Verfügung gestellt werden, das wiederkehrende Eingaben beschleunigt. Es soll eine dedizierte Seite mit allen offenen Stellenanzeigen geben und eine Kachel auf der Startseite.

Diese Anforderung wird zunächst in kleinere Aufgaben zerlegt:

  • Eingabemaske bereitstellen: Auswahlfeld für Art der Stelle, Textfeld, Abbinder (vorbelegt einemTextbaustein), Schalter für "offen/vergeben"
  • Automatisierte Übersicht erstellen (nur offene Stellenangebote)
  • Gestaltung der Einzelansicht
  • Gestaltung der Übersichtsseite
  • Icon erstellen für die Kachel auf der Startseite

Ausrollen, wenn alles fertig ist?

In einem herkömmlichen Softwareprojekt wird alles fertigentwickelt und gestaltet. Immerhin wurden zwei typische Stellenanzeigen bereitgestellt, an denen sich der Dienstleister orientieren konnte. Dann wird eine Weile über das Icon diskutiert und über ein paar Wochen hinweg mehrere neue Vorschläge gemacht. Und dann fällt der Personalabteilung auf, dass es unbedingt einen Button geben muss, über den man sich die Seite als PDF herunterladen kann.

Oder in schnellen kleinen Schritten

In einem agilen Projekt mit CI/CD hingegen wird zunächst die neue Eingabemaske getestet und ausgerollt. Die Personanabteilung hat angefangen, die ersten Stellenanzeigen einzutragen und dabei fällt auf, dass es noch zwei weitere Felder braucht: eins für Befristung und eins für den Eintrittstermin. Eine Folgeaufgabe wird aufgenommen.

Unterdessen wurde die Übersichtsseite erstellt und parallel hat die Designerin Feinschliff an der Darstellung der Einzelseite vorgenommen. Die Übersichtsseite ist noch nicht schön, aber sie listet die Titel der aktiven Anzeigen nach Typ gruppiert und nach Aktualität sortiert auf. Auch diese Änderung wird ausgerollt. Ein Link zu der Übersichtsseite (noch ohne Icon) kann schon platziert werden.

Während über das Icon diskutiert wird, nimmt die Designerin sich die Darstellung der Übersichtsseite vor. In der Entwicklung werden die zwei weiteren Felder hinzugefügt, der Personalassistent beim Kunden prüft die Änderung auf dem Testsystem und gibt sie frei. Er kann kurz darauf die Informationen bei den vorhandenen Stellenangeboten schon nachpflegen. Das sind jetzt übrigens schon weniger als vor dem Wochenende, weil mittlerweile schon zwei Vakanzen kurzfristig besetzt werden konnten.

Das Icon für die Kachel auf der Startseite wird dann nachgeschoben, wenn die Diskussion beendet ist.

Und für das Generieren eines PDF, das im ursprünglichen Auftrag nicht vorgesehen war, einigt man sich darauf, dass es in den Plan für die nächste Weiterentwicklungsrunde aufgenommen wird.

Technologie

In der Praxis wird CI/CD oft in Kombination mit anderen agilen Methoden und Praktiken wie Scrum oder DevOps eingesetzt. Dabei kommen verschiedene Tools zum Einsatz, darunter Versionskontrollsysteme wie Git, Build-Systeme wie Jenkins und Deployment-Tools wie Kubernetes.

Das muss euch jetzt nichts sagen. Wenn ihr aber schon mal gehört habt, dass euer Dienstleister solche Tools einsetzt, könnte es sein, dass ihr dort gar nicht mehr missionieren müsst.

Projektverantwortliche müssen mitziehen

Als Projektleiter oder Entscheiderin für euer Projekt solltet ihr ein paar Aspekte berücksichtigen, wenn euer Dienstleister mit CI/CD arbeitet.

Projektkultur

CI/CD fördert eine Kultur der ständigen Verbesserung und des gemeinsamen Lernens. Es erfordert eine offene Kommunikation und die Bereitschaft, Fehler frühzeitig zu erkennen, anzuerkennen und zu beheben. Vorwürfe und Zeitdruck müssen dabei außen vor bleiben. Auch sollte man sich disziplinieren können und fokussiert bei der Aufgabe bleiben. Umpriorisieren ist nicht zielführend.

Zeit investieren

Zum einen braucht es etwas Zeit, bis man gelernt hat, die Aufgaben so zu formulieren, dass sie effizient abgearbeitet werden können. Zum anderen braucht es auch regelmäßig ein gewisses Maß an Zeit, die aktuellen Arbeitsergebnisse zu prüfen und Feedback zu geben. Wer meint, er könne die Abnahmen sammeln und Ende des Monats en bloc abarbeiten, sabotiert die Vorteile von CI/CD.

Initial eventuell höhere Kosten akzeptieren

Dienstleister, die die entsprechenden Tools und Technologien einsetzen, haben investiert. Sie haben nicht nur etwas höhere Infrastruktur-Basiskosten, sie haben auch in die Entwicklung und Optimierung von Prozessen investiert und nicht zuletzt müssen sie ihre Infrastruktur auch warten.

Solche Dienstleister machen sich nicht über den niedrigsten Tagessatz bezahlt, sondern über die höhere Effizienz, die Schnelligkeit, auch die schnelle Fehlerbehebung. Die frühzeitig ausgerollten Arbeitsergebnisse können sie auch frühzeitig für die Auftraggebenden bezahlt machen.