Zurück zur Übersicht

Was ist Cloud Native? Alle Infos von Technik bis Management

ProfilfotoManuel Reinfurt
Chief Technical Officer

27.07.2021

Was ist Cloud Native? Wie funktionieren Cloud Native Anwendungen? Und warum hat Cloud Native nicht nur Einfluss auf Ihr Projekt, sondern auch auf Ihre Arbeitskultur?

Webanwendungen, mobile Apps oder das Internet of Things: Digitale Produkte arbeiten immer öfter mit der Cloud im Hintergrund. Von einfachen Rechenkapazitäten über Datenbanksysteme bis hin zu Machine Learning und Big-Data-Analysen nutzen die Anwendungen zahlreiche Möglichkeiten, die Cloud-Dienste heute bieten. Um die Vorteile der Cloud aber wirklich vollständig auszuschöpfen, sollten Anwendungen von vornherein speziell für die Cloud gebaut werden. Das nennt sich Cloud Native. Der Begriff beschreibt dabei allerdings nicht, wo die Anwendung betrieben wird – das ist dann in jeder Cloud möglich – vielmehr geht es um die Art und Weise der Entwicklung. Und diese hat nicht nur Einfluss auf Ihr Software Produkt, sondern auf Ihre Organisation und die Art, zu arbeiten.

Warum überhaupt Cloud Native?

Ein Blick auf die Historie der (Software-) Entwicklung zeigt, warum Cloud Native nicht nur technisch, sondern auch auf Management-Ebene so bedeutend ist. Wer nur nach den Vorteilen und technischen Fakten sucht, überspringt hier und liest im nächsten Abschnitt weiter.

Das Wasserfall-Modell hat viele (Software-) Projekte über Jahrzehnte begleitet. Ein Entwicklungsschritt nach dem anderen: Konzept, Umsetzung, Test, Veröffentlichung. Das Projekt tröpfelt vor sich hin, jeder arbeitet eifrig an dem gigantischen Konstrukt von Software, damit zum richtigen Zeitpunkt alle Wege zusammenführen, alle Schnittstellen abgeglichen sind.

Und dann kommt der Release und es zeigen sich gleich mehrere Herausforderungen:

  1. Das Ergebnis entspricht nicht mehr vollständig den Anforderungen, die Monate, wenn nicht Jahre zuvor gestellt wurden.
  2. Die Anwendung ist fest an Hardware und Betriebssystem gebunden. Lastspitzen können nur mit einer dauerhaften Erhöhung der Rechenkapazität durch neue Server aufgefangen werden.
  3. Der geschaffene Software-Monolith ist nur schwer zu warten, nachträgliche Änderungen sind nur bedingt möglich: Die Abhängigkeiten der Funktionen untereinander sorgen dafür, dass Änderungen nur mit einem übergreifenden Update ausgespielt werden können.

Der Cloud Native Ansatz räumt genau diese Herausforderung aus dem Weg. Bei Cloud Native geht es vor allem darum, auch große Anwendungen in schnellen Iterationen verändern zu können – und weiterhin skalierbar und ausfallsicher zu sein. Der Grundsatz von Cloud Native ist, dass Anwendungen von Beginn an für die Cloud entwickelt werden. Nur so können alle Vorteile der Cloud wirklich genutzt werden.

Cloud Native setzt sich dabei aus technologischen Punkten als auch einer gewissen Arbeitsweise zusammen. Eine große Rolle spielen hier Modelle wie DevOps, Continuous Development und Agile. Die technische Basis und Architektur der Anwendungen ermöglicht, neben der Skalierbarkeit und Ausfallsicherheit, vor allem auch kontinuierliche Entwicklung und Deployment. Änderungen können schnell durchgeführt und getestet werden, ohne zu Problemen zu führen.

Microservices und Container: das Grundgerüst Ihrer Cloud Native Anwendung

Eines vorneweg: Cloud Native beschreibt nicht, WO Ihre Anwendung betrieben wird. Die Cloud kann auch ohne Cloud Native genutzt werden. Es geht hierbei vor allem um das "Wie?" der Entwicklung. Das Tolle ist, dass Sie Ihre Anwendung laufen lassen können, wo es für Sie und Ihr Unternehmen am besten passt: private und public Clouds oder Hybrid-Modelle sind denkbar. Falls Sie sich für andere Anbieter:innen entscheiden, sind auch Wechsel möglich. Ebenso können Sie auf Multi-Cloud-Strategien setzen, um das Beste von allen Hyperscalern zu nutzen. Nutzung proprietärer Cloud-Services, beispielsweise Services, die sie nur bei AWS finden, können sich ebenso lohnen. So können Sie entscheiden, wie Sie Ihre Cloud-Architektur gestalten.

