Mit der Cloud zu besserer Software-Qualität

Mehr Effizienz durch Pipelines

von - 31.03.2017
Der Weg durch die einzelnen Stadien der Software-Entwicklung ist umso leichter zu bewerkstelligen, je weniger abhängig die Applikation von Parametern der Laufzeitumgebung wie der Version des Applikations-Servers oder Betriebssystem-Patches ist. Dies lässt sich am besten dadurch erreichen, dass die Anwendung alle benötigten Informationen für Zielumgebungen wie Entwicklung, Test und Produktion selbst mitbringt. Auf dem Zielsystem wird dann lediglich der richtige Satz an Konfigurationsparametern aktiviert. Das kann durch eine Umgebungsvariable geschehen.
Alle notwendigen Automatisierungsschritte werden in einer sogenannten Continuous-Delivery-Pipeline zusammengefasst. Eine typische CD-Pipeline besteht aus dem Kompilieren der Anwendung, verschiedenen Tests, Release und Deployment. Zwischen den Abschnitten sorgt ein sogenanntes Qua­lity-Gate dafür, dass die nächste Stufe erst durchlaufen werden kann, wenn die vorhergehende erfolgreich abgeschlossen wurde. Das stellt sicher, dass keine fehlerhafte Software in Produktion gelangt. Nach dem Prinzip Fail-Fast unterstützt die CD-Pipeline dabei ein schnelles Feedback auf Fehler in der Software. „Je früher ein Fehler gefunden wird, desto günstiger ist dessen Behebung“, sagt Michael Stähler von Opitz Consulting.
Brian DawsonDevOps Evangelist bei CloudBees
www.cloudbees.com
Foto: CloudBees
„Moderne Cloud-Technologien bieten von Continuous Integration und Delivery als Software as a Service bis hin zu schlüsselfertigen Systemen auf Private-Cloud-Infrastrukturen wie OpenStack alle Optionen.“
Neben den Konfigurationseinstellungen der verschiedenen Zielumgebungen benötigt eine Anwendung aber noch mehr Hilfe, um möglichst „self-contained“ lauffähig zu sein. Mit Hilfe von Spring Boot, einer Erweiterung des quelloffenen Java-Frameworks Spring, wird beispielsweise die gesamte Applikation inklusive ihrer Abhängigkeiten und einem Servlet-Container in ein als Fat-JAR oder Uber-JAR bezeichnetes Java-Archiv gepackt. „Diese Datei muss man dann nur noch auf das Zielsystem kopieren“, so Stähler.
Noch leichter lassen sich Anwendungen mit einem Container-System wie Docker von der Umgebung unabhängig machen. Das Docker-Image enthält alle für die Laufzeitumgebung notwendigen Informationen und Abhängigkeiten wie Betriebssystem, Patches und Konfigurationen. „Ich muss auf der Zielplattform nur noch Docker installieren, alles andere bringt der Container mit“, erklärt Stähler.
Continuous Integration und Delivery sind vor allem in der Entwicklung von Web-Applikationen sehr beliebt und weit verbreitet. Es gibt aber durchaus auch andere Anwendungsfälle: „CI und CD haben sich in einer ganzen Reihe überraschender Szenarien als nützlich erwiesen, die vom Mainframe bis zur Firmware-Entwicklung für Hardware reichen“, sagt Atlas­sian-Spezialist Buchanan. Um Continuous Inte­gration und Continuous Delivery erfolgreich einzusetzen, seien allerdings ein Umdenken in den betroffenen Teams und gezielte Investitionen in Tools, Hardware und Personal notwendig. „Continuous Delivery billig und als Teilzeitprojekt eines Mitarbeiters einzuführen, ist das beste Rezept, Zeit und Geld in einen Fehlschlag zu in­vestieren.“
Auch Brian Dawson von CloudBees warnt davor, Continuous Integration und Delivery auf die leichte Schulter zu nehmen: „Ausfälle oder Performance-Einbußen können erhebliche negative Auswirkungen auf die Auslieferung von Software an den Endkunden haben.“ CI- und CD-Systeme müssten deshalb performant, sicher, skalierbar und zuverlässig sein.
Cloud-Anbieter von Continuous Integration und Continuous Delivery (Auswahl)

Anbieter / Produkt

Preis pro Monat

Leistungsumfang im Basispreis

Kostenlose Version

Amazon Web Services / AWS CodePipeline

ab 1 Dollar

1 aktive Pipeline

Kontingent für 12 Monate

AppVeyor Systems / AppVeyor

ab 29 Dollar

1 privates Projekt, 1 Concurrent Job, 1 GByte Build Cache

für Open-Source-Projekte

Atlassian / Bitbucket Pipelines

ab 10 Dollar

10 Benutzer

bis 5 Benutzer

CircleCI / CircleCI

ab 50 Dollar 1)

2 Linux-Container, 2 Concurrent Builds

1 Linux-Container, 1 Build

CloudBees / Jenkins in the Cloud

auf Anfrage

Codeship / Codeship

ab 49 Dollar

unlimitierte Builds, 1 Concurrent Build, 2 parallele Test-Pipelines

bis 100 Builds pro Monat

Rendered Text / Semaphore

ab 25 Dollar 2)

1 Box 3)

für Open-Source-Projekte

Shippable / Shippable

ab 25 Dollar

1 Build-Container (Minion) unbegrenzte Builds, REST API

1 Concurrent Job, bis
150 Builds/Monat 4)

Thoughtworks / Snap CI

ab 30 Dollar

1 Concurrent Build, bis
5 Repositories, 1 Worker 5)

für öffentliche Repositories

Travis CI / Travis CI

ab 69 Dollar

1 Concurrent Job, unbegrenzte Build-Minuten, Repositories und Benutzer

für Open-Source-Projekte

Foto: 1) Mac OS X ab 39 Dollar, Enterprise-Plan ab 35 Dollar pro User   2) bei jährlicher Zahlung   3) enthält Ubuntu 14.04 LTS sowie mehr als 100 Open-Source-Programmiersprachen, -Frameworks und -Tools. Auch Docker-enabled erhältlich   4) Open-Source-Projekte unbegrenzt   5) 2 CPUs, 2 GByte RAM, 10 GByte Festplattenspeicher
Verwandte Themen