Continuous Integration mit Agile

Als Vorläufer von DevOps und damit von Continuous Integration, Continuous Delivery und Continuous Deployment (CI/CD) hat Agile einen engen Bezug zu diesen Ansätzen. Wenn Sie die Philosophie hinter Agile kennen, können Sie mehr aus dem CI/CD-Prozess herausholen und zugleich eine CI/CD-Pipeline entwickeln, die Agile in die Praxis umsetzt.

Leider wurden im Verlauf der Jahre die Agile-Kernprinzipien durch Frameworks, Strategien und Beratungskonzepte in den Hintergrund gerückt und auf ein starres Regelwerk reduziert. Aber ohne ein gründliches Verständnis dieser Prinzipien ist es viel schwieriger, sie effektiv umzusetzen.

Die Agile-Grundsätze

Agile ist vor allem eine Denkweise – eine bestimmte Einstellung in Bezug auf die Softwareentwicklung.

Agile erkennt, dass das Ziel darin besteht, funktionierende Software bereitzustellen, und dass die Akzeptanz von Veränderungen und die Förderung der Zusammenarbeit zwischen den einzelnen Beteiligten einen effektiveren Weg zu diesem Ziel darstellt als das starre Befolgen eines Plans für ein vertraglich vereinbartes Pflichtenheft.

Die im Agile-Manifest dargelegten Prinzipien bauen auf diesen Werten auf und bieten Techniken zu deren Umsetzung. Dazu gehören der Aufbau leistungsfähiger und kollaborativer Teams und die Bereitstellung funktionsfähiger Software in häufigen, iterativen Zyklen, die es dem Team ermöglichen, auf Veränderungen zu reagieren.

Der Grund dafür ist einfach: Wenn die Anforderungen von Beginn an in Stein gemeißelt sind und der Plan zu deren Umsetzung strikt zu befolgen ist, verlieren Sie die Flexibilität, bei neuen Erkenntnissen oder bei Änderungen in den Anforderungen und Rahmenbedingungen Ihrer Benutzergemeinde das entwickelte Produkt anzupassen. Beim Agile-Ansatz haben wir ein Endziel vor Augen. Die Einzelheiten dessen, wie wir dieses Ziel erreichen, werden inkrementell erarbeitet.

Unterstützung von Agile durch CI/CD

Die hier beschriebenen Agile-Grundsätze prägten die DevOps-Bewegung, die wiederum die CI/CD-Methoden hervorbrachte.

Während bei Agile – zumindest in der Anfangszeit – der Fokus auf der Arbeit des Entwicklungsteams lag, erweiterte DevOps die Perspektive auf die nachgelagerten Prozesse und die Arbeitsschritte vom Schreiben des Codes bis zum Release.

DevOps betont, wie wichtig es ist, Trennmauern aufzubrechen und teamübergreifend auf ein gemeinsames Ziel – die Bereitstellung funktionierender, nützlicher Software – hinzuarbeiten. Continuous Integration, Continuous Delivery und Continuous Deployment sind DevOps-Methoden, die darauf abzielen, die Softwarebereitstellung zu beschleunigen, ohne Qualitätskompromisse einzugehen.

Durch die Automatisierung möglichst vieler Prozessschritte ermöglicht die Umgebung für kontinuierliche Integration schnelle Feedback-Builds, um die Zeit bis zum Release zu verkürzen.

Angesichts der historischen Verflechtungen zwischen Agile und DevOps dürfte es Sie nicht überraschen, dass einige Elemente einer Build-Pipeline Ihnen auch bei der Agile-Entwicklung helfen. Erstens führt die empfohlene CI-Methode, „früh und häufig Commits vorzunehmen“, automatisch dazu, dass Sie die Arbeit in kleinere Einheiten gliedern.

Das Aufteilen von Features in kleinere Einheiten ist für einen iterativen Build- und Release-Prozess unerlässlich. Da das Ziel darin besteht, dass jeder Commit den CI/CD-Workflow durchläuft und potenziell veröffentlicht werden kann, sollte jeder Commit ein funktionsfähiges Produkt ergeben. Daher hilft Ihnen dieser Ansatz, sich immer auf die Bereitstellung funktionsfähiger Software zu konzentrieren.

Sowohl Agile als auch DevOps betonen den Wert von Zusammenarbeit und Kommunikation. Obwohl der Fokus von DevOps ursprünglich auf der Zusammenarbeit zwischen Entwicklung und Operations lag, können die Vorteile noch viel weiter reichen.

Indem Sie Ihre Staging-Umgebungen in die Build-Pipeline integrieren und über Dashboards Einblicke in die Änderungen in jedem Build bieten, können Sie andere Teile der Organisation – etwa Marketing-, Design- oder Sicherheitsteams – über Ihre Fortschritte informieren und Feedback einholen.

