Cloud-native-Entwicklung beschleunigt Innovationen

Cloud

Der Cloud-nativen Applikationsentwicklung gehört zweifellos die Zukunft. Mit dem Cloud-nativen Konzept können Unternehmen die Geschwindigkeit, Flexibilität und Qualität bei der Applikationsentwicklung steigern und gleichzeitig die Risiken reduzieren. Container sind eine Kernkomponente einer solchen Strategie.

Entwickler stehen vor der Aufgabe, Innovationen voranzutreiben und die Time-to-Market durch die Nutzung produktiverer Technologien zu erhöhen. Die Entwicklung und der Betrieb von Applikationen stehen deshalb vor einem gravierenden Wandel. Die Veränderungen zeigen sich in verschiedensten Bereichen: Es geht um immer mehr Daten, die zudem immer schneller verfügbar sein müssen. Ruhende Daten in einer Datenbank spielen nicht mehr die entscheidende Rolle, heute kommt es vielmehr auf die Daten an, die ständig in Bewegung sind und sich von Sensoren und Wearables hin zu den verarbeitenden Systemen bewegen. Eine Bearbeitung dieser Datenmengen ist mit klassischen Batch-Prozessen kaum noch abzudecken. Applikationsteile werden zudem immer kleiner und verbrauchen weniger Ressourcen – das steigert die Packungsdichte auf der Hardware und ermöglicht eine bessere Auslastung. Und Konzepte wie „Pay for what you use“ liegen im Trend.

Um dieser veränderten Situation gerecht zu werden, setzen Unternehmen zunehmend auf eine Cloud-native Entwicklungsstrategie und die Nutzung von Container-Technologien.

Im Umfeld der Cloud-nativen Entwicklung ist eine Vielzahl von Methoden, Frameworks, Architekturen und Sprachen verfügbar. Erst die großen Wahlmöglichkeiten schaffen die Flexibilität, um die Anforderungen unterschiedlicher Geschäftsanwendungen optimal zu erfüllen. Trotz der Heterogenität, die zu einer hohen Komplexität führt, ist aber eine Konstante erkennbar: Die Zwölf-Faktor-Methodologie hat sich inzwischen mehrheitlich als Standard bei der Bereitstellung moderner Cloud-basierter Anwendungen etabliert.

Hinsichtlich des generellen Cloud-nativen Hypes muss allerdings eine Einschränkung gemacht werden. Die vollständige Unterstützung der zwölf Faktoren ist nicht zwingend erforderlich für die gesamte Applikationslandschaft eines Unternehmens, da damit unweigerlich ein hoher Komplexitätsgrad verbunden ist. Zum Beispiel gibt es in einzelnen Abteilungen eines Unternehmens spezifische, oft sehr kleine Applikationen, die nicht skalieren müssen und folglich auch nicht Cloud-native sein müssen.

Die hohe Komplexität der Cloud-nativen Entwicklung erfordert auf jeden Fall den Einsatz einer Container-basierten Anwendungsplattform, die die benötigten Architekturen und Frameworks unterstützt und kontinuierlich mit technologischen Änderungen aktualisiert wird.

Kubernetes ist die Basis

Die verteilten Anwendungsteile im Cloud-native-Bereich führen unweigerlich zum Thema Orchestrierung und damit Kubernetes. In der Diskussion rund um die Orchestrierung von Containern wird oft übersehen, was Kubernetes wirklich leistet. Kubernetes wird vielfach nur als eine Anwendung definiert, die Container ausführt – also als eine Laufzeitumgebung. Eine nähere Betrachtung zeigt aber, dass Kubernetes ein Bundle von APIs und Dienstprogrammen für die Orchestrierung und das Ressourcenmanagement bereitstellt.

Die vier Eckpfeiler der Cloud-nativen Anwendungsentwicklung. (Quelle: Red Hat)
Die vier Eckpfeiler der Cloud-nativen Anwendungsentwicklung. (Quelle: Red Hat)

Der Begriff Kubernetes-native Entwicklung beinhaltet somit eine Ablaufumgebung und Techniken und Methoden, um Anwendungen und den Entwicklungsprozess ideal auf eine bestimmte Umgebung abzustimmen. Ein gutes Beispiel sind hier Continuous Integration und Continuous Delivery. In den vergangenen Jahren hat sich Jenkins als Standard etabliert. Die Kombination aus primären Instanzen, die als Service bereitstehen und ihrerseits die Aufgaben auf eine definierte Anzahl sekundärer Knoten verteilen, entspricht aber nicht wirklich dem flexiblen Skalierungsmodel von Kubernetes. Ideal wäre es, aus den einzelnen Prozessen in der Build Pipeline entsprechende Container zu erstellen und – je nach Anzahl und Frequenz – die Verwaltung der entstehenden Container auch direkt Kubernetes zu überlassen. Daher sind Werkzeuge wie Jenkins X, Tekton oder ArgoCD, die direkt auf Kubernetes basieren, die bessere Wahl, da sie die Infrastruktur optimal nutzen.

