Konsequent Cloud-native
Warum Kompromisse schädlich sind.
Mit Cloud-native ist vereinfacht ausgedrückt ein Konzept zum Entwickeln und Betreiben von Anwendungen gemeint, das die Vorteile des CloudComputing-Modells voll ausschöpft. Dementsprechend arbeiten Cloud-native-Applikationen nicht on Premise in eigenen Rechenzentren der Unternehmen, sondern tendenziell in der Public Cloud. Die von der Linux Foundation gegründete Cloud Native Computing Foundation (CNCF) definiert den Begriff etwas enger. Als eine Voraussetzung nennen die Initiatoren einen Open-Source-Software-Stack, der Container-Techniken und Microservices nutzt. Jeder Teil des Stacks, beispielsweise Anwendungen oder Prozesse, ist demnach in einem eigenen Container „verpackt“. Die einzelnen Teile werden dynamisch orchestriert und verwaltet, um IT-Ressourcen optimal auszunutzen. Am Ende soll sich damit nicht nur die Wartbarkeit, sondern auch die Agilität der Anwendungen insgesamt verbessern.
Den Cloud-native-Protagonisten geht es um mehr Flexibilität und Effizienz. Ganz ähnlich wie beim Ansatz der Service-orientierten Architektur (SOA) soll es statt unbeweglicher Softwaremonolithen künftig eine Vielzahl von (Micro-)Services geben, die jeweils nur kleine und einfach handhabbare Funktionsblöcke zum Gesamtsystem beisteuern. Der Vorteil liegt auf der Hand: Änderungen und Updates lassen sich in kleinen Schritten vornehmen, ohne dass Unternehmen dafür jedes Mal die komplette Anwendung anfassen müssen. Im Sinne einer „Continuous Delivery“ist eine Cloud-native-Anwendung nie ganz fertig, sondern wird permanent weiterentwickelt.
Unternehmen, die neue Anwendungen speziell für den Cloud-Betrieb entwickeln, sind im Wettbewerb agiler und schneller, argumentiert etwa der IT-Dienstleister Capgemini unter Berufung auf eine eigene Studie. Die wirklich disruptiven Firmen aus dem Silicon Valley und anderswo seien deshalb so erfolgreich, weil sie die Elastizität der Cloud mit einem Cloud-native-Ansatz voll ausschöpften. „Eine Cloud-native-Applikation ist speziell für elastische und verteilte Umgebungen ausgelegt, wie sie moderne CloudPlattformen heute voraussetzen“, erläutert Mike Kavis, Managing Director beim Wirtschaftsprüfungs- und Beratungshaus Deloitte. „Die Apps sind lose gekoppelt, der Code ist also nicht fest mit einer Infrastrukturkomponente verdrahtet.“Damit ließen sich die Anwendungen auch je nach Bedarf skalieren.
Der Unterschied zu klassischen Applikationen besteht darin, wie Cloud-native-Apps erstellt, ausgeliefert und betrieben werden, ergänzt Andi Mann, Chief Technology Advocate beim Softwareanbieter Splunk. Um die Vorteile auszuschöpfen, gelte es, agile und skalierbare Komponenten wie Container zu verwenden. IT-Teams könnten damit klar abgegrenzte und wiederverwendbare Features ausliefern, die sich über Plattformgrenzen hinweg in MultiCloud-Szenarien einsetzen ließen. Mit Hilfe von Orchestrierungs- und AutomatisierungsTools könnten Entwickler neue Softwareiterationen schneller bereitstellen und damit die gesamte Organisation agiler machen.
Für eine Cloud-native-Softwareentwicklung müssen Unternehmen allerdings erst die Voraussetzungen schaffen. Ein DevOps-Modell gehört Experten zufolge ebenso dazu wie agile Entwicklungsmethoden, Containertechniken, leistungsstarke Cloud-Plattformen und ein Continuous-Delivery-Modell. Eine PaaS-Infrastruktur ist zwar nicht unbedingt erforderlich, erleichtert die Arbeit aber erheblich. Die meisten Cloud-Nutzer beginnen mit Infrastructure as a Service (Iaas). Anwendungen lassen sich damit von der darunterliegenden Hardware abstrahieren. Platform as a Service (PaaS) fügt einen weiteren Layer hinzu, der auch darunterliegende Betriebssysteme abstrahiert. Nutzen Unternehmen beide Cloud-Schichten, können sie sich auf die zu programmierende BusinessLogik konzentrieren.
Viele Unternehmen mit Cloud-Ambitionen hieven alte On-Premise-Anwendungen einfach unverändert auf eine Cloud-Plattform. SplunkExperte Mann hält das für einen Fehler: „Wer versucht, bestehende Applikationen, vor allem monolithische Legacy-Systeme, in einem ,Liftand-Shift‘-Verfahren auf eine Cloud-Infrastruktur zu migrieren, wird die mit Cloud-native möglichen Effekte nicht erzielen können.“
IT-Verantwortliche sollten stattdessen neue Wege gehen, rät Mann. In einigen Fällen lohne es sich, vorhandene Softwaremonolithen aufzubrechen und sie nach Cloud-native-Prinzipien von Grund auf neu zu entwickeln. Verabschieden sollten sich Unternehmen auch von hergebrachten Softwareentwicklungsmethoden. Das klassische Wasserfallmodell eignet sich kaum für Cloud-native-Szenarien. Aber auch agile Methoden dürften in der Praxis oft nicht ausreichen, mahnen Experten. Hinzukommen müssten neue Ansätze wie eine Entwicklung nach den Prinzipien des Minimum Viable Product (MVP). Eine abteilungsübergreifende Zusammenarbeit erfordert zudem organisatorische Veränderungen, wie sie etwa DevOps-Betriebsmodelle mit sich bringen.