Automatisches Application-Deployment der nächsten Generation

Übersetzung des auf ZDNet.com veröffentlichten Artikels von Coert Bart, XebiaLabs:

Automatisches Application-Deployment der nächsten Generation

Durch Deployit Engpässe beim Applikations-Deployment vermeiden

In den letzten Jahren hat sich die Art und Weise, wie wir Software entwickeln, verändert. Anwender, IT-Betrieb und Entwickler arbeiten enger zusammen als zuvor. Durch den Trend hin zu einer intensiveren Verbindung zwischen Softwareentwicklern (Developers) und IT-Betrieb (Operators), kurz gesagt DevOps, hat der Begriff der Automation an Bedeutung gewonnen. Automation ist hier der Schlüsselbegriff für Kostenreduzierung und Beschleunigung.

Für jedes Unternehmen steht der effiziente Umgang mit Kosten als feste Konstante an oberster Stelle. Der verstärkte Fokus auf schnelleres Ausrollen von Applikationen ist das Ergebnis der wachsenden Bedeutung von Cloud und agilen Entwicklungsmethoden. Die Quintessenz: Je schneller neue Features, Fehlerbehebungen und Verbesserungen die Kunden erreichen, desto größer ist ihre Zufriedenheit. Dieses Prinzip lässt sich auch auf den Einsatz im Unternehmen übertragen: Je schneller die neueste Version einer Anwendung die Anwender erreicht, desto produktiver können diese sein.

Beide Umgebungen erfordern ein hohes Maß an Skalierbarkeit. Wenn nun Ihre Produkte mit der Zeit umfangreicher und komplexer werden, so muss die Verbreitungsmethode in der Lage sein die Veränderungen zu handhaben. Ein großes Portfolio an Softwareanwendungen ist in Unternehmensumgebungen gang und gäbe. Daher muss jede Deployment-Lösung auch skalierbar sein.

Automatisiertes Applikations-Deployment kann Kosten reduzieren und die erforderliche Geschwindigkeitserhöhung und Skalierbarkeit gewährleisten. Aber lassen Sie uns, bevor wir einen näheren Blick auf die Lösungen werfen, die Problematik diskutieren.

Nie wieder Albträume beim Applikation-Deployment

Händisches Applikations-Deployment birgt eine Menge potenzieller Probleme. Dabei ist nicht zuletzt der Zeitaufwand von Entwicklern und IT-Betrieb zu erwähnen. Die erste Herausforderung ist die Konfiguration. Wo ist die Anwendung gespeichert? Welche Version soll installiert werden? Wo soll sie installiert werden? Wo befinden sich die Konfigurationsdateien und wie werden sie angewendet?

Ein anderes Thema ist Sicherheit. Welche Berechtigungen sind erforderlich, um die Anwendung zu installieren und zu starten? Welchen Zugriff sollen die Benutzer haben?

Manuelle Arbeitsschritte kosten Zeit und Geld und bergen Potenzial für menschliche Fehler. Stellen Sie sich vor, Sie müssen eine spezifische Datei an einen spezifischen Ort kopieren und möglicherweise umbenennen. Selbst das Ausführen separater Skripts für verschiedene Umgebungen und Projekte kann Zeitaufwand bedeuten und jeder manuelle Prozess erhöht die Fehleranfälligkeit.

Probleme durch Automation lösen

Dem manuellen Deployen steht das automatische Applikations-Deployment, mit seinen ganz eigenen Herausforderungen, gegenüber. Falls Sie Jemanden für die Erstellung von individuell angepassten Deployment-Skripten einsetzen, investieren Sie auch hier Zeit und sind für erforderliche Updates von diesem einen Spezialisten abhängig. Skripte können sehr komplex sein und sind nicht standardisiert, insbesondere, wenn verschiedene Entwickler am Werk sind.

Komplexer wird es, wenn es um mehrere aufeinander folgende Skripte als Serie geht. Für diesen Fall benötigen Sie einen Prozess und Richtlinien, wie die Skripte richtig ausgeführt werden. Um zukünftigen Änderungen gerecht zu werden, müssen diese in regelmäßigen Abständen angepasst werden. Ein monolithisches Skript könnte in der Lage sein, den gesamten Deployment-Prozess abzudecken. Sie müssten dann nur ein einziges Skript ausführen. Was passiert jedoch, wenn Sie auf eine andere Umgebung deployen müssen? Was ist mit einem partiellen Upgrade? Jede Veränderung erfordert die Anpassung des Skriptes.

