Cloud Native

Cloud Native ist ein Ansatz in der Entwicklung von Anwendungen oder Applikationen unter Berücksichtigung der cloudbasierten Anwendungsumgebung. Insbesondere steht die Container-Orchestrierung im Mittelpunkt.
Cloud Native
© Photocreo Bednarek
Teilen

Was bedeutet Cloud?

Der Begriff „Cloud“ ist lediglich eine Kurzform von Cloud Computing. Dies verdeutlicht den technologischen Aspekt der Cloud. Allgemein wird von Cloud gesprochen, wenn es sich um eine netzwerkbasierte Infrastruktur handelt. Dies kann in Form von Speicherkapazität, Rechenleistung oder auch Software erfolgen. Im Gegensatz zum Abruf von Daten eines physischen Servers erfolgt bei einer Cloud ein Zugriff auf virtuell bereitgestellte Dienste.

Seit der Etablierung dieser digitalen Server, hielten immer mehr Innovationen Einzug. Neben Cloud Software und Cloud Anwendungen, stieg auch die Zahl der sogenannten Native Cloud Applications – kurz NCA.

Cloud Native Computing

Doch was genau macht Applikationen oder Anwendungen „cloud native“? Cloud Native ist als Perspektive zu verstehen. Im Zuge der Digitalisierung und der Einführung von Cloud Technologien wurden neue Potentiale entdeckt und ausgebaut. Eine möglichst effiziente Nutzung der Cloud Mechanismen, um sowohl eine Verbesserung auf Seiten der Entwickler als auch der Nutzer zu erreichen. Diese Perspektive schafft ein Gerüst, eine Art Bauanleitung für künftige cloudbasierte Anwendungen.

Die Arbeit durch den Cloud-Native-Ansatz setzt gewisse strukturelle Bedingungen voraus, auf welche im Folgenden noch eingegangen wird. Grundsätzlich wird dadurch jedoch ein agiles und dynamisches Entwickeln bereitgestellt, welches im weiteren Sinne die Implementierung und das Ausführen von modernen und vor allem skalierbaren Anwendung ermöglicht.

Dies erfolgt unabhängig von der Art der Cloud (Public Cloud, Private Cloud und Hybrid Cloud), welche eingesetzt wird. Im Kern steht die Infrastruktur samt ihrer Kommunikationsschnittstellen durch beispielsweise APIs.

Cloud Native Computing Foundation

Im Zusammenhang mit Cloud Native ist auch die Cloud Native Computing Foundation – kurz CNCF – unausweichlich. Die CNCF hat sich als ein Projekt der Linux Foundation entwickelt und steht seit 2015 im Zusammenspiel mit den wachsenden Möglichkeiten in der Cloud Native Technologie. Mit Gründung der CNCF wurde auch eine Technologie von Google bereitgestellt, welche in den letzten Jahren immer mehr für Schlagzeilen sorgte – Kubernetes. Der Verband wächst kontinuierlich weiter und auch Kubernetes findet seit jeher immer mehr Anklang. Durch das Open Source Projekt wird eine stetige Verbesserung im Bereich der Container Orchestrierung ermöglicht und in vielen Fachbereichen gilt es trotz hoher Komplexität als state of the art.

Die 4 Säulen von Cloud Native

Um die Entwicklung von Cloud Native Applications besser verstehen zu können, lohnt sich ein Blick tiefer in die Materie. Eine strikte Trennung ist zwar nur schwer möglich, da es sich um ein Zusammenspiel aus vielen Teilbereichen handelt. Dennoch kristallisierten sich im Laufe der Zeit vier essenzielle Aspekte heraus, welche im Folgenden genauer betrachtet werden sollen:

  1. Microservices
  2. Container
  3. Continuous Integration / Continuous Development
  4. DevOps

Microservices

Microservices beschreiben im Grunde das Herunterbrechen von komplexen Softwareanforderungen in kleinere Teilschritte. So werden in sich geschlossene Aufgaben einzeln betrachtet.

