Programmieren in der und für die Cloud

Cloud Native Development – grenzenloses Potenzial

| Autor / Redakteur: Christian Rentrop / Stephan Augsten

Cloud Native Development vermeidet einige klassische Probleme der Software-Entwicklung.
Cloud Native Development vermeidet einige klassische Probleme der Software-Entwicklung. (Bild: TheDigitalArtist - Pixabay.com)

Statt die Cloud nur zu nutzen, wird im Zuge des Cloud-native Development direkt für die Nutzung programmiert. Im Endergebnis stehen leistungsstarke und skalierbare Lösungen, die Entwicklern erlauben, sich auf die eigentliche Anwendung zu konzentrieren.

Cloud Computing hat in der vergangenen Dekade den Umgang mit Software revolutioniert. So bieten Google Cloud Platform und Amazon Web Services leistungsstarke Cloud-Speicher- und -Rechenlösungen, auf denen Anwendungen aufgesetzt werden können.

Hier setzt die Cloud-Native-Idee an: Anwendungen werden so entwickelt, dass sie nicht mehr bloß mit, sondern in der Cloud arbeiten. Dadurch sind sie nicht nur besonders leistungsfähig, sondern vermeiden auch klassische Probleme bei der Software-Entwicklung, etwa mit der Skalierung oder der Migration und Optimierung.

Entwickler können sich auf die eigentliche Anwendung konzentrieren und müssen sich nicht mit der zugrundeliegenden Servertechnik auseinandersetzen. Damit das funktioniert, setzt das Cloud-native Development auf vier Säulen auf, die sich in den vergangenen Jahren zunehmend festigen konnten.

Die vier Säulen der Cloud-nativen Entwicklung

Die Rede ist von DevOps, Continuous Delivery, Microservices und Container-Formaten. Vor allem letztere sind dabei besonders relevant. Als Quasi-Standards im Container-Umfeld haben sich Docker und die Orchestrierungslösung Kubernetes etabliert. Deshalb kommt Docker auch häufig im Cloud-Native-Development zum Einsatz.

Die Vorteile liegen auf der Hand: Die Inhalte des Docker-Containers stehen als Applikation für sich und sind hochgradig mobil: Alles, was sie benötigen, ist ein System, das Docker ausführen kann. Ob es sich dabei um einen Desktop-Rechner oder eine Cloud-Farm handelt, spielt dabei funktional erst einmal keine Rolle.

Vielmehr dient die Cloud vor allem als Lieferant von Rechenleistung und Speicherplatz. Das sorgt einerseits für ideale Skalierbarkeit und andererseits für minimalen Aufwand bei der Wartung der zugrundeliegenden Infrastruktur, weil diese vom Cloud-Anbieter übernommen wird. Der Container ist von der Hardware abgekoppelt.

Microservices helfen, den Überblick zu behalten

Microservices spielen ebenfalls eine große Rolle beim Cloud Native Development. Die Zielsetzung ist es, nicht länger große Applikationen zu entwickeln, die später schwer zu überblicken und zu warten sind. Der moderne Ansatz sieht vor, große Anwendungen in viele möglichst kompakte Prozesse aufzuteilen.

Statt einen enormen Funktionen-Overhead innerhalb einer monolithischen Software abzubilden, gilt die Unix-Philosophie, pro Programm nur eine Sache zu erledigen – und dafür gut („Make each program do one thing well.“). Der Cloud-Native-Ansatz geht sogar noch weiter: Microservices sollten auch hier in eigenen Containern gepflegt werden, um sie von der Hardware-Basis zu entkoppeln. Docker bietet mit Swarm entsprechende Möglichkeiten.

Effizienteres Programmieren

Die Aufteilung in Microservices und Container hat den Vorteil, dass einzelne Probleme bei Problemen gezielt aufgespürt und verbessert werden können. Verkeilt sich ein Teilprogramm, lässt es sich schnell neu starten, ohne dass das ganze System offline genommen werden muss.

Gleichzeitig lassen sich einzelne Anwendungsbestandteile relativ schnell korrigieren, verbessern, aktualisieren oder austauschen, was die Handhabung deutlich erleichtert. Noch dazu können kleine Teams einzelne Services pflegen. Im Zusammenspiel mit DevOps und dem Gedanken der kontinuierlichen Entwicklung ergibt das eine ebenso zuverlässige wie skalierbare Möglichkeit, Software schnell an neue Anforderungen anzupassen.

Verschobene Komplexität

Die Aufteilung einer Anwendung in Microservices und Container ist allerdings nicht automatisch mit einer Reduktion der Komplexität verbunden, vielmehr wird diese nur verschoben. Statt wie früher eine große, komplexe Anwendung zu pflegen, muss im Cloud Native Computing ein Cluster aus kleinen Anwendungen orchestriert werden, um optimale Bedingungen zu schaffen.

Mit der Qualität deren Kommunikation untereinander und der effektiven Vernetzung steht und fällt die Qualität des Gesamtsystems. Anstelle einiger „Monolithen“ gibt es bei der Cloud-nativen Entwicklung eine riesige Menge kleiner und kleinster Dienste, deren Überwachung und Verbindung natürlich neue Komplexität schafft. Tools wie Kubernetes helfen dabei, dieses Zusammenspiel zu organisieren.

Cloud Native Development ist aber nicht zwangsläufig ideal für alle Anwendungen: Je nach Software kann sich durchaus ein „klassisches“ monolithisches Modell anbieten, auch wenn dieses natürlich seinerseits in einem Container arbeiten kann, um wenigstens in Sachen Performance von singulärer Hardware abgekoppelt zu sein.

Wo viel Licht ist, ist auch Schatten

So viel Potenzial der Cloud-Native-Ansatz auch bietet, so gibt es auch einige durchaus berechtigte Gegenargumente. So eignen sich derart entwickelte Lösungen natürlich nur für Systeme, die schnell und einfach skaliert werden und per Web-Frontend bedient werden sollen.

Gleichzeitig gibt es durchaus Sicherheitsaspekte, die berücksichtigt werden müssen. Cloud-Anwendungen sollten beispielsweise generisch entwickelt werden, um Redundanzen zu vermeiden. Das wiederum bedeutet jedoch, dass die Möglichkeiten der Cloud-Anbieter genau geprüft werden müssen.

Zusätzlich geben Unternehmen natürlich mit Cloud-Native-Anwendungen einen nicht unerheblichen Teil ihrer Infrastruktur an ein Drittunternehmen heraus. Dies kann weitere Probleme vom Datenschutz über Sicherheitsrisiken bis hin zu Verfügbarkeitsschwierigkeiten verursachen kann. Nicht zuletzt gibt es auch viele Anwendungsszenarien, die schlicht und ergreifend keine Cloud-native Entwicklung benötigen.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45964190 / Cloud & PaaS)