Blog

Continuous Delivery Pipeline mit CoreMedia – Teil2

Continuous Delivery beschreibt im Software Entwicklungsprozess die Kette bzw. den Prozess der zwischen Entwicklung und Produktionsstellung liegt. Ziel ist es diesen Weg so schnell, automatisiert und zuverlässig wie möglich zu gestalten. Die Vorteile einer gelungenen Continuous Delivery sind immens und liegen auf der Hand:
Time-To-Market: Features sollen schnell in Produktion gehen
Aus fachlicher Sicht können zum einen Ideen schneller ausprobiert und somit schneller Feedback vom Markt/Kunden eingeholt werden. Aus technischer Sicht bekommt auch der Entwickler schneller Feedback zu den umgesetzten Features. Ich habe Firmen erlebt wo alle 6 Monate ein Release durchgeführt wird. Wenn Fragen dabei auftreten ist es für den Entwickler schwer sich an Implementierungsdetails zu erinnern. Er verliert Zeit, weil er sich wieder hineindenken muss. Im Schlimmsten Fall ist der Entwickler schon gar nicht mehr in der Firma. Auch das kommt häufiger vor als gewünscht.

Höhere Automatisierung: impliziert größere Zuverlässigkeit
Dadurch dass der Prozess hochautomatisiert ist, kann öfters getestet werden. Häufigeres Testen führt wiederum zu höherer Zuverlässigkeit.

Reproduzierbarkeit:
Test Umgebungen werden automatisch und replizierbar hochgefahren. Eine Umgebung in der Entwicklung ist gleich der Umgebung in Test/Abnhame ist gleich der Umgebung in Produktion. Es kann sichergestellt werden, dass z.B. immer die gleiche MongoDB Version mit einem bestimmten Patchlevel in allen Umgebungen hochgefahren wird.
Dieser Punkt ist durch Virtualisierungstechnicken wie Docker und Co. heutzutage machbar und ist auch Gegenstand dieser Artikelserie.

Häufigere Deployments:
Wenn häufiger deployed wird ist die Menge an Features bzw. Menge der gleichzeitigen Änderungen in der Produktion kleiner. Das bedeutet wiederum ein geringeres Risiko, dass was schiefgeht. Zu diesem Punkt ist es zu erwähnen, dass die Softwareentwicklung nach Kanban im Vergleich zu Scrum die geeignetere Methode darstellt, da hier Features nach deren Fertigstellung sofort in die Continous Delivery Kette eingespeist werden können. Bei Scrum passiert das am Ende des Sprints wo dann wieder mehrere Features zusammen in die Produktion gehen.

Das Team entwickelt und checkt die Änderungen in einem Version Control System, in unserem Fall Git, ein. Zu diesem Zeitpunkt greift das Continuous Integration. Continuous Integration ist ein wesentlicher Punkt in der gesamten Kette und führt folgende Schritte durch:

– Build mit Unit Tests (Regressionstests)

– Code Qualitäts Metriken wie Testabdeckung, durchgängige Code Syntax Checks u.a. auch die automatiserte Suche nach bekannten Bug Patterns.

– Performance Tests

– GUI Tests

– Bereitstellung der Features in einer Abnahmeumgebung

– Bis hin zum tatsächlichen Deployment in Produktion

Jeder der Schritte muss erfolgreich durchlaufen werden, bevor der nächste Schritt anfängt. Dieses Vorgehen bezeichnet man in Continuous Delivery auch als Quality Gate.
Wie man sieht bildet der Prozess mit seinen einzelnen Schritten eine Art Pipeline, daher spricht man auch von der Continuous Delivery Pipeline.

Nach dem wir beschrieben haben was Continuous Delivery ist und welche Vorteile es bietet gehen wir in der nächsten Artikelserie auf die spezielle Anforderungen eines Coremedia Systems an den Prozess ein.

Masiar IghaniContinuous Delivery Pipeline mit CoreMedia – Teil2