Ihre Anwendung kann auf vielen verschiedenen Plattformen laufen, ohne jeweils Anforderungen an Hardware und Betriebssystem erfüllen zu müssen. Verantwortlich dafür ist das Zusammenspiel aus Microservices und Containern.

Container

Ein Container ist eine Art Behälter für Ihre Anwendung und alle Komponenten (z.B. Bibliotheken und Frameworks), die für die Ausführung der Anwendung benötigt werden. Sie können sich so einen Container wie eine Art ZIP-Datei vorstellen, die alle, zum Erfüllen einer gewissen Aufgabe benötigten Dateien beinhaltet.

Der Einsatz von Containern ermöglicht es Entwickler:innen, plattformunabhängig zu arbeiten. Sie müssen sich also nicht von gewissen Anforderungen oder Abhängigkeiten Ihres Betriebsystem oder anderen Umgebungen abhängig machen. Container sind also eine Art Verpackung einer Anwendung und ermöglichen es, Anwendungen bequem und einfach in eine andere Umgebung – zum Beispiel eine andere Cloud – zu verschieben. Ist die Anwendung innerhalb des Containers nach gewissen Richtlinien gebaut, können mit diesen Skalierbarkeit und Ausfallsicherheit einfach sichergestellt werden. Umgesetzt werden solche Container meist mit Docker, betrieben dann in einem Kubernetes-Cluster.

Die Anwendung in Containern: der entscheidende Punkt

Durch Cloud Native gelangen Sie zu einer grandiosen Skalierbarkeit und Ausfallsicherheit. Container sind hier eine wertvolle Basis – doch damit Sie von allen Vorteilen der Cloud profitieren können, müssen alle Komponenten ineinander spielen. So können Sie Ihre Anwendung beispielsweise durch Container plattformunabhängig bereitstellen. Technologien wie Kubernetes ermöglichen die Verwaltung von Containern.

Ein Beispiel: Um Ausfallsicherheit zu gewährleisten, laufen mehrere Instanzen Ihrer Anwendung mehrmals parallel. Vereinfacht ausgedrückt, haben Sie WhatsApp also nicht nur einmal offen, sondern zweimal – oder sogar noch öfter. Stürzt nun Ihr erstes WhatsApp ab ist das kein Problem, Sie können nämlich einfach zur zweiten WhatsApp-Instanz wechseln. Kein Neustart, keine Downtime, ein fließender Übergang. Dafür ist unter anderem Kubernetes verantwortlich. Kubernetes lässt Ihre Anwendung mehrmals parallel laufen und überwacht diese. Bemerkt Kubernetes nun, dass eine Anwendung nicht mehr reagiert, so werden Kund:innen nur noch auf die nun noch lauffähigen Instanzen weitergeleitet. Das bemerken Ihre Kund:innen aber gar nicht. Währenddessen kann Kubernetes die kaputte Anwendung neu starten, den Fehler an die Entwickler:innen melden oder auch andere Aktionen triggern. Ihre Anwendung ist damit ausfallsicher. Die Crux an der Sache: Das funktioniert nur, wenn Ihre Anwendung überhaupt mehrmals parallel laufen kann. Dazu muss sie beispielsweise zustandslos sein, die Anwendung selbst darf also keinen Zustand speichern, den nur sie kennt. Andernfalls könnten die anderen Instanzen bei einem Ausfall die Nutzer:innen gar nicht bedienen. Gleichzeitig muss sicher gestellt werden, dass die parallel laufenden Instanzen ihre Daten parallel in die Datenbank schreiben können, ohne sich gegenseitig zu behindern.

Aus diesem kleinen Beispiel wird sichtbar, wie wichtig die korrekte Umsetzung Ihrer Anwendung ist. Für Entwickler:innen sind hierbei die 12-Faktoren extrem wichtig. Diese Faktoren beschreiben Prinzipien und Grundsätze, die Entwickler:innen beachten müssen, um eine Anwendung Cloud Native zu bauen.

