Continuous Integration & Delivery
Mit der Cloud zu besserer Software-Qualität
von
Thomas
Hafen - 31.03.2017
Foto: bluebay / Shutterstock.com
Continuous Integration und Delivery beschleunigen die Software-Entwicklung, garantieren die Stabilität und Funktionalität von Software und schützen vor unliebsamen Überraschungen.
Schnelligkeit und Flexibilität sind für den Unternehmenserfolg entscheidend. Das gilt auch, wenn es um Software-Entwicklung geht. Konzepte wie Extreme Programming, Agile Development oder DevOps sollen deshalb den Weg von der Idee zum fertigen Software-Produkt beschleunigen und dessen kundennahe Weiterentwicklung garantieren.
Damit die Qualität dabei nicht auf der Strecke bleibt, benötigt man automatisierte Testprozesse, die Code-Änderungen möglichst früh auf ihre Auswirkungen im Gesamtsystem überprüfen – idealerweise bereits dann, wenn ein Entwickler seine Arbeit in eine Versionsverwaltung wie Git, Subversion oder BitKeeper eincheckt.
Diese automatische kontinuierliche Qualitätssicherung wird allgemein als Continuous Integration (CI) bezeichnet. „CI basiert auf der Annahme, dass sich ein Programmierfehler unmittelbar nach seiner Entstehung sehr viel schneller finden und korrigieren lässt, als wenn man erst später danach sucht“, sagt Brian Dawson, DevOps Evangelist bei CloudBees, Anbieter einer Enterprise-tauglichen Distribution der Continuous-Integration-Plattform Jenkins.
Mit frühen Tests lassen sich außerdem unangenehme Überraschungen vermeiden, die auftreten können, wenn man erst spät große und komplexe Code-Bereiche zusammenführen muss. „Das macht die Arbeit von Software-Teams vorhersagbarer und weniger riskant“, erklärt Ian Buchanan, Developer Advocate und Integration Specialist für das DevOps-Ökosystem bei Atlassian, einem Hersteller von Entwicklungs- und Projektmanagement-Software wie Jira, Bitbucket oder Bamboo. Im schnellen und regelmäßigen Feedback sieht Mathias Meyer, CEO von Travis CI, den größten Vorteil von Continuous Integration: „CI gibt Entwicklungsteams die Sicherheit und das Selbstvertrauen, dass die eigenen Änderungen – zumindest im Kontext einer guten Testsuite – den Anforderungen gerecht werden und so schnell wie möglich in Produktion und damit zum Kunden gelangen können.“
Entwicken in der Cloud: AppVeyor bietet Continuous Integration aus der Cloud auch für Windows-Umgebungen.
Michael Stähler, der sich als Solution Architect bei der Opitz Consulting Deutschland unter anderem mit der Integration von Unternehmensanwendungen beschäftigt: „CI gibt mir Informationen darüber, ob meine Software an sich funktioniert, sagt aber nicht, wie sie sich im Produktivbetrieb verhält und wie sie beim Kunden ankommt.“ Stähler rät daher, einen Schritt weiterzugehen und auch die Auslieferung zu automatisieren, ein Konzept, das als Continuous Delivery (CD) bezeichnet wird. „Um eine Software in den Produktivbetrieb zu bringen, sind viele Schritte notwendig. Führt man diese manuell durch, können sich Fehler einschleichen, die sich mit Continuous Delivery weitgehend vermeiden lassen.“ Ian Buchanan von Atlassian hält Continuous Delivery ebenfalls für einen wichtigen Baustein, um mehr Software-Qualität zu erreichen: „Mit Continuous Delivery können Entwicklerteams ihren Kunden letztlich schneller bessere Software liefern.“
Vielfach wird das Konzept auch als „Continuous Deployment“ bezeichnet. Die beiden Begriffe sollte man jedoch nicht verwechseln, sagt CloudBees-Evangelist Dawson: „Bei Continuous Delivery ist eine Software immer Release-bereit, Continuous Deployment bedeutet dagegen, dass jede validierte Änderung auch direkt in die Produktivumgebung integriert wird.“