Mit der Cloud zu besserer Software-Qualität

Entwickeln in der Cloud

von - 31.03.2017
Wer die Investition in eine eigene hochverfügbare Infrastruktur und deren Pflege scheut, findet mittlerweile in der Cloud zahlreiche Alternativen. „Moderne Cloud-Technologien bieten von CI und CD als Software as a Service bis hin zu schlüsselfertigen Systemen auf Private-Cloud-Infrastrukturen wie OpenStack alle Optionen“, sagt Dawson. Die Kosten sind jedoch nur ein Aspekt, auch der administrative Aufwand für Installation und Verwaltung der Hardware darf nicht unterschätzt werden. „Alles, was operativen Overhead verursacht, wie zum Beispiel die Pflege und Wartung von internen CI-Servern, lenkt von der eigentlichen Mission und Vision eines Unternehmens ab“, warnt Travis-CI-Chef Meyer.
Mathias Meyer
CEO bei Travis CI
http://travis-ci.org
Foto: Travis CI
„Wir haben es schon oft erlebt, dass Teams mit (…) Erwartungen zu Travis CI kommen, die nicht dem entsprechen, was wir uns unter einem guten und gesunden Workflow vorstellen.“
Besonders Start-ups, die oft nicht abschätzen können, wie sich ihr Geschäft entwickelt, profitierten von einer Cloud-Entwicklungsum­gebung, sagt Michael Stähler: „Solche Unternehmen können mit einer Cloud-Lösung schnell und ohne große Investitionen mit der Software-Entwicklung starten.“
Ideal sind Continuous-Integration- und Continuous-Delivery-Systeme aus der Cloud natürlich immer dann, wenn die Anwendung auch cloudbasiert ausgeliefert wird. „Software-Entwicklung wird sehr viel einfacher, wenn sich Build- und Staging-Server in unmittelbarer Nähe der Produktiv-Server befinden“, sagt Ian Buchanan von Atlassian, „scheitert ein Build oder ein Test, lässt sich der Fehler sofort im Code beheben und eine korrigierte Version ausliefern.“ Umgekehrt gilt dies allerdings auch, ergänzt Stähler: „Bei On-Premise betriebenen Applikationen müsste ich aus einer cloudbasierten CI- und CD-Umgebung heraus auf interne Server deployen, das ist ein eher untypischer Fall.“
CI- und CD-Services aus der Cloud bieten oft nur eine eingeschränkte Auswahl an Betriebssystemen und Umgebungsvariablen. Dies kann besonders bei größeren und komplexen Projekten Nachteile bringen. „Hier kann es nötig sein, dass Abhängigkeiten nachinstalliert werden müssen“, erklärt Mathias Meyer von Travis CI. Der Einsatz exotischer oder älterer Versionskontrollsysteme schränkt die Auswahl an passenden Cloud-Angeboten zusätzlich ein, sagt Michael Stähler: „Im Detail muss man immer überprüfen, ob die Plattform auch wirklich alle benötigten Funktionen unterstützt.“
Michael Stähler
Solution Architect bei
Opitz Consulting
www.opitz-consulting.com
Foto: Opitz Consulting
„Start-ups können mit einer Cloud-Lösung schnell und ohne große Investitionen mit der Software-Entwicklung starten.“
Bei der Adaption von cloudbasierten Entwicklerwerkzeugen treten nicht nur technische Herausforderungen auf. „Wir haben es schon oft erlebt, dass Teams mit (…) Erwartungen zu Travis CI kommen, die nicht dem entsprechen, was wir uns unter einem guten und gesunden Workflow vorstellen“, berichtet Meyer von eigenen Erfahrungen. Nach seiner Ansicht spricht das aber nicht unbedingt gegen Entwickler-Services aus der Cloud. „Es kann eher als Anlass dienen, die eigenen Prozesse und Workflows zu überdenken und zu überarbeiten.“ Einfachheit und mehr Eigenverantwortung für die Software-Teams sollten dabei das Ziel sein: „Je weniger Barrieren im Weg der Entwicklung vorgesehen sind, um so einfacher wird es für Teams, CI-Services zu integrieren und zu nutzen.“
Auf jeden Fall sollten Entwicklerteams auch in der Cloud noch ausreichend Kontrolle über ihren Build und dessen Umgebung haben, rät Meyer. „Darüber hinaus hilft es sehr, (…)den Build direkt im CI-Service inspizieren zu können, um Probleme zu finden, die eventuell nicht auf dem lokalen Rechner nachvollziehbar sind.“
Entscheidend für die Wahl eines Cloud-Services ist laut Stähler auch dessen Benutzerfreundlichkeit: „Wie einfach ist das System zu konfigurieren? Lassen sich Pipelines leicht erstellen, als Vorlage speichern und kopieren, um sie zum Beispiel für andere Branches in der Versionsverwaltung oder neue Projekte wiederverwenden zu können?“ Die Auswahl der Deployment-Varianten sowie die Möglichkeit, die Konfiguration der Pipeline mit der Software abzulegen und damit unter Source-Kontrolle zu stellen, seien wichtige Qualitätsmerkmale.

