Continuous Integration gehört zu den agilen Softwareentwicklungsmethoden und beruht stark auf dem Prinzip des iterativen Arbeitens. Im Kern geht es darum, Software inkrementell auszuliefern und kurze Feedbackschleifen mit dem Kunden zu etablieren, um Projekte schnell und effizient voranzubringen und qualitativ hochwertige Software zu erstellen.

Mit Continuous Integration zum Continuous Relaunch

Der Trend hin zur kontinuierlichen Website-Optimierung (Continuous Relaunch) anstelle eines alle fünf Jahre stattfindenden Big Bang Relaunchs, unterstützt die Notwendigkeit von Continuous Integration zusätzlich. Sollen nämlich kontinuierlich kleine Verbesserungen an einem Webprojekt umgesetzt werden, verkürzt dieser Prozess die Entwicklung dahingehend, dass Fehler schnell identifiziert und beseitigt werden können, wie beispielsweise solche, die durch Interdependenzen des Codes auftreten. Detailliertere Informationen dazu, wie wir Software entwickeln, finden Sie unter Scrum

Um eine kontinuierliche Auslieferung zu gewährleisten, müssen die folgenden drei Punkte gewährleistet sein: 

  1. Reibungsloses und automatisiertes Deployment der Software (Continuous Deployment)

  2. Kontinuierliches Testen der (Entwicklungs-)Umgebung, damit keine gegenseitigen Abhängigkeiten von Code/Features auftreten

  3. Integration des Kunden in den Feedback-Prozess


punkt.de Infrastruktur

Entwicklungsinfrastruktur bei punkt.de

Die Entwicklungskette beginnt bei uns auf den Rechnern der Entwickler. Um zu gewährleisten, dass die Software in der Art, wie Sie von uns programmiert wurde, auch auf den Servern Ihres Projektes läuft, haben unsere Entwickler immer eine virtualisierte Umgebung des Projektes auf ihren Arbeitsgeräten. Dies hat den Vorteil, dass zum einen eine exakte Umgebung abgebildet wird - und so Abhängigkeiten vermieden. Einmal erstellt, kann diese Umgebung zum anderen schnell zwischen verschiedenen Personen ausgetauscht werden. 

Selbstverständlich setzen wir Versionierungssysteme zum verteilten Arbeiten ein. Dabei setzen wir auf die Open Source Lösung Gitlab, die den Code für Ihr Projekt verwaltet. Von dort aus wird der Code automatisch an einen Integrationsserver weitergereicht, der automatisiert bestimmte kleinere Test-Szenarien durchführt und den Code anschließend je nach Einstellung auf das Test- oder auf das Produktiv System deployen kann. Durch diesen Prozess und den hohen Automatisierungsgrad in unserer Infrastruktur sind wir in der Lage auch große Projekte innerhalb kurzer Zeit auf komplexe Infrastrukturen zu deployen. 

Beim Deutsche Post Projekt konnten wir so eine Menge Zeit sparen. Zu Beginn der Zusammenarbeit war das Deployment nicht nur zeitaufwendig - fünf Personen waren circa sieben Stunden beschäftigt -, sondern auch fehleranfällig, weil nicht automatisiert gestestet wurde. Dank unserer Continuous Integration Infrastruktur benötigt eine Person heute nur noch circa 30 Minuten. Dabei wird hauptsächlich der Prozess überwacht und die Dokumentation für den aktuellen Release angefertigt. 


Um Software schnell und automatisiert zu deployen, ist es unerlässlich, dass sie zu jedem Zeitpunkt während des Projektes automatisiert getestet werden kann. Um das Testing auf verschiedenen Ebenen durchführen zu können, setzen wir auf unterschiedliche Technologien. Mehr Informationen zu diesen Technologien finden Sie unter dem Reiter „eingesetzte Technologien“.

Testingsoftware die punkt.de nutzt

Diese Software setzt punkt.de für Testing ein: Kibana, Behat, mocha, phantom JS, PHP Unit, Gatling, GTmetrix (v.l.n.r.)

Von den klassischen Unit-Tests, die zwar hoch funktional, aber oft zu gekabselt sind, über funktionale Tests mit Behat bis hin zu Last- und Performance-Tests mit Gatling setzen wir unterschiedliche Arten von Tests ein. Sogar Pagespeed und Y-Slow werden von uns kontinuierlich mit GTmetrix getestet. So können wir bei Bedarf eingreifen - und sie beruhigt schlafen.

Bei umfangreichen Webprojekten ist die Anzahl der Test meist relativ hoch, was dazu führt, dass das Testen entsprechend viel Zeit benötigen würde, wenn alle Tests zur selben Zeit durchgeführt werden würden. Unsere Lösung: Zur richtigen Zeit das richtige Testen.

Die verschiedenen Testing Stages

Diese Testing-Stages setzt punkt.de ein

Die Commit Stage wird bei jedem Code Commit ausgelöst und überprüft den Code auf Codestyles oder semantische Fehler. Ist die Commit Stage erfolgreich durchgelaufen folgen die funktionalen Tests auf der Functional Stage. Es gibt aber auch bestimmte Stages, die so lange laufen oder so viel Last auf dem System benötigen, dass diese zu bestimmten Zeiten ausgelöst werden. Die beiden Stages, die wir hauptsächlich benutzen, sind die Acceptance Stage und die Load Stage. Die Acceptance Stage führt umfangreiche Tests in Oberfläche und Funktionalität durch und benötigt dadurch so viel Zeit, dass sie in den meisten Projekten nachts durchgeführt wird. Auch die Load Stage muss meist nachts betrieben werden, da hierbei oftmals auch angeschlossene Systeme getestet werden und diese tagsüber die Last für ihren eigentlichen Zweck benötigen. 

Sie erhalten von uns eine stabile und sichere Software, die ohne hohe Kosten immer aktuell gehalten wird. Ganz gleich, ob sie ein Intranet-Portal für Ihre Mitarbeiter oder Ihre Corporate Webseite ausliefern wollen, wir ermöglichen es Ihnen, ohne lange Wartungszeiträume und ausgiebige Planungen auf Ihrer Seite neue Features oder Fehlerbehebungen auszurollen.

Zusätzlich erhalten Sie vollen Zugriff auf unser Testsystem, auf dem Sie jederzeit Änderungen an Ihrem System nachvollziehen können. Dadurch behalten Sie den Überblick über alle Entwicklungen müssen nicht bis zum nächsten Review (der vielleicht erst in vier bis sechs Wochen stattfindet) warten, um festzustellen, dass die Software in die falsche Richtung entwickelt wurde.

Weitere Software, die wir nutzen:

Weitere Software die punkt.de für CI nutzt

(von links nach rechts: Jenkins, Gitlab, Vagrant, Chef, Docker)

Offene Fragen zu Continuous Integration?

Sollten Sie weitere Fragen zum Verständnis von Continuous Integration haben, kontaktieren Sie uns gerne. 


Sie benötigen Hilfe beim Implementieren?

Gerne helfen wir Ihnen auch Ihre Softwareentwicklung mit Hilfe von Continuous Integration zu optimieren. Sprechen Sie uns an und wir setzen uns mit Ihnen zusammen die beste Lösung für Ihre Bedürfnisse zu finden.