Die besten Deployment-Tools für agile Softwareteams

Führende Softwareanbieter liefern ständig neue Features und Verbesserungen. Wöchentliche bis hin zu täglichen Updates sind in der Cloud längst keine Seltenheit mehr. Wir präsentieren die Tools, auf die die Top-Player der Branche zurückgreifen, um ihre Builds, Tests und Deployments zu automatisieren und somit das Innovationstempo zu beschleunigen.

Egal ob Instagram, YouTube oder Netflix im Consumer-Bereich oder Slack, Box, Asana oder Jira im Business-Umfeld: Als Endanwender hat man sich längst daran gewöhnt, dass die Software, die man jeden Tag nutzt, regelmäßig aktualisiert wird. Als Kunde erwarten wir, dass Bugs schnell behoben und neue coole Features häufig veröffentlicht werden. Gleichzeitig wissen die Softwarehersteller, dass sie kontinuierlich auf Kundenfeedback achten und die Benutzererfahrung dementsprechend verbessern müssen, wenn sie ihre Kunden nicht an die Konkurrenz verlieren wollen. Denn heutzutage können Anwender in so gut wie jedem Softwaresegment relativ einfach zu einem anderen Anbieter wechseln. Der Konkurrenzdruck ist enorm.

Vor diesem Hintergrund liefern führende Cloud-Services neue Funktionen, Fehlerbehebungen und Verbesserungen in regelmäßigen Abständen, die immer kürzer werden. Facebook aktualisiert seine Apps mindestens einmal am Tag. Netflix liefert neuen Code sogar bis zu hundertmal täglich. Und das sind keine Ausnahmen. Moderne Cloud-Technologien versetzen Softwarehersteller in die Lage, selbst hochkomplexe Systeme, die rundum die Uhr von Millionen Anwendern genutzt werden, flexibler und schneller als je zuvor aktualisieren zu können – und das selbstverständlich ohne Downtime.


Automatisierung im Fokus

Aktuelle Trends rund um die DevOps-Bewegung wie “Infrastructure as Code”, Container, Microservices, Serverless Computing oder “Continuous Delivery and Integration” (CI/CD) rücken immer stärker in den Vordergrund. Die Automatisierung von Prozessen, die sonst manuell durchgeführt werden und daher zeitaufwändig, fehleranfällig, ineffizient und wenig transparent sind, spielt bei allen diesen Trends eine zentrale Rolle. Denn das Ziel besteht letztlich immer darin, Anwendungsinfrastrukturen flexibel und mit möglichst wenig Aufwand anpassen zu können. Agilität ist Trumpf.

Im Folgenden präsentieren wir bewährte Entwickler-Tools, auf die die Top-Player der Branche zurückgreifen, um ihre Deployment-Prozesse zu automatisieren und von denen  Startups und KMU auch profitieren können.


Docker und Kubernetes leicht gemacht

Im Zuge der Cloud-Transformation werden große monolithische Web-Anwendungen aus der PC-Ära zunehmend durch schlankere Systeme ersetzt, die sich leichter entwickeln, betreiben und skalieren lassen. Das Interesse an Container und Microservices ist in den letzten Jahren stark gestiegen.

Entwickler versprechen sich davon, agiler arbeiten, Deployment-Prozesse automatisieren und Release-Zyklen verkürzen zu können. Open-Source-Lösungen wie Docker und Kubernetes gehören in der DevOps-Welt inzwischen zum Standard. Die Installation, Konfiguration und Inbetriebnahme dieser Systeme ist jedoch alles andere als trivial.

Dabei muss man nämlich Server einrichten, Treiber für Speicher und Netzwerk konfigurieren, Überwachungs- und Security-Tools installieren und mehr. Vor diesem Hintergrund ist über die Jahre ein umfangreiches Ökosystem entstanden, in dem Entwickler nützliche Werkzeuge finden, die ihnen die Arbeit erleichtern.

Portainer

This image has an empty alt attribute; its file name is image-13-800x379.png

