Cloud-Entwicklung

Navigation aller Website-Bereiche

Technologie und Wissen

Was gilt es zu wissen über die aktuellen Trend-Themen?

Cloud-Entwicklung

Keine andere Technologie hat die Art der Software-Entwicklung so verändert wie die Cloud. Sie ist für alle Unternehmen – vom Startup bis zum Internet-Konzern – ein wichtiger Eckpfeiler der Digitalisierung geworden. Unser Beitrag beantwortet die Frage, was Cloud native ist und wie damit Services mit den Mitteln der Cloud in der Cloud und für die Cloud erstellt werden können.

Cloud Na(t)ive Development – „Liften“ und „Shiften“ ohne Server

Um sich nicht zu stark an einen Anbieter oder Dienst zu binden und so die Skalier- als auch Kostenvorteile der Cloud optimal nutzen zu können, fahren die meisten Unternehmen eine Multi-Cloud-Strategie. Als Weiterentwicklung der agilen Vorgehensweise hat sich hier ein integriertes DevOps-Modell der Zusammenarbeit etabliert. Dadurch, dass auch die Installation und Konfiguration der Cloud-Infrastruktur ebenso wie der darauf auszuführende selbstentwickelte Dienst in Codeform vorliegen, wird beides mit den gleichen Werkzeugen und Mitteln versioniert, verwaltet und getestet. Eine durchgängige Automatisierung der Software-Lieferkette mit DevSecOps und eine maximale Portierbarkeit durch Container sind dabei wichtige Bausteine einer erfolgreichen Cloud-Strategie.

Der jährlich erscheinende „State of DevOps Report“ zeigt, dass vor allem Organisationen, die Software konsequent und frühzeitig mit Lean- und DevOps-Prinzipien entwickeln und ihre gesamten Prozesse darauf ausrichten, nicht nur schneller sind, sondern auch Qualitäts- und Flexibilitätsvorteile haben und so schneller und besser auf Änderungen reagieren können. Dabei unterstützen viele Werkzeuge die optimale Umsetzung einer Deployment- und Delivery-Pipeline.

Die größte Herausforderung ist jedoch, die Kultur der Zusammenarbeit innerhalb der Organisation sicherzustellen. Auch wenn DevOps-Teams bewusst interdisziplinär aufgebaut sind, haben sich dafür trotzdem neue Rollenbilder herausgebildet, wie der Cloud-Architekt, DevOps-Engineer und Site Reliability Engineer. Ähnliches gilt für die datenspezifische DataOps-Variante mit dem Data Engineer. Gegenüber dem anfänglichen „Liften“ und „Shiften“ von kompletten virtualisierten Servern ist eine gute Anwendungs- und Infrastrukturarchitektur eine wesentliche Voraussetzung für Cloud native Dienste.

Von Cloud naive zu Cloud native in 12 Faktoren mit DevOps

Eine gute Orientierung zum Einhalten beim Bau von serverlosen und Event-orientierten Microservices sind die von dem Cloud-Plattform-Anbieter Heroku populär gemachten zwölf Faktoren. Unter dem bewährten Dach der Linux Foundation wurde die Cloud Native Computing Foundation (CNCF) gegründet, die die Standardisierung und damit die Industrialisierung von Cloud native Diensten voranbringen soll.

CNCF definiert Cloud native folgendermaßen: „Cloud native Technologien ermöglichen es, skalierbare Anwendungen in hybriden und dynamischen Cloud-Umgebungen zu bauen und zu betreiben. Diese werden als lose gekoppelte und resiliente Dienste umgesetzt, die einfach verwaltbar und überwachbar sind.“

Beispiele hierfür sind Container, Service Meshes und Microservices. Neben dem bekanntesten Hauptprodukt der CNCF, Kubernetes, bietet CNCF ein ganzes Ökosystem ausgereifter Lösungen. Dadurch, dass dieser Markt noch sehr jung und dynamisch ist, kann man schnell den Überblick verlieren oder muss öfters die Komponenten für eine Cloud native Lösung aktualisieren und austauschen. Aktuell übernehmen zahlreiche etablierte IT-Firmen die Pionierfirmen aus diesem Gebiet und schaffen integrierte und verlässliche Angebote. Gleichzeitig engagieren sich auch immer mehr große Unternehmen für die Weiterentwicklung der auf Open Source basierenden CNCF-Produkte, was die Standardisierung bei gleichzeitiger Weiterentwicklung vorantreibt. Nur so erklärt sich das erstaunliche Wachstum bei der CNCF – sowohl bei den Mitgliederzahlen als auch den Produkten.