Zentraler Bestandteil jeder CI/CD-Pipeline sind automatisierte Tests, die schnelles Feedback zu Codeänderungen bieten und Vertrauen in die Buildqualität aufbauen. Das Ausführen automatisierter Tests nach jedem Commit ist ein wichtiger Schritt, um sicherzustellen, dass Sie funktionsfähige Software bereitstellen.

Die häufige Bereitstellung von Software an die Benutzer*innen steht ganz oben auf der Agile-Agenda, und eine CI/CD-Pipeline leistet hierzu einen entscheidenden Beitrag. Durch die Automatisierung der Schritte im Releaseprozess konnten Entwicklungsteams die Release-Häufigkeit deutlich steigern – tägliche oder sogar stündliche Bereitstellungen gehen weit darüber hinaus, was beim Schreiben des Manifests realistisch erschien.

Die kontinuierlichen Feedbackzyklen, die das Herzstück der CI/CD-Pipeline bilden und die kontinuierliche Verbesserung sowohl der entwickelten Software als auch des dabei verwendeten Prozesses ermöglichen, fördern auch die Umsetzung des Agile-Prinzips, gemäß dem der Prozess regelmäßig im Team reflektiert und angepasst werden sollte. Das Einbauen und Berücksichtigen von Feedbackschleifen hilft beim Etablieren des im Manifest empfohlenen nachhaltigen Entwicklungstempos.

Aufbau einer agilen Organisation

Die Implementierung einer CI/CD-Pipeline kann zwar eine agile Denkweise fördern – aber sie ist genauso wenig als Wundermittel geeignet wie die vielen verschiedenen Agile-Frameworks und -Lösungen, die seit der ursprünglichen Definition des Agile-Ansatzes aus dem Boden geschossen sind.

Allerdings gibt es einige gängige Antipatterns in CI/CD-Methoden, die darauf hinweisen, dass Ihr Unternehmen vielleicht doch nicht so agil ist, wie Sie es sich wünschen würden.

Ein häufiger Stolperstein sowohl für den Betrieb einer effektiven Build-Pipeline als auch für die Umsetzung der Agile-Prinzipien für eine Umgebung für kontinuierliche Integration sind manuelle Phasen im Releaseprozess – zum Beispiel das Durchlaufen verschiedener Beratungsgremien oder die Anforderung, detaillierte Änderungshinweise und Risikobewertungen bereitzustellen, bevor ein neuer Build in die Produktion (oder auch nur in eine Staging-Umgebung) übernommen wird.

Mit solchen Vorgaben soll normalerweise ein gewisses Maß an Aufsicht und Kontrolle über Releases sichergestellt werden. Allerdings verlangsamt dies den Prozess erheblich und unterläuft den Sinn eines automatisierten Testprogramms, das eigentlich Vertrauen in den Build geben sollte.

Kennzahlen, die die Robustheit der CI/CD-Pipeline belegen, können helfen, diesbezügliche Bedenken auszuräumen. Gleichzeitig können Dashboards und automatisierte Benachrichtigungen beim Informieren der Beteiligten über Änderungen, die durch die Pipeline bereitgestellt werden, viel manuelle Arbeit einsparen.

Ein weiteres häufiges Warnzeichen sind Anfragen, den Prozess zu verlangsamen und den Abstand zwischen Releases durch das Bündeln von Änderungen zu strecken.

Zwar kann das Bündeln von Änderungen in wöchentliche oder vierzehntägige Updates für einige Produkte angemessen sein, aber bei noch selteneren Updates können die Vorteile verloren gehen, die Sie durch die Beobachtung Ihrer Änderungen in der Produktion und die Anpassung Ihrer nächsten Schritte anhand dieses Feedbacks erzielen.

Der Übergang wird reibungsloser, wenn Sie den Sinn hinter der kontinuierlichen Integration von Agile, DevOps und CI/CD vermitteln und auf allen Ebenen der Organisation Unterstützung für diesen Prozess gewinnen können.

Eine der Hürden sowohl bei CI/CD als auch bei Agile ist ein Mangel an Vertrauen, der dazu führt, dass es den Teams nicht gelingt, die notwendigen Beiträge zu leisten. Wenn Entscheidungen oder Änderungen mehrere Genehmigungsebenen durchlaufen müssen, verlangsamt dies den Prozess und untergräbt den Nutzen eines schnellen Feedbacks.

Ein souveränes Team fordert von seinen Mitgliedern funktionsfähige Software – und vom Management die richtigen Tools und die richtige Umgebung, um gute Arbeit leisten zu können.

Fazit

Agile wird manchmal irreführenderweise als festes Regelwerk dargestellt, das auf eine bestimmte Weise angewendet werden muss. Indem Sie jedoch die zugrunde liegenden Prinzipien verstehen und an Ihre Organisation anpassen, während Sie gleichzeitig auf das Auftreten von Antipatterns achten, können Sie eine agile Denkweise für die kontinuierliche Integration fördern.

Die Einführung von CI/CD-Methoden hilft Ihnen, die Werte des Agile-Ansatzes in die Praxis umzusetzen und von iterativen Entwicklungszyklen und häufigen Releases zu profitieren.