Fazit

Continuous Integration und Delivery beschleunigen die Software-Entwicklung, garantieren Stabilität und Funktionalität einer Anwendung und schützen vor unliebsamen Überraschungen. Darüber hinaus erleichtern sie es neuen Entwicklern dank der gut dokumentierten und strukturierten Prozesse, in ein laufendes Projekt einzusteigen. Sie sind deshalb für die moderne Software-Entwicklung unverzichtbar.
Continuous Integration und Continuous Delivery aus der Cloud machen den Einstieg in die kontinuierliche Entwicklung und Produktion besonders schnell und einfach, was vor allem Start-ups, aber auch neuen Projekten in größeren Unternehmen zugutekommt. Wer sehr individuelle Workflows mit exotischen Anforderungen und speziellen Abhängigkeiten bedienen muss, ist mit einem eigenen CI-/CD-System sicher besser bedient. Das gilt auch dann, wenn rechtliche Vorgabe oder interne Sicherheitsrichtlinien die Migration des Codes in die Cloud problematisch oder gar unmöglich machen.
Wichtige Fragen bei der Wahl eines CI-/CD-Providers
  • Welche Betriebssysteme, Programmiersprachen, Repositories, Frameworks und Tools kommen im Unternehmen zum Einsatz? Welche davon muss die Cloud-Umgebung eines Continuous-Integration- beziehungsweise Continuous-Delivery-Providers mindestens unterstützen?
  • In welcher Form liegen die Builds vor? Ist zum Beispiel eine Unterstützung für Docker nötig?
  • Soll nur die Testumgebung automatisiert und migriert werden oder soll der komplette Workflow bis hin zum Deployment in der Cloud stattfinden?
  • Welche eigenen Ressourcen sind vorhanden? Gibt es firmenintern Teams, die sich um die Qualitätssicherung und Build-Automatisierung der Software kümmern oder sollen diese Aufgaben komplett an einen CI- beziehungsweise CD-Provider ausgelagert werden?
  • Welche rechtlichen Vorgaben gilt es einzuhalten? Darf der Code beispielsweise den europäischen Rechtsraum nicht verlassen?
  • Welche Abhängigkeiten von Drittsystemen gibt es? Erlauben es die vorhandenen Lizenzen, auch diese in der Cloud zu betreiben? Falls nicht: Ist eine entsprechende Lizenzerweiterung möglich und was würde sie kosten?
  • Wie schnell, skalierbar und ausfallsicher muss der Cloud-Dienst sein? Welche Konsequenzen hätte es, wenn die Umgebung für Sekunden, Minuten, Stunden oder Tage nicht verfügbar wäre?
Verwandte Themen