Hierzu zählt zum Beispiel Portainer. Damit lassen sich Docker-Container auf einem benutzerfreundlichen, modernen Online-Dashboard auf einfache Weise verwalten. Damit richtet sich das Tool in erster Linie an Anwender, die nicht so gerne auf der Kommandozeile arbeiten und stattdessen auf ein modernes Userinterface zurückgreifen möchten.

Alle zentralen Docker-Funktionen werden im Browser zur Verfügung gestellt. So können Anwender Container-Images herunterladen, installierte Images verwalten und vieles mehr. Ebenfalls praktisch: Mit den angebotenen App Templates lassen sich populäre Open-Source-Lösungen wie die Web-Server Apache und Nginx oder die Datenbanksysteme MySQL und Mongo mit nur ein paar Klicks als Container starten.

Rancher

This image has an empty alt attribute; its file name is image-14-800x371.png

Der im Sillicon Valley entwickelte Online-Service Rancher verfolgt einen ähnlichen Lösungsansatz, fokussiert sich aber auf das Container-Orchestrierungssystem Kubernetes. Rancher wartet ebenfalls mit einem einfachen Web-Dashboard auf. Hier können Anwender Kubernetes-Cluster über mehrere Clouds (Amazon Web Services, Azure, usw.) bereitstellen und managen.

Nachdem ein neues “Environment” kreiert wurde, führt Rancher den Anwender Schritt für Schritt durch den gesamten Installations- und Konfigurationsprozess. Einmal in Betrieb genommen lassen sich die Serverumgebungen auf dem Online-Dashboard bequem verwalten und automatisiert skalieren.


Continuous Delivery für Alle

Mit dem Siegeszug von Docker, Kubernetes und Co. sind CD/CI-Lösungen inzwischen so einfach und zugänglich geworden, dass selbst kleine Startups, die ihre Server und Anwendungen eigentlich ohne allzu großen Aufwand manuell aktualisieren könnten, davon profitieren.

Bei Continuous Delivery werden eine Reihe von Techniken und Werkzeugen zusammengefasst, die die Bereitstellung von Softwareanwendungen vollständig automatisieren und System-Updates ohne Unterbrechungen ermöglichen. Durch die automatisierte Release-Erstellung können Applikationen auf Entwicklungs-, Test-, und Produktivumgebungen auf effizientem Weg eingespielt werden.

Die Automatisierung der Test- und Lieferprozesse versetzt Software-Teams zudem in die Lage, Updates schnell, zuverlässig und wiederholbar mit geringem Risiko zu liefern. Populäre CD/CI-Tools wie Jenkins, Travis CI oder Beanstalk gibt es schon seit rund zehn Jahren auf dem Markt.

Sie mussten sich in letzter Zeit jedoch auf starke Konkurrenz einstellen. Die führenden Code-Collaboration-Plattformen GitHub, Bitbucket und GitLab verfügen nämlich schon über umfassende CD/CI-Funktionen, die in den Code-Repositories nahtlos integriert sind.

BitBucket Pipelines

bitbucket pipelines and deploy

BitBucket hat mit “Pipelines” bereits im Jahr 2016 ein Feature auf Basis von Docker präsentiert, das das Thema Continuous Delivery und Integration drastisch vereinfachen soll. So richtet sich Pipelines in erster Linie an kleinere Teams, die die modernen Deployment-Ansätze rund um “Infrastructure as Code” gerne implementieren möchten, aber mit klassischen IT-Automation-Lösungen wie Puppet, Ansible und Chef überfordert sind.

BitBucket Pipelines unterstützt Entwickler beim gesamten Deployment-Prozess. Dieser lässt sich anhand von sogenannten “CI/CD Pipelines” automatisieren. Eine Pipeline stellt ein vordefinierter Bereitstellungsprozess dar, der aus beliebig vielen Schritten bestehen kann. Der Anwender kann genau definieren welche Aktionen in welcher Reihenfolge ausgeführt werden und wie Fehler gegebenenfalls behandeln werden sollen. So haben Entwickler nach wie vor die volle Kontrolle über ihre Deployments.

