Continuous Integration & Delivery

Mit der Cloud zu besserer Software-Qualität

von - 31.03.2017
Cloud, Software und Development
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 Dev­Ops 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 konti­nuierliche 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.
Ian Buchanan
Developer Advocate und ­Integration ­Specialist für das DevOps-Ökosystem bei ­Atlassian
„Continuous Integration macht die Arbeit von Software-Teams vorher­sagbarer und weniger riskant.“
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 Produk­tion und damit zum Kunden gelangen können.“
Entwicken in der Cloud: AppVeyor bietet Continuous Integration aus der Cloud auch für Windows-Umgebungen.
Das Konzept von Continuous Integration existiert bereits seit den frühen 1990er-Jahren und ist mittlerweile gut eta­bliert. Wer Software nicht nur schnell und effizient entwickeln, sondern auch auf den Markt bringen möchte, sollte allerdings nicht bei Continuous Integration stehen bleiben, empfiehlt
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.“
Die Vorteile von CI und CD
  • Häufige, frühe Test mit reproduzierbaren und automa­tisierten Prozessen führen zu einer höheren Qualität der Software.
  • Die Automatisierung zahlreicher Verfahrensschritte erhöht die Produktivität in der Entwicklung, der Qualitäts­sicherung und beim Betrieb der Software.
  • Dank der Qualitäts- und Produktivitätsgewinne lässt sich Software wesentlich schneller zur Marktreife entwickeln.
  • Continuous Integration und Continuous Delivery sorgen für mehr Motivation und Zufriedenheit in den Software-Teams und verhindern damit das Abwandern hoch qualifizierter Mitarbeiter.