Andreas Pfenninger
Associate Partner
Cloud-native Entwicklung reduziert die Fertigungstiefe von Anwendungen und führt zu mehr Speed und Agilität im Entwicklungsprozess.
Autoren: Andreas Pfenninger & Daniel Albisser
Die Applikationsentwicklung erfolgt heute verstärkt Cloud-native auf PaaS oder Containern/Kubernetes Plattformen. Der Trend geht jedoch stark in Richtung Serverless. Alle Hyperscaler wie Microsoft Azure, Google Cloud Plattform oder Amazon Web Services stellen entsprechende Dienste bereit und bauen diese stark aus.
Unsere Kunden bewegen sich in einem dynamischen und innovativen Umfeld. Datengetriebene Services verändern die Customer Journey, Kollaborationen mit Partnern und Ökosystemen ermöglichen neue Geschäftsmodelle. Und durch die Digitalisierung der Kundenschnittstellen steigen die Erwartungen: die Kunden wollen einen einfachen Zugang zu innovativen Diensten rund um die Uhr. Um mit dieser Entwicklung Schritt halten zu können, muss ein Unternehmen die Fähigkeit haben, neue Produkte schnell auf den Markt bringen zu können und diese schnell zu adaptieren.
Viele Organisationen haben realisiert, dass sie zwar Cloud-Dienste nutzen, aber nicht voll von den versprochenen Vorteilen profitieren. Eine traditionelle Applikation, die mit «Lift&Shift» in die Cloud gehievt wurde, läuft zwar in der Cloud, profitiert jedoch in keiner Weise von all den unterliegenden Möglichkeiten von Cloud-native. In vielen Fällen lohnt es sich deshalb, vorhandene Softwaremonolithen aufzubrechen und sie nach Cloud-native Prinzipien von Grund auf neu zu entwickeln.
Cloud-native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen zu implementieren und zu betreiben. Eine Anwendung wird als Cloud-native bezeichnet, wenn sie nach den Prinzipien von Cloud-native entwickelt wurde und die Vorteile von Cloud-Technologien ausnutzt. Dies können öffentliche, private und Hybrid-Clouds sein. Zu den Vorteilen gehören Business Agilität, Skalierbarkeit, Resilienz, Automatisierung und Kosteneinsparungen.
Best-Practices, wie Container, Service-Meshs, Microservices, immutable Infrastruktur und deklarative APIs unterstützen diesen Ansatz; mehr dazu unter Cloud Native Computing Foundation (CNCF):
Die zugrundeliegenden Techniken ermöglichen die Umsetzung von entkoppelten Systemen, die belastbar, handhabbar und beobachtbar sind. Kombiniert mit einer robusten Automatisierung können Softwareentwickler mit geringem Aufwand flexibel und schnell auf Änderungen reagieren. Diese Eigenschaften sind das Ziel der Cloud-native Entwicklung. Für das Design von Cloud-native Applikationen kann z.B. die 12-Factor App Methodologie angewendet werden, welche eine ausführliche Auflistung von Best Practices enthält.
Cloud-native Applikationsplattformen bieten Entwicklungsservices und Features an, die über reine Compute, Storage und Infrastructure Services hinaus gehen. Sie bieten Abstraktionen dieser darunterliegenden Services an, um die Eigenschaften von Cloud-native Architekturen zu ermöglichen.
Cloud-native Applikationen reduzieren die Fertigungstiefe, indem sie auf möglichst hohem Abstraktionslevel aufbauen. Während traditionelle und «Cloud-ready» Applikationen z.B. auf virtuelle Maschinen aufgebaut werden, setzen «Cloud-native» Applikationen auf App Services und Serverless Functions auf. Aspekte wie Verfügbarkeit und Skalierbarkeit werden von der Plattform automatisch garantiert. Dadurch sinkt die Komplexität der Anwendung.
Container (Kubernetes) und Serverless Functions schliessen sich nicht gegenseitig aus, eine Cloud-native Applikation kann beide Technologien sinnvoll kombinieren. So eignen sich z.B. Container besser zur Migration von Legacy Applikationen. Und Serverless Functions sind speziell geeignet für Event-driven Architekturen mit «Nanoservices» – mehr dazu im Beitrag Cloud-Native! Aber wie? Container vs Serverless. Der richtige Mix macht es aus.
Ein hoher Grad an Automatisierung ist für Cloud-native Entwicklung zwingend. Das wird einerseits durch DevOps und Automatisierung bei der Provisionierung und bei Applikations-Deployments erreicht, andererseits auch durch die Skalierung der unterliegenden Infrastruktur.
Der Schritt zu Cloud-native Entwicklung bringt viele Vorteile:
Doch aufgepasst: Cloud-native Entwicklung bedingt auch einige Veränderungen in der Art und Weise, wie Software-Lösungen entwickelt werden und entsprechendes Know-how. Design-Entscheide müssen noch bewusster gefällt werden, denn die Abhängigkeit einer Software-Lösung von einem spezifischen Cloud-Provider nimmt stark zu und ist aufgrund von «Business Continuity» und gewissermassen Unabhängigkeit zu berücksichtigen.
Bringen Sie Ihre IT auf den nächsten Level der Software-Entwicklung. Die Vorteile von Cloud-native sind glasklar und helfen der IT bei der Industrialisierung! Doch der richtige Mix macht es aus: um einerseits von den Vorteilen maximal zu profitieren und andererseits sich nicht in eine zu starke Abhängigkeit eines einzelnen Cloud-Providers zu begeben – mehr dazu im Beitrag «Cloud-native Entwicklung mit überschaubarem Risiko».
Wie können wir Sie unterstützen?
Mit Hilfe von Cloud-native Services aus der Microsoft Azure Cloud entwickelt Swiss Re P&C Solutions innovative digitale Lösungen für ihre Kunden.