Softwareentwicklung in der Cloud

Cloud-native – was steckt hinter dem Buzzword?

31.12.2018 von Wolfgang Herrmann
Cloud-native-Anwendungen bringen Unternehmen mehr Flexibilität und Effizienz in der Softwareentwicklung. Sie brauchen dafür nicht nur Container-Techniken und Microservices, sondern auch agile Methoden und DevOps-Konzepte.

Vor allem Cloud-Provider und -Dienstleister verwenden den Begriff Cloud-native gerne, wenn sie potenzielle Kunden von den Vorteilen ihres Angebots überzeugen wollen. Seit 2015 gibt es sogar die von der Linux Foundation gegründete Cloud Native Computing Foundation (CNCF), die dazu passende Open-Source-Projekte vorantreibt. Doch was steckt wirklich hinter dem Buzzword?

Cloud-native ist längst mehr als nur Marketing-Sprech von Beratern. Dahinter steckt ein grundlegend verändertes Konzept zum Entwickeln und Betreiben von Unternehmensanwendungen.
Foto: BEST-BACKGROUNDS - shutterstock.com

Vereinfacht ausgedrückt, ist damit ein Konzept zum Entwickeln und Betreiben von Anwendungen gemeint, das die Vorteile des Cloud-Computing-Modells voll ausschöpft. Dementsprechend arbeiten Cloud-native-Applikationen nicht on-premise in eigenen Rechenzentren der Unternehmen, sondern tendenziell in der Public Cloud.

Die 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.

Wie so oft in der IT geht es auch den Cloud-native-Protagonisten 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. Das Konzept passt insofern gut zu den Anforderungen der digitalen Transformation, die Unternehmen ein viel schnelleres Reagieren auf veränderte Bedingungen abverlangt.

Cloud-native Apps machen Unternehmen wendiger

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.

Die Pioniere auf diesem Gebiet bauten Anwendungen direkt in der Cloud und setzten dabei auf eine modulare Microservices-Architektur. Auf dieser Grundlage könnten sie Innovationen schneller entwickeln und neue Produkte rasch skalieren. Für Unternehmen mit monolithischen Systemen sei ein solcher Zuwachs an Geschwindigkeit und Flexibilität unerreichbar.

Lose Kopplung ermöglicht bessere Skalierbarkeit

"Eine Cloud-native-Applikation ist speziell für elastische und verteilte Umgebungen ausgelegt, wie sie moderne Cloud-Plattformen 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 entscheidende 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 von Cloud-Services 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 auch über Plattformgrenzen hinweg etwa in Multi-Cloud-Szenarien einsetzen ließen. Mithilfe von Orchestrierungs- und Automatisierungs-Tools könnten Entwickler neue Softwareiterationen schneller bereitstellen und damit der gesamten Organisation zu mehr Agilität verhelfen.

Für eine Cloud-native Softwareentwicklung müssen Unternehmen allerdings erst die Voraussetzungen schaffen. Ein DevOps-Modell gehört nach Meinung von Experten 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 in der Praxis aber erheblich.

IaaS und PaaS erleichtern Cloud-native-Entwicklung

Die meisten Cloud-Nutzer starten 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 und müssen sich nicht mehr um Infrastruktur-Aspekte wie etwa Betriebssystem-Calls kümmern.

Cloud-native versus On-Premise-Anwendungen

Cloud-native Anwendungen basieren auf einer grundlegend anderen Architektur als traditionelle Unternehmensanwendungen. Die Unterschiede lassen sich an verschiedenen Punkten festmachen:

Programmiersprachen

On-Premise-Anwendungen sind heute typischerweise in traditionellen Sprachen wie C, C++, C# oder auch Java Enterprise geschrieben. In Mainframe-Umgebungen laufen noch etliche Cobol-Programme.

Cloud-native Anwendungen basieren auf Web-orientieren Sprachen und Entwicklungsumgebungen. Dazu gehören etwa HTML, CSS, JavaScript, .Net, Go, Node.js, PHP, Python und Ruby.

Update-Fähigkeit

Cloud-native Anwendungen sind schon systembedingt stets auf dem neuesten Stand und immer verfügbar. On-Premise-Applikationen hingegen benötigen zum Teil aufwändige Updates. Während diese installiert werden, ist die Anwendung nicht nutzbar.

Elastizität

Cloud-native Applikationen profitieren von der Elastizität der Cloud, wenn sie etwa bei Lastspitzen zusätzliche Ressourcen in Anspruch nehmen. Benötigt eine E-Commerce-Anwendung beispielsweise bei erhöhter Nachfrage mehr Rechen- und Speicher-Ressourcen, werden diese automatisch bereitgestellt. Flaut die Nachfrage ab, werden sie wieder heruntergefahren. On-Premise-Apps könne diese Art der dynamischen Skalierung in der Regel nicht bieten.