Die Build-Einstellungen werden in einer einzigen Konfigurations-Datei (YAML) im Code-Repository gespeichert und verwaltet. Hier werden alle Kommandobefehle und Schritte definiert, die notwendig sind, um den Code aus dem Repository in Produktion zu deployen. Java-Entwickler müssen zum Beispiel spezifizieren, wie der Code kompiliert werden soll bevor es auf den Server deployt wird.

GitLab CI

Gitlab pipelines and deployment tools

Ein weiterer Anbieter, der als einer der Ersten CI für ein breites Publikum attraktiv machte, ist GitLab. Mit Code Hosting, Version Control, Issue Tracking, Projektmanagement, Code Reviews und mehr deckt das ursprünglich in Holland entwickelte System alle zentralen Aspekte der effizienten Zusammenarbeit von Software-Teams ab. Den Unterschied macht GitLab allerdings mit der nahtlosen Integration von modernen DevOps-Tools rund um CD / CI in die Entwicklungsarbeit.

Von der Idee und dem ersten Prototyp bis hin zum automatisierten Deployment von Updates in Produktion: Coder und Sysadmins werden in die Lage versetzt, während des gesamten Entwicklungsprozesses zentral auf einer einzigen Plattform kollaborativ zusammenzuarbeiten. GitLab basiert auf Open-Source-Software und wird im Freemium-Model angeboten.

So wie auch bei BitBucket der Fall, können GitLab-Kunden selbst entscheiden, ob sie die Lösung lokal installieren oder in der Cloud nutzen. Seit rund einem Jahr bietet auch GitHub einen ähnlichen CI-Dienst, der ein ähnliches Featureset bietet und für öffentliche Repositories kostenlos ist.

Buddy

buddy deployment tools

Mit Buddy bietet sich eine weniger bekannte, aber dennoch interessante Alternative, die sich von den Marktführern nicht einschüchtern lässt – ganz im Gegenteil. Der 2015 in Poland gestartete Cloud-Dienst deckt sämtliche Aspekte eines Continuous-Delivery-Prozesses ab und setzt auf eine besonders einfache und intuitive Bedienung.

Praktisch bei der Konfiguration der Pipelines: Buddy stellt eine ganze Reihe an vordefinierten Scripts bereit, um zum Beispiel Source-Dateien via SFTP vom Code-Repository auf den Produktionsserver zu bringen oder bestimmte Kommandozeilenbefehle über SSH auszuführen. Sobald man seine Pipelines mit den dazugehörigen “Actions” definiert hat, muss man nur noch angeben, wann und wie der Deployment-Prozess gestartet werden soll.

Dabei stehen Entwicklern grundsätzlich drei Optionen zur Auswahl, die jeweils für verschiedene Anwendungsfälle sinnvoll sind. Ein Deployment kann einfach per Knopfdruck initiiert werden, automatisch bei jedem neuen Push auf eine vordefinierte Branch des Code-Repository oder aber auch in bestimmten Zeitintervallen beziehungsweise zu bestimmten Uhrzeiten mithilfe eines Cronjob. Praktisch: Auf dem Online-Dashboard kann man sämtliche Schritte im Deployment-Prozess genau nachverfolgen. Wenn dieser fertig ist, können Teammitglieder automatisch via E-Mail, Slack und andere Kanäle benachrichtigt werden.

Schließlich punktet Buddy mit nahtlosen Integrationsmöglichkeiten zu populären Cloud-Services. Hierzu zählen neben GitLab, GitHub, BitBucket die führenden Cloud-Plattformen von Amazon, Google und Microsoft. Ein Feature, das man bei den meisten Konkurrenzprodukten wie DeployBot oder CircleCI vergeblich sucht, ist die Möglichkeit, Serverless Computing-Dienste wie AWS Lambda, Azure Functions und Google Cloud Functions in den Deployment-Prozess integrieren zu können.


Mehr Flexibilität mit Serverless Computing

