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.
Der Prozess um Continuous Integration & Delivery einzurichten ist leider nicht trivial und involviert mehrere Schritte:
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.
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.
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.
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.
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:
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.
Wir bieten einen Newsletter mit technischen Artikeln an für den Sie sich jetzt direkt registrieren können.
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 die Qafoo bereits vertrauen.
Technische Hintergründe in unserem Blog.
Präsentation von Qafoo auf verschiedenen Konferenzen.