AlexOakenman - Fotolia
Cloud-nativ, -basiert und -fähig: Was ist der Unterschied?
Die Begriffe Cloud-nativ, Cloud-basiert und Cloud-fähig werden oft vermengt– doch sie unterscheiden sich bei den Entwicklungsmethoden, der Leistung und weiteren Faktoren.
Fast jede Organisation betreibt oder nutzt heute in irgendeiner Form Anwendungen in der Cloud. Die Unterschiede darin, wie diese Anwendungen mit der Cloud interagieren, sind jedoch beträchtlich.
In diesem Artikel vergleichen wir drei der gängigsten Modelle: Cloud-nativ (Cloud Native), Cloud-basiert (Cloud Based) und Cloud-fähig (Cloud Enabled). Bei unseren Versuchen, diese Begriffe zu entwirren, sei ausdrücklich darauf hingewiesen, dass die Grenzen fließend und Gegenstand laufender Debatten sind. Offizielle Definitionen dieser Begriffe gibt es nicht.
Was ist eine Cloud-native Anwendung?
Eine Cloud-native Anwendung ist darauf ausgelegt, die Vorteile einer Cloud-Hosting-Architektur voll auszuschöpfen.
Für eine solche Anwendung müssen Sie die Anwendungskomponenten unabhängig voneinander bereitstellen und einzeln skalieren können. Oft setzen Entwickler dies in einer Microservices-Architektur um, welche die Ressourcen der Cloud-Umgebung ideal nutzt, gerade im Vergleich zu Bereitstellungsmethoden wie virtuellen Maschinen (VMs). Sie lassen sich auch einfacher automatisch skalieren, um auf Nachfrageschwankungen zu reagieren.
Cloud-native Anwendungen werden häufig in Container verpackt. Manchmal laufen Sie auch als serverlose Funktionen oder, seltener, als eigenständige Prozesse auf demselben Host.
Technisch gesehen müssen Cloud-native Anwendungen nicht zwingend in der Cloud leben. IT-Teams könnten eine lose gekoppelte, auf Microservices basierende Anwendung auf ein Kubernetes-Cluster aufbauen, das auf einer lokalen Infrastruktur gehostet wird. In diesem Fall wird die Anwendung nicht in der Cloud gehostet, lässt sich aber genauso nahtlos skalieren, dank der Microservices-Architektur und den Orchestrierungsfunktionen von Kubernetes.
Außerdem bedingen sich Cloud-native Entwicklung und Cloud-native Anwendungen nicht gegenseitig. Entwickler können mit Cloud-nativen Entwicklungsmethoden alle möglichen Arten von Anwendungen erstellen. Aber es ist natürlich einfacher, sie zusammen zu verwenden.
Einsatzszenarien für Cloud-native Anwendungen
Cloud-native Anwendungen sind heute bei vielen IT-Teams der Standard. Wenn eine Anwendung von Grund auf neu erstellt wird, ist es sinnvoll, einen Cloud-nativen Ansatz zu verwenden, vorausgesetzt, die Entwickler haben die Ressourcen dafür.
Was ist eine Cloud-basierte Anwendung?
Als Cloud-basierte Anwendung kann man jede Anwendung bezeichnen, die in der Cloud läuft.
Der Begriff wird manchmal auch spezifisch für Software as a Service (SaaS) verwendet, ein Softwarebereitstellungsmodell, bei dem Benutzer über einen Webbrowser auf eine Anwendung zugreifen. Cloud-basierte Anwendungen sind jedoch nicht immer SaaS-Anwendungen. Eine Anwendung, deren serverseitige Komponenten in der Cloud gehostet werden, die aber auch die Installation von clientseitiger Software auf Endgeräten erfordert, kann ebenfalls als Cloud-basierte Anwendung gelten.
Einige andere Beispiele für Cloud-basierte Anwendungen sind:
- Cloud-native Anwendungen, wenn sie nach den oben beschriebenen Ansätzen entwickelt und bereitgestellt werden;
- eine monolithische Anwendung, die in einer virtuellen Maschine in der Cloud läuft;
- eine Bare-Metal-Server-Cloud-Instanz;
- eine Anwendung, die über einen Cloud-basierten Anwendungsorchestrierungsdienst wie Amazon Elastic Beanstalk bereitgestellt wird, und
- eine Anwendung, die als serverlose Funktion in einem Service wie AWS Lambda ausgeführt wird.
Mit anderen Worten: Jede Art von Anwendung, die in irgendeiner Weise in der Cloud betrieben wird, ist eine Cloud-basierte Anwendung.
Einsatzszenarien für Cloud-basierte Anwendungen
Jede Anwendung kann als Cloud-basierte Anwendung ausgeführt werden. Daher unterstützt das Cloud-basierte Modell fast jede Art von Anwendungsfall. Die einzigen Anwendungen, die sich nicht für eine Cloud-basierte Bereitstellung eignen, sind diejenigen, die aus Gründen der Compliance, der Sicherheit oder der Datenhoheit On-Premises bleiben müssen.
Was ist eine Cloud-fähige Anwendung?
Der Begriff Cloud-fähige Anwendung bezieht sich auf Anwendungen, die ursprünglich für den Betrieb On-Premises entwickelt wurden, aber in die Cloud verlagert wurden. Das bedeutet, dass die Entwickler eine Lift-and-Shift-Migration in die Cloud durchgeführt haben, statt ein Refactoring, bei dem sie die Anwendung in eine Cloud-native Anwendung umarbeiten.
Ein klassisches Beispiel wäre, wenn Administratoren eine virtuelle Maschine in der Cloud einrichten, in der die Anwendung von nun an laufen soll. Während des Migrationsprozesses müssen die Entwickler mitunter einige kleine Änderungen vornehmen, zum Beispiel um sicherzustellen, dass die Anwendung ordnungsgemäß mit Cloud-basierten Identitäts- und Zugriffsverwaltungsdiensten und Cloud-Netzwerkkonfigurationen arbeitet.
Im Gegensatz dazu würde man eine monolithische Anwendung, die an eine Microservices-Architektur angepasst und dann in die Cloud verlagert wird, eher als Cloud-native Anwendung bezeichnen.
Cloud-fähige Anwendungen sind in der Regel so konzipiert, dass sie nur in einer bestimmten Art von Umgebung oder auf einem bestimmten Betriebssystem funktionieren. Sie lassen sich in der Regel leicht in Cloud-basierte VMs verlagern, in denen die Konfigurationen der lokalen Umgebungen repliziert wurden. Meist ist es eher kompliziert, eine Cloud-fähige Anwendung auf eine Plattform wie Kubernetes zu übertragen, denn ältere On-Premises-Anwendungen sind nicht für das Ausführen in Containern ausgelegt.
Cloud-fähige Anwendungen lassen sich in der Regel nicht so gut skalieren wie Cloud-native Anwendungen. Um mehr Instanzen einer Cloud-fähigen Anwendung bereitzustellen, erhöhen IT-Teams die Zahl der virtuellen Maschinen. Dieser Ansatz ist jedoch schwieriger zu orchestrieren als bei Cloud-nativen Anwendung mit Containern.
Einsatzszenarien für Cloud-fähige Anwendungen
Cloud-fähige Anwendungen eignen sich gut für Situationen, in denen Unternehmen eine Legacy-Anwendung in die Cloud verlagern wollen, um die Erneuerung einer lokalen Host-Infrastruktur zu vermeiden. Da die grundlegende Architektur jedoch unverändert bleibt, kommen die Vorteile der Cloud, wie zum Beispiel die optimierte Leistung, nicht zum Tragen.
Wählen Sie die richtige Art der Cloud-Anwendung
Bei der Entscheidung, welche Art von Cloud-Anwendungsmodell für Sie die richtige ist, gibt es drei Fragen zu berücksichtigen.
- Entwicklungsressourcen. Cloud-native Anwendungen erfordern Spezialwissen bei den Mitarbeitern. Unternehmen mit kleinen Entwicklungsteams oder begrenzter Zeit für die Fertigstellung einer Anwendung sollten einen einfacheren Typ wählen, oder das Refactoring outsourcen.
- Leistung. Cloud-fähige und generische Cloud-basierte Anwendungen sind wahrscheinlich nicht so leistungsfähig wie gut konzipierte Cloud-native Anwendungen.
- Abhängigkeit von Cloud-Diensten. Wenn Entwickler eine generische Cloud-basierte Anwendung so aufbauen, dass sie auf einen spezifischen Cloud-Service vom Anbieter angewiesen ist, dann wird es sehr viel schwieriger, im Nachhinein noch die Cloud zu wechseln. Im Gegensatz dazu kann eine Cloud-native Anwendung, die in Kubernetes gehostet wird, zu jeder Cloud migrieren, die Kubernetes unterstützt.
- Komplexität der Bereitstellung und Orchestrierung. Cloud-native Anwendungen sind schwieriger zu implementieren und zu verwalten, da sie mehr bewegliche Teile haben. IT-Teams müssen in der Regel ein Orchestrierungs-Tool verwenden. Einfachere Cloud-basierte Anwendungen, die in VMs gehostet werden, erfordern keine speziellen Orchestrierungsschichten.