Zur Verdeutlichung kann man sich die industrielle Revolution ins Gedächtnis rufen. Durch Arbeitsteilung wurde ein kompletter Prozess in kleinere Teilaufgaben zerlegt. Diese Teilsysteme funktionierten autark und waren durch die hohe Spezialisierung weniger fehleranfällig.

Früher und insbesondere vor Einführung der Cloud Architektur, war ein monolithischer Ansatz der Programmierung gängig. Die Software wurde nur für einen speziellen Anwendungsfall entwickelt und dementsprechend „von Kopf bis Fuß“ dahingehend durchdekliniert.

Im Zuge einer Modularisierung werden nun Teile davon herausgerissen und im Endprodukt an den richtigen Stellen miteinander wieder verbunden. Beispielsweise könnte man bei einer Onlineplattform folgende Microservices unterscheiden:

  • Datenbank mit Kundeninformationen
  • Bestellmodul
  • Versandmodul
  • Bezahlmöglichkeiten
  • Frontend

Jeder dieser Services wird nun einzeln betrachtet und als eigenständiger Service entwickelt. Im Endprodukt hingegen erfolgt eine Verknüpfung, dass diese Services miteinander im Austausch stehen können.

Container

Die Container sind im Grunde die Hülle um die Microservices. Diese Hülle kann als Isolierungsumgebung verstanden werden. Sie bietet Spielraum für den integrierten Service, inklusive des gesamten Dateisystems, wie beispielsweise Library Files oder auch Konfigurationseinstellungen, welches benötigt wird, um den Prozess auszuführen.

Ein weiterer Bestandteil dieser Container ist eine API-Schnittstelle. Gerade in Verbindung mit Cloud Native werden vermehrt REST-APIs eingesetzt, welche eine Punkt-zu-Punkt-Kommunikation ermöglichen. Diese ist ausschlaggebend dafür, dass im späteren Verlauf die verschiedenen Teilprozesse miteinander kommunizieren können.

Außerdem wird durch die Container sichergestellt, dass der Prozess, so wie er programmiert wurde, unabhängig vom OS Kernel läuft. Verschiedenen Container teilen sich sozusagen einen einzelnen Kern. Deutlicher wird dies, wenn man sich im Vergleich VMs oder auch Virtuelle Maschinen ansieht. Diese haben pro erstellte Einheit ein eigens installiertes Betriebssystem. Dies führt zu höheren Datenmengen und möglichen Kompatibilitätsproblemen bei einem späteren Überspielen der Anwendungen.

DevOps

DevOps ist ein Akronym aus den Wörtern Development und Operations. Hierbei stehen also sowohl die Entwickler – Developer – als auch der ausführende Part – Operator – im Fokus. Wenn ein Unternehmen eine DevOps Strategie fährt, werden beide Aspekte bereits bei der Programmierung zusammengelegt. Eine enge Zusammenarbeit führt zu schnelleren Entwicklungszeiten und einer besseren Kommunikation. DevOps ist aber im Zusammenhang mit Cloud Native auch bedingt durch die Container-Arbeitsweise bzw. das Separieren in Microservices. Durch die Container wird ein schneller und effizienter Datenaustausch ermöglicht. Und dadurch, dass Prozesse einzeln betrachtet und programmiert werden, ist auch das Gesamtsystem fehlertoleranter und einfacher zu warten.

Die Arbeit als DevOps-Team kann zusätzlich über den Einsatz von Software wie Microsoft Azure stattfinden. Hierbei wird nach der SCRUM Methode ein Projekt agil und dynamisch zum gewünschten Erfolg getrieben. Im Mittelpunkt steht dabei das Ausnutzen individueller Stärken in Kombination mit regelmäßigen Feedbackschleifen.

Continuous Integration & Continuous Deployment