Doch auch mit Kubernetes ist noch nicht alles vorhanden, was Anwender für eine Container-Plattform benötigen. Sie erfordert darüber hinaus etwa folgende Komponenten: Container-Registry, Netzwerk, Storage, Protokollierung und Überwachung sowie Authentifizierung und Autorisierung. Dieses Lösungspaket bietet Red Hat OpenShift, die branchenweit umfassendste Kubernetes-Plattform.

Herausforderungen neuer Entwicklungsprozesse

Ein Punkt darf aber nicht außer Acht gelassen werden: Neue Entwicklungsprozesse bringen nicht per se nur Vorteile mit sich. Im Gegenteil: Sie verursachen auch neue Herausforderungen. So kann es durchaus sein, dass ein Entwickler über kurz oder lang mehr Zeit für die Konfiguration und Administration der Infrastruktur und Plattformumgebung aufwendet als für die tatsächliche Softwareentwicklung. Deshalb ist es unverzichtbar, einen Software-Development-Lifecycle zu definieren, der die Software wieder in den Mittelpunkt stellt. Kernelemente sind dabei eine vollständig integrierte Plattform und ein Lösungspaket, das die erforderlichen Entwicklungsumgebungen schnell und effektiv bereitstellt. Dazu gehört eine Vielzahl unterschiedlicher Komponenten: Erweiterungen für Entwicklungsumgebungen – etwa CodeReady Workspaces – oder für Entwickler optimierte Kommandozeilen-Tools für die Interaktion mit Kubernetes-Clustern – etwa ODO – sind nur zwei Beispiele.

Die vier Säulen der Cloud-nativen Entwicklung

Eine vollintegrierte Infrastruktur ist somit für die Umsetzung des Cloud-nativen Konzepts unerlässlich. Doch was charakterisiert ein solches Konzept im Detail? Im Wesentlichen sind es die vier Aspekte Service-basierte Architektur, API-basierte Kommunikation, Container-basierte Infrastruktur und DevOps-Prozesse.

Service-basierte Architekturen wie Microservices ermöglichen den Aufbau modularer, lose gekoppelter Anwendungen. Sie bieten Unternehmen eine entscheidende Unterstützung bei der Beschleunigung der Anwendungserstellung. Die Services werden über leichtgewichtige, Technologie-agnostische APIs bereitgestellt, die die Flexibilität beim Deployment sowie bei der Skalierung und Wartung erhöhen.

Cloud-native Anwendungen basieren zudem auf Containern, die einen Betrieb in verschiedenen Technologieumgebungen ermöglichen und damit echte Anwendungsportabilität unterstützen, etwa im Hinblick auf Public, Private und gemischte Clouds. Mit der Containertechnologie können die verfügbaren Rechenressourcen auf mehrere Anwendungen aufgeteilt werden, wobei gleichzeitig gewährleistet ist, dass die Anwendungen sicherer und voneinander isoliert sind. Cloud-native Anwendungen skalieren horizontal, dadurch können weitere Anwendungsinstanzen einfach hinzugefügt werden – oft durch Automatisierung innerhalb der Containerinfrastruktur.

Nicht zuletzt folgt die Anwendungsentwicklung bei Cloud-nativen Ansätzen agilen Methoden mit DevOps-Prinzipien, die auf die kollaborative Erstellung und Bereitstellung von Anwendungen durch Teams aus Entwicklung, Qualitätssicherung, IT-Sicherheit und IT-Betrieb fokussieren.

Die Sicherheit im Fokus

Nicht zu kurz kommen darf bei der Cloud-nativen Applikationsentwicklung die Sicherheit. Dabei handelt es sich um ein sehr umfangreiches Thema, wie bereits die Container-Sicherheit zeigt. Folgende Aspekte sind unter anderem zu berücksichtigen: Beim Hostsystem muss sichergestellt sein, dass zwischen den genutzten Ressourcen keine unberechtigten Zugriffe möglich sind. Neben der Container Runtime und Orchestrierung ist hier vor allem ein solides Linux wichtig. Auch muss gewährleistet sein, dass nur aus vertrauenswürdigen Quellen Container Images bereitgestellt werden. Und auf der Anwendungs- oder Container-Seite müssen Sicherheitsmaßnahmen etwa für die verwendeten Basis-Images, den Build-Prozess oder das Deployment ergriffen werden.

Prinzipiell stellen Container-Plattformen in Kombination mit Cloud-nativen Laufzeitumgebungen einen der dynamischsten Treiber für Innovationen dar. Diese Kombination wird deshalb nach unserer Einschätzung ein dominierendes Deployment-Muster werden. Darüber hinaus ist im Cloud-Umfeld derzeit ein klarer Trend in Richtung Nutzung von Hybrid-Cloud-Modellen erkennbar, die On-premise- und Off-premise-Ressourcen kombinieren. Gerade auch hier gilt: Unternehmen sollten eine integrierte Plattform einsetzen, die eine einheitliche Cloud-native Anwendungsentwicklung auf einer beliebigen Infrastruktur unterstützt – von Multi-Cloud-Umgebungen bis zu On-premise-Implementierungen.

Autor
Erfahren Sie mehr 
Markus Eisele ist Developer Adoption Program Lead EMEA bei Red Hat
Erfahren Sie mehr