Mit Serverless Computing wird der Traum von vielen Backend-Entwicklern wahr: Software zu entwickeln, ohne sich Gedanken über Server und Infrastruktur machen zu müssen. Der Clou: die Server-Schicht wird vollkommen abstrahiert.

Dabei wird der Code selbstverständlich weiterhin auf einem bestimmten Anwendungsserver im Hintergrund ausgeführt. Doch als Entwickler kommt man damit eigentlich niemals in Berührung. Mit AWS Lambda brachte Amazon die allererste Serverless-Computing-Lösung auf den Markt. Mit Azure Functions und Cloud Functions führten Microsoft beziehungsweise Google kurzer Zeit später ihre eigenen Serverless-Dienste ein.

Lambda und Co. führen Code automatisch auf einer hochverfügbaren Datenverarbeitungsinfrastruktur aus und erledigen die gesamte Administration der Datenverarbeitungsressourcen, einschließlich Server- und Betriebssystemwartung, Kapazitätsbereitstellung und automatischer Skalierung, sowie Code- und Sicherheitspatch-Bereitstellung.

Entwickler können ihre Funktionen bequem auf einem Web-Dashboard erstellen und diese so einrichten, dass sie automatisch von anderen Cloud-Diensten ausgelöst werden, oder von einer beliebigen Web-, Desktop- oder Mobile-App. Dadurch lässt sich die Bereitstellung komplexer Softwaresysteme flexibler gestalten, da jede Serverless-Funktion isoliert aktualisiert werden kann – ohne den Rest des Systems auch aktualisieren zu müssen.

Unternehmen, die auf Serverless Computing setzen, können auf nützliche Dienste zurückgreifen, die die Arbeit mit Lambda und Co. erleichtern. Mit Stackery zum Beispiel präsentiert sich eine umfassende All-in-One-Lösung für Design, Implementierung und Betrieb von Serverless-Anwendungen, die auf Basis von Lambda arbeitet. Ebenfalls nennenswert ist Dashbird.

Dabei handelt es sich um ein professionelles Monitoring-Tool, das speziell für Serverless Computing konzipiert ist. Anwender können damit die Performance ihrer Serverless-Umgebungen jederzeit überwachen und Fehler und Engpässe analysieren und beheben.


Fazit

Wer sich in dem hart umkämpften Softwaremarkt von heute behaupten will, muss vor allem eins sein: Schnell. Bugs müssen schnell behoben, neue Features schnell gelauncht und auf Marktveränderungen schnell reagiert werden. Wenn die erfolgsreichsten Software-Startups, man denke etwa an Stripe, Intercom, Asana, Twilio oder Zoom, etwas gemeinsam haben, dann ist es ein enormes Innovationstempo. Wöchentliche und sogar tägliche Updates sind in diesem Highend-Bereich längst zum Standard geworden.

Solche Release-Zyklen sind nur dann möglich, wenn man auf moderne, flexible Cloud-Hosting-Technologien und auf die passenden Software-Tools setzt, um Build-, Test- und Deployment-Prozesse zu automatisieren. Die Automatisierung von Software-Deployments ist inzwischen wesentlich einfacher als viele noch glauben. Das beweisen die vielen Produkte, die wir in diesem Beitrag präsentiert haben, mit ihren mächtigen, aber gleichzeitig einfachen Tools und einer durchdachten  Benutzererfahrung. Davon können nicht nur die großen Unicorns profitieren, sondern vor allem auch Startups und KMU, die ihre Software bis jetzt größtenteils manuell bereitstellen.


Warum muss ich Bereitstellungstools verwenden?

Kontinuierliche Release-Zyklen sind nur möglich, wenn Sie sich auf moderne, flexible Cloud-Hosting-Technologien und die richtigen Softwaretools verlassen, um Build-, Test- und Bereitstellungsprozesse zu automatisieren.

Welche Arten von Unternehmen benötigen Bereitstellungstools?

Die leistungsstarken und dennoch einfachen Bereitstellungstools richten sich an alle Arten von Unternehmen, von großen Einhörnern bis hin zu Startups und KMUs.