Panta rhei – die drei Säulen der Überwachung

Bereits bei den Vorsokratikern findet sich der Gedanke „Man kann nicht zweimal in denselben Fluss steigen“ (Panta rhei). Das gilt auch viele Jahrtausende danach noch für Cloud native Anwendungen. Durch das regelmäßige Deployment neuer Dienste und die Erneuerung der darunterliegenden Infrastrukturplattform muss man noch stärker als zuvor mit Fehlern durch Änderungen rechnen. Umso wichtiger ist es, die eigenen Prozesse zu standardisieren und zu automatisieren. Das bringt jedoch wenig, wenn der IT-Betrieb keine guten Diagnosemöglichkeiten nutzt. Deswegen gehören Logging, Tracing und Monitoring zu den drei Säulen einer Telemetrie-Infrastruktur für Cloud native Dienste. Diese sollten durch weitere, automatisierte Tests und Gesundheitschecks ergänzt werden.

Die Masche mit den Diensten

Auch wenn Dienste lose gekoppelt sind, bedeutet dies nicht, dass sich diese bedingungslos aufeinander verlassen dürfen. Ganz im Gegenteil: Diese müssen auch mit (Teil-)Ausfällen umgehen können und entweder auf einen Standarddienst (Fallback) umschalten können, Überlastsituationen entzerren oder den Aufruf des fehlerhaften Dienstes für eine bestimmte Zeit aussetzen (Schutzschalter). Die Kommunikation im Netz, das die Dienste untereinander spannen, wird durch weitere Komponenten, wie Service Mesh mit Proxy, weiter kontrolliert und mit Verschlüsselung abgesichert. Da das Netzwerk grundsätzlich als unsicher angesehen wird („Zero Trust Security Network“), wird jede Netzwerkkommunikation in einem solchen Software-defined Network (SDN) standardmäßig verschlüsselt.

So übernehmen die Cloud native Dienste die Absicherung, Lastverteilung und Überwachung ihrer eigenen virtuellen Ressourcen und sind damit nicht mehr von zentralen Komponenten und ihrer Verfügbarkeit abhängig. Da ein Ausfall in einem solchen komplexen, verteilten Netz als Normalfall angesehen werden muss, müssen solche Systeme so designt werden, dass diese davon möglichst wenig betroffen sind und schnell darauf reagieren können. Um solche Ausfälle und die geeigneten Gegenmaßnahmen simulieren zu können, haben sich Disziplinen wie Chaos Engineering Testing herausgebildet.

Cloud native development Quelle: Cloud Native Computing Foundation

Cloud native lebt von Gemeinschaft und ist die neue Norm

Mit dem Trend zu agiler Entwicklung und DevOps, der Verlagerung von Infrastruktur in die Cloud und der Etablierung von Microservices-Architekturen werden Container zum wichtigen Baustein einer Cloud native Plattform.

Dabei setzt sich Kubernetes immer mehr als de-facto Standard durch. Die Cloud Native Computing Foundation (CNCF) wird dabei zu einem immer wichtiger werdenden Akteur im Cloud-Markt. Sie sorgt für die Balance zwischen Innovation und Standardisierung und bringt möglichst viele Beteiligte, wie Anwender, Entwickler, Hersteller und Anbieter, an einen Tisch. Nur gemeinsam können alle Marktteilnehmer die nächste Stufe der IT- und Anwendungs-Industrialisierungen gestalten. So können sich alle auf den Wettbewerb um die besten Zusatzdienste und Cloud-Angebote konzentrieren und eine Plattform-für-Plattformen etablieren. Dafür leistet die CNCF einen wichtigen Beitrag. Denn auch hier gilt: Das Produkt ist mehr als die Summe der einzelnen Cloud-Bestandteile.

Mehr zu Software-Entwicklung von Materna

Über den Autor