Mit dem Wissen um Cloud, DevOps, Microservices und Container ist die letzte Säule einfach herzuleiten. Bei der Continuous Integration – kurz CI – geht es genauso wie beim Continuous Deployment – abgekürzt CD – zunächst um eine Kontinuität. Die Standardisierung stellt sich hierbei als Schlüssel zum Erfolg heraus. Durch geringe Datenmengen und den Einsatz von Containern ist auch der Betrieb von mehreren Prozessen parallel keine große Herausforderung. Auch durch die kleinen Teilsysteme oder Services wird ein Ausspielen von beispielsweise Updates im Falle eines Bugfixes erleichtert.

Insbesondere durch die enge Zusammenarbeit im DevOps-Team erfolgt auch die Entwicklung effizienter hinsichtlich des Software Life Cycle – SDLC. Vom Coding über die Integration neuer oder bestehender Inhalte, bis hin zu den Fehlerschleifen lässt sich der Prozess nun einfacher durchlaufen und gegebenenfalls optimieren.

Ein Hauptaspekt von Cloud Native im Zusammenhang mit CI und CD ist die Automatisierung. Dadurch, dass ein Kommunikationssystem eingepflegt wird und die Prozesse einem standardisiertem Verfahren nach abgehandelt werden, wird auch eine Regelmäßigkeit bei der Weiterentwicklung gewährleistet.

Cluster

Prozesse können nun also einfach als Service erstellt und Container verpackt werden. Ist dies geschehen, erfolgt das Deployment. Bereits hier kann auf Ausfallsicherheit geachtet werden. Durch die Containerbauweise ist es einfach, dass ein Prozess mehrfach ausgeführt wird. Dies bildet ein Cluster, welches eine Cluster-IP erhält. Somit lassen sich die gleichartigen Prozesse zeitgleich bedienen. Fällt ein Teil des Clusters aus, so wird in der Regel automatisch ein Selbstreparatur-Prozess eingeleitet oder ein neues Replica auf den Weg geschickt.

Die Verteilung der Nutzeranfragen an eine Applikation wird über einen Load Balancer an die Teile des Clusters reguliert.

Load Balancer

Skalierbarkeit ist ein wichtiger Faktor in Bezug auf cloudbasierten Anwendungen. Durch einen kontinuierlichen Datenaustausch kann eine horizontale Skalierung in Sekundenschnelle erfolgen. Diese erfolgt durch einen zwischengeschalteten Load Balancer. Seine Aufgabe ist die Verwaltung der Workloads auf einzelnen Prozessen. Wenn ein Prozess beispielsweise eine hohe Auslastung erfährt, können weitere Prozesse mit Replicas des ursprünglichen Containers deployt werden. Dieses Deployment oder auch Bereitstellen sorgt dann dafür, dass die Arbeitslast ohne großen Mehraufwand auf unterschiedliche Knoten verteilt wird, die dennoch die gleiche Funktionalität bieten.

Auch hier lohnt sich der Blick auf einen Fall ohne Cloud Native. Würde man einen Server mit monolithischen Daten bespielen, so müsste im Falle einer steigenden Auslastung ein weiterer Server angemietet werden und die komplette Datenmasse erneut aufgebaut werden.

Bei Cloud Native hingegen kann bereits in der Konfiguration festgelegt werden, dass im Falle von steigenden Besucherzahlen, beispielsweise bei einem Online-Shopping-Dienst, einfach ein weiteres Bestellmodul bereitgestellt werden, um den Anfragen gerecht zu werden. Lässt die Anfrage nach, wird dieses Cluster wieder automatisch reduziert.

Es gibt verschiedene Arbeitsweisen eines Load Balancers:

  • Least-Connection: Die Anfragen werden an die Server mit den wenigsten Verbindungen geleitet
  • Weighted-Distribution: Server werden nach Leistungsstärke gewählt
  • Least-Response-Time: Anfragen werden zum Server mit der kürzesten Antwortzeit vermittelt
  • Round Robin: In einer vordefinierten Sequenz werden die Anfragen den jeweilen Servern zugeordnet

APIs