Im Rahmen des Begriffs Cloud Native taucht ein weiterer Begriff oft auf: Microservices. Microservices sind abgeschlossene Einheiten innerhalb der Anwendung, die jeweils einen spezifischen Zweck erfüllen. Sie beschreiben ein Konzept, das auch unabhängig von der Cloud funktionieren kann, denn es geht letztendlich darum, wie Sie eine Software-Anwendung strukturieren. Microservices funktionieren unabhängig voneinander und steuern alle einen Teil zur Anwendung bei, wobei sie in aller Regel asynchron über Schnittstellen und Protokolle miteinander kommunizieren.

Mit Hilfe von Microservices können einzelne Services komplett unabhängig betrachtet werden. Sie werden von einem eigenen Team entwickelt, sie können unabhängig von anderen Teams oder Anwendungen entwickelt werden, und sie können auch vollkommen unabhängig deployed und betrieben werden. Diese vollständige Entkopplung und Unabhängigkeit gibt es aber nicht ohne Trade-Off. So ist die Entwicklung mit Microservices in aller Regel etwas aufwändiger, kann sich in einigen Fällen aber lohnen. Wenn Sie mehr zu Microservices erfahren möchten, lesen Sie gerne unseren Blog-Artikel.

Agile, CD und DevOps: Cloud Native ist ein Management Thema

Digital sein heißt schnell sein. Niemand hat heute die Zeit, ein Jahr auf neue Software zu warten. Mal davon abgesehen, dass die Anforderungen sich während des Projektes bereits ändern und das Ergebnis nicht mehr den Bedürfnissen entsprechen könnte. Außerdem ist es ein entscheidender Wettbewerbsfaktor, ob Sie Kundenfeedback schnell in Ihre Anwendung implementieren können. Denn Alternativen gibt es für Ihre Kund:innen meist genug. Warum also nicht loslegen, schnell an den Markt gehen und dann Schritt für Schritt verbessern? Praktisch von Beginn an eine funktionsfähige Anwendung bereitstellen: Das funktioniert mit agilem Projektmanagement und Konzepten wie Continuous Delivery (CD) und DevOps. Die Kontinuität von Entwicklung, Testing und Auslieferung ist der Schlüssel zu fortlaufenden Neuerungen. Festgelegte Phasen für die einzelnen Entwicklungsschritte (Wasserfall) gibt es nicht mehr. Mit einem MVP liefern sie schnell Mehrwehrt für Ihre Kund:innen – danach erweitern Sie die Anwendung iterativ während sie bereits bei Kund:innen läuft.

Continuous Delivery: schnell an den Markt und dann optimieren

Voraussetzung für die kontinuierliche Verbesserung sind die korrekten Architekturen und Prozesse. Mit Hilfe von Cloud Native können Sie sicher stellen, dass Updates problemlos durchgeführt werden können. So können neue Funktionen testweise nur für einen kleinen Nutzer:innenkreis zur Verfügung gestellt werden. Sie können zwischen Versionen ohne Downtime hin- und herschalten und sind immer in Kontrolle über die aktuelle Situation. So können sie schnell auf Änderungen reagieren.

Je nach Größe der Anwendung und der Teams, können Microservices zu weiteren Vorteilen führen. So können auch verschiedene Teams an den jeweiligen Services arbeiten und haben dort eine klare Verantwortlichkeit. So wie die Microservices, arbeiten auch die Teams unabhängig voneinander. Sie können Aktualisierungen jederzeit und ohne Absprache mit anderen Teams veröffentlichen. Ein Team könnte genau jetzt das Update für eine bestimmte Funktion bereitstellen? Verlieren Sie keine Zeit, indem Sie auf eine neue Version der kompletten Anwendung warten.

DevOps

Im Cloud Native-Umfeld (aber auch in anderen Software-Projekten) sind Entwicklung (Development) und Betrieb (Operations) von Beginn an eng miteinander verzahnt. Die Rede ist hier deshalb von einer DevOps Kultur. Der permanente Austausch ist Grundlage für die fortlaufende Entwicklung und Verbesserung der Software-Produkte.

Überblick: Die Vorteile einer Cloud Native Anwendung

Aber was bringt das jetzt genau Ihnen, Ihrem Projekt und Ihrem Unternehmen? Nehmen wir an, Sie lassen eine Mobile App programmieren. Diese Vorteile bringt es Ihnen, die Anwendung Cloud Native zu gestalten:

Flexibilität und Agilität sparen Kosten

Cloud Native Anwendungen sind nicht an Hardware oder Betriebssysteme gebunden und können auf diversen Cloud-Plattformen betrieben werden, egal ob private, public oder hybrid. Sie haben auch die Möglichkeit, ein Multi-Cloud-Modell zu wählen, also verschiedene Services von verschiedenen Cloud Anbietern in Anspruch zu nehmen. Das kann Kosten sparen, wenn Sie mit Bedacht wählen.

Höhere Performance, robustere Anwendung, mehr Sicherheit

Durch Container und das Management der Anwendungen zeichnet Cloud Native Anwendungen eine höhere Ausfallsicherheit und Zuverlässigkeit aus. Durch automatische und auch einfach skalierbare Redundanzen führt ein Ausfall einer Komponente nicht zum Stillstand der Anwendung. Die Unabhängigkeit der Hardware ermöglicht Ihnen zudem, Daten verteilt und mehrfach zu speichern und sie so vor Verlust und Diebstahl zu schützen.

Skalierbarkeit für beste Performance und geringere Kosten

Einer der bedeutendsten Faktoren in der Cloud-Nutzung ist zudem die Skalierbarkeit Ihrer Anwendung. Sie brauchen keine teuren Überkapazitäten mehr vorzuhalten, um Lastspitzen abzufangen, sondern stellen immer die passgenauen Ressourcen, automatisiert, bereit.

Schneller als der Wettbewerb

Dank der passenden Architektur und agilen Arbeitsabläufen können Sie Ihre Anwendung schneller an den Markt bringen und Updates ebenso schnell bereitstellen. Gerade im Software-Bereich ist die Konkurrenz meist groß, der Optimierungsdruck hoch. Kundenwünsche und Feedback müssen schnell umgesetzt werden.

Für die Cloud zu entwickeln, kann ein wichtiger Kostenfaktor sein. Je nach Größe der Cloud-Anwendung gestalten sich auch die Kosten unterschiedlich, ob kleine Helfer:innen, Allround-Talent oder High-End-Umgebung. Die Cloud-Kosten werden auch durch Konzeption und anschließende Pflege bestimmt.

Vorhandene Anwendungen in die Cloud schieben?

Nicht immer haben Sie die Möglichkeit, eine Anwendung von Null aufzubauen. Vielleicht möchten Sie auch Ihre vorhandene Software modernisieren. "Kann ich meine Anwendung nachträglich Cloud Native gestalten?" Sie können! Dank Application Transformation: Eine bestehende und in der Regel ältere Anwendung wird so transformiert, dass sie moderne Infrastruktur, Services und Prozesse verwendet – und Sie somit die Vorteile der Cloud nutzen können. Die Transformation an sich unterscheidet sich dann je nach Anwendung. In welchem Zustand ist die Anwendung? Wie aufwändig ist eine Migration in die Cloud? Was muss umgebaut oder neu gebaut werden, damit die Anwendung optimal in der Cloud funktioniert? Je nach Anwendungsfall haben Sie verschiedene Möglichkeiten.

Cloud Native: Spielen Sie ganz vorne mit!

Cloud Native eröffnet Ihrer Anwendung, aber auch Ihrem Unternehmen ein enormes Wachstumspotenzial. "Einfach loslegen!" ist die Devise, mit der Sie am Markt bestehen können. Alte, viel zu vorsichtige Denkmuster werden durch Ausprobieren und Verbessern ersetzt und bringen Ihnen nicht nur schneller Ergebnisse, sondern auch einen großen Erfahrungsschatz und einen zeitlichen Vorsprung gegenüber der Konkurrenz und dem digitalen Wandel. Laufen Sie nicht länger hinterher, seien Sie vorne dabei!

Titelbild: Oleh Slobodeniuk auf iStock
Weiterempfehlen:

IoT Architektur Teil 3: Warum Konnektivität erfolgsentscheidend ist

2021-11-30LesenArrow forward

IoT Architektur Teil 2: Was macht eine IoT Plattform?

2021-11-16LesenArrow forward

IoT Architektur Teil 1: Welche Hardware Möglichkeiten haben Sie?

2021-11-02LesenArrow forward

Update gefällig?