Die vielen Varianten der CloudCloud und Cloud-native: der Unterschied ist gravierend
3. März 2020Cloud-native ist nicht Cloud und auch nicht Cloud-enabled. Die weitreichenden Vorteile, die eine Cloud-basierte IT-Infrastruktur bietet, kann ein Unternehmen nur dann optimal ausschöpfen, wenn auch die Anwendungsentwicklung Cloud-native erfolgt.
Das Substantiv Cloud bezieht sich nur auf den Ort für das Deployment von Hardware und Software, etwa für Server, Storage, Datenbanken und alle möglichen Formen von Applikationen und Services. Das Adjektiv Cloud-native hingegen beschreibt einen Ansatz für die Konzeption und den Betrieb von Applikationen, der die Vorteile des Cloud-Computing-Modells nutzt, etwa im Hinblick auf Agilität und Automation.
Cloud-native
Trotz des Namens bezieht sich Cloud-native nicht auf den Ort des Applikations-Deployments, sondern auf die Art und Weise, wie Applikationen konzipiert, bereitgestellt und verwaltet werden. Cloud-native bedeutet also nicht, dass der Betrieb von Applikationen unbedingt in der Cloud erfolgen muss, auch ein On-Premise-Einsatz ist möglich. Ziel des Cloud-nativen Konzepts ist die Steigerung von Geschwindigkeit, Flexibilität und Qualität bei der Applikationsentwicklung unter gleichzeitiger Reduzierung der Risiken.
Cloud-enabled
Vom Begriff Cloud-native zu unterscheiden ist auch der Terminus Cloud-enabled. Er bedeutet lediglich, dass traditionell entwickelte Applikationen für den Betrieb in der Cloud angepasst werden. Eine Cloud-enabled-Anwendung ist eine Applikation, die in die Cloud verlagert wurde, aber ursprünglich für den Einsatz in einem herkömmlichen Rechenzentrum entwickelt ist.
Dabei handelt es sich typischerweise um Legacy- und Enterprise-Software. Für die Verlagerung ist es erforderlich, einige Charakteristiken der Applikation zu ändern oder für die Cloud zu adaptieren. Eine gängige Methode für die Cloud-Migration ist dabei das „Lift and Shift“-Verfahren. Eine Cloud-native Anwendung ist im Unterschied dazu eine Anwendung, die bereits in ihrem Design mit den Cloud-Prinzipien der Mandantenfähigkeit, der elastischen Skalierung und der einfachen Integration und Verwaltung konzipiert ist.
Eckpfeiler einer Cloud-nativen Entwicklung
Doch was zeichnet das Cloud-native Konzept nun konkret aus? Die Cloud-nativen Entwicklungen charakterisieren im Wesentlichen vier Punkte:
- Service-basierte Architektur,
- API-basierte Kommunikation,
- Container-basierte Infrastruktur und
- DevOps-Prozesse.
Service-basierte Architekturen wie Microservices ermöglichen den Aufbau modularer, lose gekoppelter Dienste. Andere modulare Architekturansätze – zum Beispiel Miniservices – bieten Unternehmen eine entscheidende Unterstützung bei der Beschleunigung der Anwendungserstellung, ohne dass dabei die Komplexität steigt.
Die Services werden über leichtgewichtige, Technologie-agnostische APIs bereitgestellt, die die Komplexität und den Aufwand beim Deployment sowie bei der Skalierung und Wartung reduzieren. Das API-basierte Design ermöglicht nur die Kommunikation per Service-Interface-Aufrufen über das Netzwerk, sodass die Risiken von direkten Verknüpfungen, Shared-Memory-Modellen oder direkten Lesezugriffen auf den Datenspeicher eines anderen Teams vermieden werden.
Cloud-native Anwendungen basieren auf Containern, die einen Betrieb in verschiedenen Technologieumgebungen ermöglichen und damit echte Anwendungs-Portabilität unterstützen, etwa im Hinblick auf Public, Private und Hybrid Cloud. Die Containertechnologie nutzt die Virtualisierungsfunktionen des Betriebssystems, um die verfügbaren Rechenressourcen auf mehrere Anwendungen aufzuteilen und um gleichzeitig zu gewährleisten, dass die Anwendungen sicher und voneinander isoliert sind.
Cloud-native Anwendungen skalieren horizontal, dadurch können weitere Anwendungsinstanzen einfach hinzugefügt werden – oft durch Automatisierung innerhalb der Containerinfrastruktur. Durch den geringen Overhead und die hohe Dichte können zahlreiche Container innerhalb derselben virtuellen Maschine oder desselben physischen Servers gehostet werden. Dadurch sind sie auch ideal geeignet für die Bereitstellung von Cloud-nativen Anwendungen.
Die Anwendungsentwicklung für Cloud-native Ansätze folgt agilen Methoden mit Continuous-Delivery- und DevOps-Prinzipien, die auf die kollaborative Erstellung und Bereitstellung von Anwendungen durch Teams aus Entwicklung, Qualitätssicherung, IT-Sicherheit und IT-Betrieb fokussieren.
Oft ist noch eine Verwirrung um die Begriffe Cloud und Cloud-native anzutreffen. Prinzipiell können Unternehmen, die auf Cloud Computing setzen, die Skalierbarkeit und Verfügbarkeit ihrer Applikationen verbessern, etwa durch eine bedarfsorientierte Ressourcenbereitstellung.
Um aber die Cloud-Vorteile vollständig ausschöpfen zu können, ist auch eine neue Form der Anwendungsentwicklung erforderlich. Und hier sind wir dann beim Thema Cloud-native. Die Cloud-native Anwendungsentwicklung ist ein Ansatz zur Erstellung, Ausführung und Verbesserung von Apps, der auf bewährten Techniken des Cloud Computing basiert und eine schnelle Entwicklung und Aktualisierung von Anwendungen bei gleichzeitiger Verbesserung der Qualität und Minderung von Risiken ermöglicht.
Matthias Kranz ist Director Solution Architects Germany bei Red Hat.