Mandantenfähigkeit

Eine Cloud-native Anwendung hat keine Probleme, in einer virtuellen Umgebung IT-Ressourcen mit anderen Programmen zu teilen. Viele On-Premise-Applikationen arbeiten entweder nicht besonders gut oder überhaupt nicht in einer virtualisierten Infrastruktur.

Verbundene Ressourcen

On-Premise-Programme sind in der Regel fest mit Netzwerk-Ressourcen verbunden. Dazu gehören neben den Netzzugängen selbst auch Security-Features, Zugriffsrechte oder Storage-Systeme. Werden Teile des Programms geändert, können diese "hart codierten" Verbindungen reißen. In der Cloud-native-Welt, in der das Prinzip der losen Kopplung gilt, gibt es solche festen Verbindungen nicht. Anwendungen lassen sich deshalb relativ einfach auch auf andere Plattformen schieben oder mit anderen Infrastruktur-Ressourcen betreiben.

Ausfallzeiten

Generell gibt es in der Cloud mehr Redundanz als in On-Premise-Umgebungen. Fällt ein wichtiges IT-System eines Cloud-Providers aus, kann das Pendant in einer anderen Region dessen Aufgabe übernehmen. Zwar sind auch etliche On-Premise-Systeme durch Failover-Prozesse geschützt. Doch die Wahrscheinlichkeit, dass mit dem Server auch die Anwendung ausfällt, ist hier deutlich höher.

Automatisierung

Vieles in der Cloud läuft automatisiert ab, darunter auch das Application Management. "Die Vorteile einer Cloud-nativen Auslieferung, insbesondere Geschwindigkeit und Agilität, ergeben sich durch stabile und geprüfte Prozesse, die je nach Bedarf von Automatisierungs- und Orchestrierungs-Tools ausgeführt werden", erläutert Splunk-Spezialist Mann. Das alles funktioniere ohne manuelle Eingriffe. Dieses Niveau der automatisierten Verwaltung lasse sich mit On-Premise-Anwendungen nicht erreichen.

Modulares Design

Die meisten On-Premise-Applikationen sind als Monolithen konzipiert. Zwar lagern sie einige Anwendungen in Bibliotheken aus. Doch unterm Strich handelt es sich um eine einzige große Anwendung mit zahlreichen Subroutinen. Cloud-native-Anwendungen sind demgegenüber viel modularer aufgebaut, viele Funktionen in Microservices gekapselt. Diese lassen sich bei Bedarf abschalten oder auch updaten, ohne dafür die gesamte Anwendung herunterzufahren.

Cloud-native: Lift and shift ist nicht genug

Viele Unternehmen mit Cloud-Ambitionen hieven alte On-Premise-Anwendungen einfach unverändert auf eine Cloud-Plattform. Splunk-Experte Mann hält das für einen Fehler: "Wer versucht, bestehende Applikationen, vor allem monolithische Legacy-Systeme, in einem 'Lift-and-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. Das könne etwa bedeuten, neue Cloud-native Anwendungen auf einer modernen Cloud-Plattform zu betreiben. In einigen Fällen lohne es sich, vorhandene Softwaremonolithen aufzubrechen und sie nach Cloud-native-Prinzipien von Grund auf neu zu entwickeln.

Wasserfallmodell hat ausgedient

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, geben Experten zu bedenken. Hinzukommen müssten neue Ansätze wie eine Entwicklung nach den Prinzipien des Minimum Viable Product (MVP). Eine abteilungsübergreifende Zusammenarbeit erfordert zudem weitreichende organisatorische Veränderungen, wie sie etwa DevOps-Betriebsmodelle mit sich bringen.

Mit Material von IDG News Service

Hintergrund: Cloud Native Computing Foundation

Die Non-Profit-Organisation Cloud Native Computing Foundation (CNCF) setzt auf Open-Source-Software wie Docker und Kubernetes, um Anwendungen fit für einen Einsatz in der Cloud zu machen. Zu den Mitgliedern gehören auch große IT-Player wie Google, Fujitsu und Dell EMC.

Die Initiatoren haben sich die Entwicklung quelloffener Softwarewerkzeuge für "cloud-ready" Applikationen auf die Fahne geschrieben. Microservices-Architekturen und Container-Techniken spielen dabei eine zentrale Rolle. Sie sollen Unternehmen helfen, Cloud-Anwendungen schneller und einfacher zu entwickeln und auszurollen.