Was bedeutet eigentlich Cloud-Native?

Der Begriff Cloud-Native führt oft zu Verwirrung, da er zweideutig verwendet wird. Einerseits benutzt man Cloud-Native um eine Applikation zu beschreiben, die explizit für eine Cloud-Umgebung gebaut ist. Andererseits wird der Begriff auch dazu verwendet, um die Eigenschaften und die Architektur solcher Applikationen zu beschreiben. Da sich die Technologie und die Cloud ständig weiterentwickeln, verändert sich auch der Begriff Cloud-Native.

Whitepaper download

Die Definition von Cloud-Native

Laut Google Trends wurde der Begriff in den frühen 2000er-Jahren, den Anfangstagen des Cloud Computing, häufig verwendet und gewann im Jahr 2015 Momentum als industrielles Modewort. Jeder scheint eine andere Vorstellung davon zu haben, was genau Cloud-Native bedeutet. In einem Versuch, den Begriff zu vereinheitlichen, definierte die Cloud Native Computing Foundation Cloud Native als «Technologien, [die] Unternehmen erlauben, skalierbare Applikationen in modernen, dynamischen Umgebungen wie öffentlichen, privaten und hybriden Clouds zu erstellen und auszuführen. Container, Service Meshes, Microservices, unveränderliche Infrastruktur und deklarative APIs sind Beispiele für diesen Ansatz. Diese Techniken produzieren lose gekoppelte Systeme, die widerstandsfähig, verwaltbar und beobachtbar sind. In Kombination mit einer robusten Automatisierung ermöglichen sie Entwicklern, Änderungen mit hoher Auswirkung häufig und vorhersehbar mit minimalem Aufwand durchzuführen.»

Google-Suchanfragen für den Begriff ‹Cloud Native›

Cloud-Native Architektur

Applikationen werden durch verschiede Modernisierungsstufen differenziert. Traditionelle Applikationen wie Luware LUCS werden on-premise mit einer monolithischen Architektur aufgebaut, d. h. sie benutzen eine singuläre Codebasis für alle Funktionen. In einer monolithischen Architektur sind die Entwicklungsteams auf eine oder zwei Programmiersprachen beschränkt, Codeänderungen müssen sorgfältig koordiniert werden und die Bereitstellung neuer Funktionen erfordert einen hohen Testaufwand im Vorfeld. Der nächste Schritt im Modernisierungsprozess besteht darin, die Applikation in die Cloud zu migrieren. Das bedeutet, dass die Applikation nicht mehr auf dem Server eines Unternehmens vor Ort läuft, sondern in ein externes Rechenzentrum verlagert wird, worauf Unternehmen über das Internet Zugriff haben. Luware Stratus war ein Beispiel für eine solche Infrastructure-Ready-Applikation. Der Höhepunkt der Modernisierung ist eine Cloud-Native Applikation wie Luware Nimbus, die explizit mit einer Microservice-Architektur entwickelt wurde, um in einer Cloud-Umgebung optimal zu funktionieren und zu skalieren.

Unterschiedliche Modernisierungsstufen am Beispiel der Luware-Produkte [Grafik von Microsoft adaptiert]

Microservices sind ein integraler Bestandteil von Cloud-Nativen Applikationen. Microservices teilen die Codebasis in autonome Subsysteme auf, die ihre eigene Funktionalität und ihren eigenen Verantwortungsbereich haben. Diese Microservices werden dann containerisiert, was im Grunde bedeutet, dass der Code und alles, was er zur Ausführung benötigt, gebündelt und von der Betriebsumgebung isoliert wird. So gibt es keinen Konflikt zwischen verschiedenen Programmiersprachen oder Frameworks und man kann Container einfach in verschiedene Umgebungen verschieben. Container können hinzugefügt, ersetzt oder aktualisiert werden, ohne die Applikation zu beeinträchtigen, wodurch die Applikation agil und hyper-skalierbar wird. Orchestratoren, wie z.B. Kubernetes, werden eingesetzt, um Container bedarfsgerecht zu verwalten und eine optimale Ressourcenverteilung zu gewährleisten. Solche Plattformen erleichtern auch die Identifizierung eines Containers mit einem Fehler und ermöglichen so eine unterbrechungsfreie und einfache Fehlersuche. Dies erleichtert die kontinuierliche Aktualisierung der Software. Während in einer monolithischen Applikationen wie LUCS Updates halbjährlich bereitgestellt werden, werden neue Funktionen in einer Cloud-Nativen Applikationen wie Nimbus wöchentlich oder sogar noch häufiger ausgerollt.

Cloud-Native Entwicklung

Cloud-Native ist mehr als nur eine Ansammlung von Technologien. Die Umstellung auf Cloud-Native Software ist mit erheblichen Entwicklungskosten sowie kulturellen und organisatorischen Veränderungen verbunden. Software-Anbieter müssen sich komplett neu organisieren und eine Cloud-Native Denkweise adaptieren. Der traditionelle monolithische Ansatz fördert eine konservative und vorsichtige Arbeitsweise, da ein fehlendes Semikolon ein ganzes System ausser Gefecht setzen kann. Eine Cloud-Native Philosophie hingegen unterstützt eine konstruktive Fehlerkultur, erhöht die Risikobereitschaft und bietet Entwicklern die Chance, mit neuen Funktionen zu experimentieren. Prozesse werden beschleunigt und für eine kontinuierliche Bereitstellung optimiert. Schnelle Innovationen sind daher erforderlich, um mit den sich schnell ändernden Kundenbedürfnissen Schritt zu halten. Eine Cloud-Native Denkweise umfasst alle architektonischen Möglichkeiten der Cloud in Bezug auf Flexibilität, Agilität und Skalierbarkeit.

Zusammengefasst

  • Cloud-Native kann sich auf die Tatsache beziehen, dass eine Applikation in einer Cloud-Umgebung optimal skaliert und funktioniert. Ausserdem kann sich Cloud-Native auf die Hauptmerkmale von Cloud-Native-Applikation wie eine Microservice-Architektur beziehen.
  • Cloud-Native Applikationen sind auf Microservices aufgebaut. Microservices werden in Container verpackt und mit z.B. Kubernetes dynamisch orchestriert, um die Ressourcen optimal zu verteilen.
  • Zu den Vorteilen einer Microservice-Architektur gehören die praktisch unbegrenzte Skalierbarkeit sowie die erhöhte Agilität, um auf Marktanforderungen zu reagieren.
  • Microservices erleichtern die Wartbarkeit von Applikationen. Updates können durchgeführt werden, ohne die Applikation herunterzufahren. So wird die Resilienz gegenüber Ausfällen verbessert.
  • Die Umstellung zur Cloud-Nativen Softwareentwicklung erfordert eine andere Denkweise, um alle architektonischen Möglichkeiten der Cloud zu nutzen.