In jedem Fall erfordert ein Ausführen und Anpassen Unterstützung durch Spezialisten und führt zu einem Ergebnis, das nicht auf eine andere Applikation übertragbar ist. Wenn Sie aus irgendwelchen Gründen zurückrudern müssen, wird das zu einem zentralen Problem. Was ist also die Lösung?

Abhilfe schaffen durch intelligentes ARA

Möchten Sie Ihre Deployment Automation („Application Release Automation“, kurz ARA), grundlegend verbessern, benötigen Sie intelligentere Tools. Um einen Engpass zu vermeiden, benötigen Sie ein wirklich automatisiertes, standardisiertes System, welches außerdem in der Lage ist, Applikations-Deployments über mehrere Projekte hinweg zu handhaben. Ziel ist es, sich von den skriptschreibenden Spezialisten unabhängig zu machen.

Die Vorteile beeindrucken. Gemäß eines Gartner Reports von Ronni J. Colville, helfen ARA Tools das Risiko menschlicher Fehler zu minimieren und bieten zusätzliche Zuverlässigkeit im Deploymentprozess. Außerdem bieten sie Transparenz für alle eingebundenen Akteure. Noch wichtiger ist, dass sie Ausfallzeiten reduzieren und Endanwendern schnelleren Zugriff auf die Applikationen ermöglichen. Die Einsicht in dem Gesamtprozess bietet einen wirklichen Mehrwert für DevOps, da sowohl Entwicklung wie Betrieb den Prozess „von beiden Seiten“ verfolgen können.

Continuous Deployment ist die nächste Stufe

Es gibt noch einen Schritt über ein intelligentes App Deployment System hinaus, und das ist die Idee neue Funktionalität so früh wie möglich über ein kontinuierliches Integrations-System in die Produktivumgebung einzuspielen. Realistisch gesehen, ist hierfür auch ein automatisiertes Testsystem erforderlich, um das Risiko von Fehlern zu verringern. Auf der anderen Seite bedeutet dies, dass Sie extrem häufig Updates herausgeben können und dabei vollständig auf jegliche manuelle Aufgaben, welche in Verbindung mit dem Deployment stehen, verzichten können. Kein Integrieren mehr von Funktionalität in letzter Minute, was so oft zu Fehlern führt.

Ein komplett automatisiertes System, das je nach Notwendigkeit in der Lage ist, Deployments automatisch zu planen und an die Situation anzupassen, macht ein kontinuierliches Deployment möglich. Wenn Sie den Deploymentprozess verfolgen und, falls nötig, zurückdrehen oder die Applikation deinstallieren können, können Sie die Risiken minimieren. Folgen Sie einer agilen Entwicklungsmethode ist dies ein natürliches Ziel.

Probleme früh lösen heißt Kosten sparen

Im Zuge der Weiterentwicklung von Softwareentwicklung helfen mehrere neue Trends und Ideen den Entwicklern Produkte schneller an den Markt zu bringen. Es ist immer viel kosteneffektiver, Probleme so frühzeitig wie möglich im Prozess zu lösen. Dieses naheliegende Faktum hat unseren Ansatz für Applikationsentwicklung und Testverfahren erheblich beeinflusst.

Das Deployment-Ende des „Softwaretrichters“ bleibt nach wie vor ein kräftezehrender und zeitfressender Engpass für Entwickler und Betrieb, der immer noch häufig eine potenzielle menschliche Fehlerquelle darstellt. Im Falle einer falschen Handhabung können die Ergebnisse, im Hinblick auf Ausfallzeiten und Kundenunzufriedenheit, verheerend sein.

Die gleiche Logik, die für die Software-Entwicklung gilt, muss in die Ausroll-, sprich Deploymentphase, übertragen werden. Letztendlich können wir durch den Bau einer kompletten Applikations-Pipeline Geld sparen, schnellstmöglich neue Funktionalität liefern und nach Bedarf skalieren. Diese Pipeline geht von Entwicklung über Integration und Qualitätssicherung, bis hin zum Deployment, mit einem Endziel von Vollautomatisierung und Standardisierung. Es macht einfach Sinn!

Foto: Coert Baart

Coert Baart ist CEO von XebiaLabs, ein Softwarehersteller, der
Plattformen zum automatisierten Ausrollen von Anwendungen auf
Middleware Umgebungen wie WebSphere, WebLogic, Microsoft.Net,
JBoss, Tomcat und CloudUmgebungen, wie VMware, Puppet, Red Hat
und IBM, entwickelt. Sie erreichen Ihn unter cbaart@xebialabs.com.