APIs, auch Application Programming Interface genannt, bilden sozusagen das Bindegewebe zwischen den Containern. Sie sind durch die modulare Bauweise von hoher Bedeutung. Erst mit den Schnittstellen wird sichergestellt, dass in der Applikation später alle benötigten Daten zum richtigen Zeitpunkt abrufbar sind und somit ein Zusammenspiel der Teilsysteme vonstattengeht.

Erst durch den Einsatz der APIs wird eine Steuerung der einzelnen Container, das Deployment und schlussendlich auch die Ausgabe an den User erzielt. Auch fungieren die APIs als wichtiges Tool für die Arbeit des Load Balancers.

Vorteile von Cloud Native

Für Unternehmen birgt Cloud Native eine Vielzahl an Möglichkeiten durch die neue Architektur der Programmierung auf Basis von Cloud Technologien. Viele der Aspekte wurden bereits durch die einzelnen Teildisziplinen herausgestellt. Dennoch stechen einige Vorzüge heraus:

  • Die horizontale Skalierbarkeit bietet einen großen Vorteil, da ein dynamisches und agiles System in nur wenigen Schritten ausgeweitet oder reduziert werden kann.
  • Auch die Automatisierung ist in diesem Zusammenhang zu nennen, da nur einmal Bedingungen geschaffen werden müssen, welche dann das System selbst regulieren.
  • Durch die Unterteilung in verschiedene Microservices ist das Gesamtsystem sehr belastbar und fehlertolerant, da man im Falle einer Fehlfunktion nur einen einzelnen Service genauer betrachten muss, von welchem ein Problem ausgeht. Dies erleichtert die Wartung ungemein.
  • Die Aufgliederung in Teilsysteme bietet zusätzlich eine Modularität, welche es ermöglicht, bestehende Systeme in neuen Projekten erneut zum Einsatz bringen zu können.
  • Auch der DevOps-Ansatz glänzt, da durch die enge Zusammenarbeit der entwickelnden und ausführenden Kraft eine Synergie genutzt werden kann, welche beispielsweise die Time-to-Market erheblich reduzieren kann. Außerdem werden Systeme durch die Container-Isolierung einfacher ausgetauscht und sind nicht so fehleranfällig, da sie in dem geschlossenen System immer so funktionieren werden.

Cloud Native bei TenMedia

Die Arbeit mit cloudbasierten Lösungsansätzen ist auch bei TenMedia ein Schwerpunkt der täglichen Arbeit. Als Digitalagentur im Herzen von Berlin lässt TenMedia seit 2011 keine Wünsche bezüglich individueller Softwareentwicklung, Online-Plattformen aber auch Cloud Software offen. Die technische Expertise unserer Entwickler beruht auf jahrelanger Erfahrung und kann von der Beratung über die Konzeption oder auch der Implementierung von Software-Dienstleistungen als treuer Begleiter zur Seite stehen. Auch zusätzliche Services wie die Betreuung oder Hosting und Monitoring können bei Bedarf mit abgedeckt werden.

Bleibe auf dem Laufenden in Sachen Software, IT und Start-ups mit unserem Newsletter.
Jetzt abonnieren!
Bleibe auf dem Laufenden in Sachen Software, IT und Start-ups mit unserem Newsletter.
Jetzt abonnieren!
Gefällt dir was du siehst? Teile es!
Kontaktperson
Anica Piontek
+49 (0) 30 5 490 650-0
anica.piontek@tenmedia.de
Du hast auch ein spannendes Projekt?
Gerne bespreche ich ganz unverbindlich alle Projektdetails in einem persönlichen Gespräch.

Zufällige Beiträge

Mann am Computer, erstellt eine Datenbank Glossar > Services
Eine bunte Drohne auf hellbraunem Untergrund. Ein Prototyp. Glossar > Begriffe

Zufällige Glossareinträge

Mann am Computer, erstellt eine Datenbank Glossar > Services
Eine bunte Drohne auf hellbraunem Untergrund. Ein Prototyp. Glossar > Begriffe
Eine Webentwicklerin präsentiert einem Kunden eine barrierefreie Website auf einem großen Bildschirm. Glossar > Begriffe