Qafoo GmbH - passion for software quality

To stand apart, with confidence in one's own beliefs, is one of the greatest challenges for an innovator. By providing inspiration, our expertise helps you fly further and faster.

Continuous Integration & Delivery

In agilen Teams und schnelllebigen Arbeitsumgebungen ist es eine Herausforderung für ständig funktionierende Software zu sorgen. Von Web-Applikations-Entwicklern wird erwartet dass sie schnell neue Features entwickeln können und Fehler zeitnah beheben. Anschließend sollen diese Änderungen innerhalb von Minuten einem globalen Publikum zu Verfügung gestellt werden. Wie kann man das erreichen?

Continuous Integration bedeutet dass die Software kontinuierlich überprüft wird ohne dass der Entwickler dazu selbst handeln muss. Nach jedem Commit, nach jedem Push. Das gibt Entwicklern und Product Owner ein gutes Gefühl für die Stabilität der eigenen Software und das Wissen sie jederzeit releasen zu können.

Continuous Delivery baut auf Continuous Integration auf und bedeutet dass die Software regelmäßig automatisch oder halb-automatisch deployed wird. In vielen Szenarios ist es möglich dass die Software mehrfach täglich oder sogar mehrfach pro Stunde live geht.

Forschungsergebnisse zu den Vorteilen von Continuous Integration & Delivery für Ihr Team und Organisation können hier gefunden werden. Die wichtigsten Ergebnisse sind:

Firmen mit hoch-funktionalen IT-Organizationen haben eine doppelt so hohe Wahrscheinlichkeit ihren Profit, Marktanteil und Produktivität zu erhöhen.
Die Verwendung von Continuous Delivery wie Versionskontrolle, Continuous Integration und Test-Automatisierung führen zu besserer IT-Performance.
Continuous Delivery senkt messbar den Schmerz beim Entwickeln und Team-Burnout.

Was können wir tun?

Der Prozess um Continuous Integration & Delivery einzurichten ist leider nicht trivial und involviert mehrere Schritte:

  1. Automatisierte Tests müssen existieren
  2. Einrichten einer Build-Umgebung
  3. Verstehen und Umsetzen von Software Migrationen
  4. Integration der Software auf einem Build-Server
  5. Deployments auslösen

Es ergibt keinen Sinn mit Continuous Integration zu beginnen ohne dass automatisierte Tests vorhanden sind da man wissen muss ob die eigene Software überhaupt funktioniert. Damit sich alle Beteiligten sicher sein können dass die Software funktioniert muss eine ausreichend hohe Testabdeckung vorliegen.

2. Build-Umgebung

Als eine Build-Umgebung wird eine Menge von Scripten bezeichnet die die automatisierten Tests in einer reproduzierbaren Umgebung ausführen. Das involviert häufig das Installieren von Abhängigkeiten und Aufsetzen von Datenbanken oder ähnlichen Aufgaben.

Es gibt verschiedene Abstufungen von Automatisierung. Von der Automatisierung des vollständigen Server-Setups (Infrastruktur-Automatisierung) bis zur Annahme das alle notwendigen Pakete und Bibliotheken vorhanden sind und nur die eigene Software installiert werden muss. Auch wenn generell zu mehr Automatisierung zu raten ist muss der dafür notwendige Aufwand nicht immer gerechtfertigt sein.

Die Technologien hierfür variieren stark. Bei Qafoo haben wir am meisten Erfahrung im Umgang mit ant uns ansible. Wir kennen und verwenden aber auch shell- und PHP-Skripte, Makefiles, Grunt oder Phing. Die tatsächlich eingesetzte Technologie ist hier viel weniger wichtig als die Ideen dahinter.

3. Software-Migrationen

Wenn Software sich ändert tun es auch ihre Abhängigkeiten und Datenstrukturen. Wenn Continuous Integration oder Delivery verwendet werden sollen muss auch sichergestellt werden dass, zum Beispiel, das Datenbankschema auf dem neuesten Stand ist. Da dies wiederum zu Datenverlusten führen kann muss hier mit viel Obacht agiert werden.

4. Integration auf dem Build-Server

Dieser Schritt nennt sich endlich Continuous Integration, aber alle vorhergehenden Schritte sind hierfür essentiell. Die Verwendung von Build-Servern wie Jenkins, Travis oder Bamboo ist letztlich trivial wenn alle vorigen Schritte erfolgreich umgesetzt wurden. Aber es gibt immer noch viele Konfigurationsoptionen wie verschiedene Zielplattformen oder sinnvolle Visualisierungen von Build-Fehlern.

5. Deployments

Der letzte Schritt, Continuous Delivery, kann erneut nur gegangen werden wenn man alle Schritte zuvor schon hinter sich gebracht hat. Er beschreibt das automatische oder teil-automatische Auslösen eines Deployments:

  • Einfaches Shell-Kommando um auf Staging- oder Live-Server zu deployen.
  • Kommando für den Chatbot um das Deployment zu starten
  • Vollautomatisches Deployment nach erfolgreichem Build (nicht empfohlen für Produktiv-Server)

In einem Workshop gehen wir zusammen mit den Entwicklern der Software den ganzen Weg. Einen Schritt nach dem anderen werden dafür sorgen dass erst die Tests automatisiert und kontinuierlich ausgeführt werden um anschließend die Applikation automatisiert releasen zu können.

Mit unserem Newsletter auf dem Laufenden bleiben

Wir bieten einen Newsletter mit technischen Artikeln an für den Sie sich jetzt direkt registrieren können.

Wir können helfen

Qafoo pflegt mehrere vollständig automatisierte Software-Setups mit Continuous Integration & Delivery. Wir haben mehreren unserer Kunden geholfen dies für deren eigenen Stack umzusetzen. Wir haben sehr verschiedene und komplexe Setups automatisiert, von einfachen Servern bis hin zu Serverfarmen – mit verschiedenen Anforderungen an das Automatisierungsniveau.

Die Umsetzung von Continuous Delivery wird zu neuem Seelenfrieden führen. Immer zu wissen dass die eigene Software in einem funktionierenden Status ist und deswegen ständig released werden kann ist eine große Errungenschaft. Automatisieren Sie ihr Software-Setup für Ihre eigene Gemütsruhe.

Kunden

Kunden die Qafoo bereits vertrauen.

Blog

Technische Hintergründe in unserem Blog.

Präsentationen

Präsentation von Qafoo auf verschiedenen Konferenzen.

Verwandte Blog-Posts

    Jetzt Kontakt aufnehmen!