Cloud-native Entwicklung – Die 9 Besonderheiten
Wodurch zeichnet sich Cloud-native Entwicklung und die daraus resultierenden Apps aus?
Unter Cloud-native versteht man eine agile, konzeptionelle Methode, um Anwendungen vollständig in der Cloud zu entwickeln und zu betreiben.
Bei Cloud native geht es darum, in welcher Form Anwendungen erstellt und bereitgestellt werden. Entsprechend konzipierte Applikationen laufen nicht mehr in der klassischen Serverfarm im hauseigenen Rechenzentrum, sondern von Anfang an in einer Cloud-Umgebung. Es geht dabei um Container bzw. Kubernetes und Microservices als wesentliche Technologien und Architekturmodelle. Hinzu kommen agile Methoden und DevOps-Konzepte im Sinne einer Prozessstrategie.
Die Definition von Cloud-native beschreibt Anwendungen, die quasi in der Cloud geboren werden und umfasst eine Reihe von Technologien sowie Strategien. Bildquelle: Pivotal
Das besondere an Cloud-native ist also das Zusammenspiel aller Beteiligten sowie die Applikationsentwicklung allein für die Cloud. Dabei arbeiten Entwickler (Developers = Dev) und IT-Betrieb (Operations = Ops) von Beginn an eng zusammen (DevOps-Kultur), um gemeinsam optimale Lösungen zu liefern. Im ständigen Austausch und auf Basis einer gemeinsamen Ziel- und Wertvorstellung werden Produkte oder funktionsfähige Produkt-Features über automatisierte Prozesse kontinuierlich ausgeliefert (Continuous Delivery). Entwickler können somit deutlich schneller als zuvor auf produktive Umgebungen deployen. Ermöglicht wird dieses Vorgehen durch eine komplett neue Architektur.
Cloud native einfach und anschaulich erklärt im Video.
Die Definition der Cloud Native Computing Foundation (CNCF) lautet wie folgt:
Cloud native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen zu implementieren und zu betreiben. Dies können öffentliche, private und Hybrid Clouds sein. Best-Practises, wie Container, Service-Meshs, Microservices, immutable Infrastruktur und deklarative APIs unterstützen diesen Ansatz.
Die zugrunde liegenden Techniken ermöglichen die Umsetzung entkoppelter Systeme, die belastbar, handhabbar und beobachtbar sind. In Kombination mit einer stabilen Automatisierung können Software-Entwickler mit geringem Aufwand flexibel und schnell auf Änderungen reagieren. Die Ausführung dieser Anwendungen findet dabei auf einer containerisierten, dynamisch orchestrierten Plattform statt. Somit können Unternehmen die Vorteile des Cloud Computings voll ausschöpfen.
Der Cloud-native Ansatz konzentriert sich auf das Erstellen von Anwendungen in Form so genannter Microservices. Diese Microservices werden von Grunde auf als unabhängige Bestandteile einer Anwendung konzipiert und für die Cloud-Skalierung optimiert. Die Aufsplittung einer Anwendung in viele Teile ermöglicht eine kontinuierliche Bereitstellung, die für bessere Performance, Zuverlässigkeit und schnellere Time-to-Market sorgt.
Das übergeordnete und langfristige Ziel besteht darin, Geschwindigkeit, Skalierbarkeit und schließlich die Gewinnspanne zu verbessern. Im Fokus trägt der agile DevOps-Ansatz dazu bei, Risiken zu reduzieren. Denn man entwickelt in kurzen Abständen und testet, verifiziert oder korrigiert bei Bedarf. Aus den einzelnen Microservices wiederum werden Bündel erstellt, die in (Docker-)Containern organisiert, in Kubernetes orchestriert und mit DevOps- und GitOps-Workflows gemanagt werden.
Bei traditionellen Applikationen sind Funktionen häufig in einer einzigen Applikation (Monolith) gebündelt. Wird ein Feature angepasst, ist die gesamte Applikation betroffen. Performance und Flexibilität leiden. Microservices hingegen erlauben es aufgrund ihrer leichtgewichtigen Architektur, flexibel und autark auf Änderungen einzugehen. Eine Anwendung besteht somit aus vielen kleinen Einzelkomponenten. Jede dieser Komponenten führt jeweils nur eine Funktion aus, z. B. Authentifizierung, Benachrichtigung oder Zahlungsverarbeitung. Somit lassen sich Updates und Änderungen an einer Funktion jederzeit ganz gezielt umsetzen, ohne dass die Entwickler das ganze System anfassen müssen.
Ein Microservice stellt immer genau einen Funktionsblock zur Verfügung, der in jeder Cloud-Umgebung funktioniert. Container wiederum ermöglichen es, diese Anwendungen in kleinen, kompakten Umgebungen isoliert darzustellen und dennoch auf einen gemeinsamen „Betriebssystemkern“ zuzugreifen. Der Vorteil von Containern: Sie verbrauchen deutlich weniger Ressourcen als virtuelle Maschinen und werden nahezu umgehend gestartet.
Die Art und Weise, wie Software-Entwicklung und Deployment inzwischen erfolgen bzw. erfolgen können, hat sich fundamental gewandelt. Was nicht mehr funktioniert, ist die jahre- oder jahrzehntelange Gewohnheit, in großen (Wasserfall-)Projekten zu denken und zu agieren. Das gelernte, tendenziell bedächtige und vorsichtige Vorgehen zur Risikovermeidung bedient der Cloud-native Ansatz nicht. Es geht darum, durch kleine und reversible Schritte in kurzen Zeitabständen schneller in der Entwicklung voranzukommen. Der Umgang mit technischen Risiken erhält somit eine flexiblere Basis, um auf Markt- oder Kundenanforderungen zeitnah antworten zu können.
Cloud-native Applikationen | Traditionelle Applikationen |
---|---|
Vorhersagbar | Unberechenbar |
Stateless/shared state | Sticky |
unabhängig vom Betriebssystem | abhängig vom Betriebssystem |
Kapazität in der richtigen Größe | Überkapazität |
Kollaborativ | Silo-Denken |
Continuous Delivery | Wasserfall |
Automatisiertes Skalieren | Manuelle Skalierung |
Schnelle Wiederherstellung/ Neustart | VMs werden nur langsam gestartet/ wiederhergestellt |
Der Hauptunterschied zwischen traditionellen und Cloud native Applikationen liegt in ihrer Architektur.
Die Vorteile von Cloud-nativen Applikationen ermöglichen es, skalierbare Anwendungen schneller zu entwickeln und zu aktualisieren. Fehlertolerant und responsiv können sie in jedem Cloud-Modell abgebildet werden, ob Private, Public oder Hybrid Cloud.
Ist ein Unternehmen von den langfristigen Vorteilen Cloud-nativer Applikationen überzeugt und möchte das entsprechende Know-how aufbauen, findet es Unterstützung in der unabhängigen Beratung durch einen Multi-Cloud Data Service Provider wie plusserver. Auf Basis einer intensiven, detaillierten Bestandsaufnahme werden Konzept und Strategie entwickelt, um alle Vorteile des Cloud-native-Ansatzes erfolgreich nutzen zu können.
Zunächst einmal sollten sich Unternehmen die Frage stellen, welches Ziel sie mit einem Cloud Native Ansatz verfolgen möchten. Geht es nur darum, eine bestehende Anwendung in die Cloud zu bringen, genügt eigentlich auch IaaS (Infrastructure as a Service). Damit können Unternehmen Kosten einsparen und erhalten mehr Flexibilität und Skalierbarkeit für ihre Anwendungen. Ist ein tatsächlicher Umstieg zu Cloud Native geplant, müssen Unternehmen bereit sein, auch einen kulturellen Wandel einzuleiten. In dessen Folge kommen etablierte Prozesse ebenfalls auf den Prüfstand. Dann führt Cloud Native zu deutlich mehr Agilität, unterstützt die digitale Transformation und hilft Innovationen zu beschleunigen.
Die wichtigste Grundvoraussetzung für Cloud Native Anwendungen ist es, bei der Entwicklung die richtige Architektur einzusetzen. Hier sind die wichtigsten Schlagworte Microservices, Container, Orchestrierung sowie Automatisierung.
Microservices
Cloud Native Anwendungen basieren meist auf Microservices, also einer Vielzahl kleiner, unabhängiger Module. Jeder dieser Microservices hat eine dedizierte Aufgabe und nutzt eine genau definierte Schnittstelle, um mit den anderen Modulen zu kommunizieren. Dadurch werden Teilaufgaben isoliert und Applikationen effizienter strukturiert. Zudem können mehrere Entwicklerteams gemeinsam und zeitgleich an einer Anwendung arbeiten.
Container
Die Anwendungen inklusive aller Abhängigkeiten wie Bibliotheken und Konfigurationsdateien werden dann in Container verpackt. Diese stellen die komplette Laufzeitumgebung der Applikation in nur einem Paket bereit. Das ermöglicht es den Entwicklern, Anwendungen zwischen verschiedenen Umgebungen hin- und herzuschieben. Tests können dann beispielsweise in einem spezifischen Hardware-Umfeld laufen und der Betrieb in einem anderen. Oder eine Applikation läuft zunächst auf einer physischen Maschine und danach in der Cloud.
Container-Orchestrierung
Cloud Native Anwendungen bestehen aus viel mehr Einzelbausteinen als frühere monolithische Applikationen. Deshalb ist es sinnvoll, für deren Verwaltung Tools für die Container-Orchestrierung einzusetzen. Sie ermöglichen ein harmonisches Zusammenspiel zwischen einer Vielzahl von Containern und Microservices, aus denen eine Anwendung besteht.
Automatisierte Prozesse
Container-Orchestrierung hilft auch dabei, die Bereitstellung, Verwaltung, Skalierung und Vernetzung von Containern zu vereinfachen und möglichst weitgehend zu automatisieren. Moderne Verfahren wie Continuous Delivery tragen ebenfalls dazu bei, dass Produkte oder funktionsfähige Produkt-Features über automatisierte Prozesse kontinuierlich ausgeliefert werden.
Eine Automatisierung des Entwicklungs- und Deployment-Prozesses (CI/CD-Pipeline) erlaubt, Anwendungen wesentlich schneller zu testen und Updates häufiger auszurollen. So sind Produktverbesserungen innerhalb von Stunden oder sogar Minuten möglich - nicht in Wochen oder Monaten, wie bei monolithischen Applikationen. Unternehmen können dadurch auch schneller auf veränderte Kundenwünsche reagieren.
Außerdem skalieren alle benötigten Ressourcen in der Cloud deutlich flexibler und sind zu niedrigeren Kosten erhältlich. Werden beispielsweise mehr Speicherkapazitäten oder Rechenleistung benötigt, können diese bedarfsgerecht hinzu gebucht oder wieder reduziert werden. Dazu sind weder zusätzliche Investitionskosten noch eine langwierige Planung der Infrastruktur nötig. Zudem basieren die meisten Cloud Native Anwendungen auf Open Source Tools. Das macht sie zum einen weniger abhängig von einzelnen Anbietern, da der Quellcode offen und frei zugänglich ist. Zum anderen sind sie dadurch auch portabler. So können sie relativ einfach von einer Cloud in eine andere umziehen oder in Multi-Cloud-Umgebungen eingesetzt werden.
Um das volle Potenzial von Cloud Native zu erschließen, ist es wichtig, auch Sicherheitsmaßnahmen direkt in der Anwendung zu implementieren. Besonders geeignet hierfür ist der sogenannte „Defense in Depth“-Ansatz. Das bedeutet, dass mehrere Sicherheitsmaßnahmen über die komplette Anwendungsarchitektur hinweg eingebaut sind. Damit wird sozusagen ein vielschichtiges und komplexeres Abwehrsystem implementiert, das Hacker nicht so leicht überwinden können, wie eine einzelne Sicherheitsbarriere. Heute gibt es bereits spezielle Cloud Native Security-Lösungen für eine problemlose Integration via API direkt in den Software Stack.
Cloud Native Anwendungen bringen durch die Vielzahl der einzelnen Microservices und Container, aus denen die Applikation besteht, auch mehr Komplexität mit sich. Deshalb ist es sinnvoll, eine Lösung für Container-Orchestrierung einzusetzen. Hier hat sich Kubernetes inzwischen zum De-facto-Standard etabliert. Container-Orchestrierung mit Kubernetes hilft, die Bereitstellung, Verwaltung, Skalierung und Vernetzung von Containern zu vereinfachen und möglichst weitgehend zu automatisieren. Nicht alle Unternehmen haben die Zeit und das Fachwissen hierfür. Für sie gibt es die Möglichkeit, Managed Kubernetes als Service bei einem Multi-Cloud Data Service Provider wie plusserver zu nutzen. Das reduziert die Komplexität und den Aufwand für interne Mitarbeiter drastisch, senkt Kosten und beschleunigt Innovationszyklen.
Cloud Native hat nicht nur den Bereich Softwareentwicklung revolutioniert. Die neuen agilen Methoden zogen einen weiter reichenden kulturellen Wandel nach sich. Dieser führte nicht nur zu neuen Ansätzen wie DevOps und DevSecOps. Nach und nach entstand eine ganz neue Art der Zusammenarbeit innerhalb bis dahin unterschiedlicher Teams. Unternehmen, die diesen kulturellen Wandel als Chance begreifen, können ihre Organisation dank Cloud Native insgesamt zukunftsfähiger aufstellen.
Die neu gewonnene Agilität erlaubt es dann, leichter mit dem ökonomischen Wandel Schritt zu halten und flexibler auf Veränderungen zu reagieren. Das ist in Zukunft auch nötig. Denn es gibt eine ganze Reihe weiterer Entwicklungen, die unsere Geschäftswelt nachhaltig verändern werden. So tragen beispielsweise Künstliche Intelligenz, Machine Learning, datenbasierte Auswertungen und Augmented Reality zu einer weiteren industriellen Revolution bei.
Organisationen, die sich diesem Wandel nicht alleine stellen möchten, können auf die Expertise und Beratung erfahrener Cloud-Experten setzen. plusserver unterstützt Unternehmen zum Beispiel dabei, die digitale Transformation als Treiber für eine verbesserte Wertschöpfung, Innovation und Wettbewerbsposition zu gestalten. Dazu offeriert der Multi-Cloud Data Service Provider deutschen Unternehmen eine datensouveräne und anbieterunabhängige Basis für ihre digitalen Geschäftsprozesse. Auf diesen sicheren, skalierbaren Cloud-Plattformen realisiert der Anbieter für seine Kunden zukunftsfähige und kosteneffiziente digitale Anwendungen. Darüber hinaus bietet plusserver umfassende Consulting Services an.
Jetzt Artikel teilen:
Im kostenfreien Whitepaper finden Sie einen Leitfaden, um den Reifegrad des eigenen Unternehmens zu bewerten und Maßnahmen abzuleiten.
DAS KÖNNTE SIE AUCH INTERESSIEREN:
Wodurch zeichnet sich Cloud-native Entwicklung und die daraus resultierenden Apps aus?
Bei der Container-Nutzung geht es vor allem darum, einen hohen Grad an Automatisierung zu erreichen.
CI/CD steht für eine Sammlung von Techniken, Prozessen und Werkzeugen, um die Softwareentwicklung und -auslieferung zu verbessern.
Bitte wählen Sie einen der unten stehenden Links, um zum gewünschten Portal zu gelangen.
Bei Fragen oder technischen Problemen wenden Sie sich bitte an Ihre gewohnten Ansprechpartner.
Für die Darstellung dieser Inhalte von YouTube benötigen wir Ihre Einwilligung. Wenn Sie die Inhalte aktivieren, werden Ihre Daten verarbeitet und es werden Cookies auf Ihrem Endgerät gespeichert sowie von diesem gelesen.
Weitere Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung für 30 Tage ( in einem Cookie) speichern