Publiziert am 11. Juni 2021 von unter:

Eine Cloud-native Architektur bauen: So fangen Sie an.

Titelbild: Gabriel Crismariu auf Unsplash

Einmal Cloud mit allem bitte! Um Cloud-Services für ihre Anwendung nutzen zu können, setzen Anbieter:innen zunehmend auf Cloud-native Architekturen. Aber wie sehen die aus? Wie fangen Sie überhaupt mit der Cloud an? Am besten mit einem Überblick:

Streaming-Dienste, das Internet der Dinge, Apps und Soziale Netzwerke: Sie alle nutzen die Cloud, um hohe Datenmengen verarbeiten und viele Nutzer mit Inhalten versorgen zu können. Auch Sie stoßen bei der Konzeption Ihrer neuen Anwendung irgendwann auf die Frage: Welche Technologien sind für mein Projekt relevant? Und vielleicht ist die Cloud auch für Ihre Anwendung ein wichtiger Treiber. Doch allein mit dem Mieten einiger Cloud-Server ist es nicht getan. Um die Vorteile einer Cloud wirklich auszuschöpfen, ist eine Cloud-native Architektur gefragt – also eine Architektur, welche explizit für den Einsatz in der Cloud konzipiert ist. Wie setzt sich eine solche Cloud-Architektur zusammen? Welche Services laufen im Hintergrund, damit Ihre Anwendung vorne für Nutzer:innen funktioniert?

Welche Vorteile bringt Ihnen eine cloud-native Architektur?

Die Cloud bietet schier endlose Ressourcen auf unterschiedlichen Ebenen. Basierend auf der Auslastung Ihrer Anwendung und der Konfiguration entscheidet sie, wie und wann diese Ressourcen genutzt werden. Dabei ist wichtig, dass Ihre Anwendung so gestaltet wurde, dass sie die Ressourcen optimal nutzen kann. Stellen Sie sich ein Fabrik vor, in der Kugelschreiber produziert werden – diese durchlaufen mehrere Prozesse. In jedem Prozess sind bestimmte Komponenten gefragt, ohne die nicht weitergearbeitet werden kann. Für den ersten Prozess wird Eisen benötigt, welches aus einer Lagerhalle transportiert wird. Dazu fährt der:die Lieferant:in zwischen Lagerhalle und Produktion hin- und her und liefert 20 Tonnen Eisen alle 30 Minuten. Der erste Prozess verarbeitet eben so 20 Tonnen Eisen alle 30 Minuten und liefert damit 10.000 Kugelschreiber pro Minute – ein perfect Match. Der zweite Prozess verpackt die Kugelschreiber, ebenso 10.000 Kugelschreiber pro Minute, und präsentiert diese im Vorhaus der Fabrik. Kund:innen können vorbei schauen und sich einen Kugelschreiber schnappen. Das System ist vollständig ausgelastet und arbeitet hocheffizient.

Dies ist vergleichbar mit einer Anwendung, welche Informationen aus einer Datenbank liest (Lieferant:in), diese Informationen analysiert und in Reports umwandelt (die Kugelschreiber herstellt), einer mobilen App (Kugelschreiber verpacken und präsentieren) und den App-Nutzer:innen (Kund:innen).

Beispiel: Skalierbarkeit als Vorteil der Cloud

Steigt nun das Kund:innenenaufkommen, so müssen die Reports schneller generiert werden. Das funktioniert natürlich nur, wenn die Informationen auch schneller aus der Datenbank gelesen werden. Hier können schnell die Probleme von klassischen Systemen auftreten. Sie müssen dann nämlich beauftragen, dass Ihre Kapazitäten erhöht werden und die Datenbank beispielsweise auf einen schnelleren Server migriert werden. Das dauert eine Weile. Danach können Sie auch mehr Kund:innen betreuen. Doch was, wenn das Kund:innenaufkommen danach wieder absinkt? Sie zahlen den schnelleren Server, ohne ihn wirklich zu nutzen. Ein Downgrade lohnt sich möglicherweise nicht, da hierdurch zunächst Kosten entstehen.

Mit einer cloud-native Architektur können alle Komponenten Ihrer Anwendung dynamisch skaliert und an Ihre Anforderungen angepasst werden. Ihre Anwendung hat täglich um 12:00 Uhr eine Lastspitze, weil es sich um eine Mensa-App handelt? Kein Problem: Zu diesem Zeitpunkt werden die genutzten Ressourcen automatisch hochskaliert. Im Anschluss – und gerade nachts – kommt Ihre Anwendung mit wenig Ressourcen zurecht und läuft im kostensparenden Modus. Ausfälle von Servern werden auf dem gleichen Weg kaschiert und so minimiert. Dabei kann Ihre Infrastruktur vollständig automatisiert zur Verfügung gestellt werden.

Weitere Vorteile Cloud-nativer Architekturen finden Sie hier!


So starten Sie mit Ihrer cloud-nativen Architektur

Doch was benötigen Sie nun für eine cloud-native Architektur? Wie schaffen Sie es, eine Cloud-Anwendung zu konzipieren, umzusetzen und schlussendlich zu nutzen? Verschiedene Bestandteile müssen bedacht und eingeplant werden. Wir empfehlen die folgenden beiden Schritte:


1. Konzeption der Gesamtarchitektur

Um einen klaren Blick auf Ihre Anwendung zu haben, sollten Sie zunächst eine Gesamtarchitektur konzipieren. Diese enthält alle verwendeten Drittsysteme, alle Komponenten Ihrer Anwendung, alle Datenbanken und auch alle verwendeten Cloud-Services. Danach wird analysiert, ob diese Gesamtarchitektur den gängigen Prinzipien einer cloud-nativen Architektur standhält.

Folgende Bestandteile sollten enthalten sein:

  1. Kommunikation & Schnittstellen: Jede Anwendung benötigt andere Systeme, um Ihren Job zu erfüllen. Mit der richtigen Kommunikation und den richtigen Schnittstellen stellen Sie sicher, dass sich Ausfälle nicht gegenseitig bedingen und Ihre gesamte Anwendung lahmlegen.
  2. Containerisation & Orchestration: Mit Containern trennen Sie die Anwendung von der Infrastruktur wie beispielsweise Betriebssysteme oder Abhängigkeiten. Das ermöglicht, dass Ihre Anwendung in jeder Cloud funktioniert. Mehr erfahren Sie in unserem Beitrag zu Kubernetes. Eine Alternative hierzu wären Serverless-Dienste.
  3. Datenbanken: Der Kern Ihrer Anwendung liegt oft in den Daten. Mit den richtigen verteilten Datenbanken (beispielsweise Azure SQL Database) sichern Sie Ihre Daten vor Ausfallen, erhöhen die Erreichbarkeit und skalieren.
  4. Infrastructure as Code: Mit IaS definieren Sie Ihre Infrastruktur als Code. Sie können Ihre Infrastruktur mit einem Klick erstellen, eine zweite Testing-Umgebung bereitstellen und auch alle Änderungen nachvollziehen. Dies kann mit Terraform umgesetzt werden.
  5. Continuous Integration & Deployment: Mit CI/CD kontrollieren Sie die Änderungen an Ihrer Anwendung und stellen sicher, dass diese professionell gebaut und getestet wurde und in Ihrer Produktivumgebung funktioniert. GitLab CI oder Azure DevOps eignen sich hierfür hervorragend.
  6. Monitoring & Reporting: Damit stellen Sie sicher, dass Ihre Anwendung optimal läuft. Sie kennen jederzeit den aktuellsten Status und werden über Probleme informiert, um schnell reagieren zu können. Cloud-Services wie Azure Monitor, der Elastic Stack oder beispielsweise Prometheus und Grafana eignen sich hier.
  7. Networking & Policies: Durch Networking & Policies schützen Sie Ihre Anwendungen vor Angriffen. Die Kommunikation untereinander wird abgestimmt, so dass nur berechtigte Systeme zugreifen können. Diese Bestandteile ermöglichen Ihrer Anwendung, wirklich cloud-native zu sein und von den Vorteilen der Cloud maximal zu profitieren. Hier finden Sie weiteres zur Datensicherheit in der Cloud.

Beispiel für die Architektur einer Anwendung im Azure-Umfeld.


Weiterhin bieten die Hyperscaler eigene Programme und Richtlinien an, um eine cloud-native Architektur im jeweiligen Hyperscaler zu gewährleisten. Sollten Sie auf AWS setzen, so eignet sich das AWS Well-Architected Programm. In diesem werden 5 Säulen geprüft:

  • Operational Excellence: Ausführung & Überwachung der Systeme
  • Sicherheit: Schutz von Informationen und Systemen
  • Zuverlässigkeit: Ausfallsichere Systeme, welche sich auch nach Fehlern wieder erholen
  • Leistung und Effizienz: Effiziente Nutzung der Ressourcen – auch bei variabler Last
  • Kostenoptimierung: Reduktion und Vermeidung unnötiger Kosten

Ein sehr ähnliches Programm stellt Microsoft mit dem Azure Well-Architected Framework zur Verfügung. Die Prüfung dieser Faktoren stellt sicher, dass Ihre Anwendung optimal für die Cloud gestaltet wird.


2. Konzeption der einzelnen Cloud-Komponenten

Ist Ihre Gesamtarchitektur cloud-native, so sollten Sie auf die jeweiligen Services – die Bausteine Ihrer Architektur – eingehen. Durch die Verwendung verschiedener Cloud Services wird bereits sicher gestellt, dass diese den Anforderungen genügen. Dabei werden Cloud Services – wie Azure Kubernetes Service – benutzt, um die individuell entwickelte Anwendung zu betreiben. Damit diese Services ihre volle Leistung erbringen können, muss der Code dieser individuellen Anwendung gewisse Anforderungen erfüllen.

Ein Beispiel ist die Container-Orchestration mittels Kubernetes. Damit ist es möglich, dass die gleiche Anwendung, der gleiche Service, parallel und mehrfach nebeneinander laufen. Durch die mehrfache Ausführung des gleichen Services kann die Last aufgeteilt werden und das System so weiter skalieren. Das funktioniert jedoch nur, wenn diese Services auch nach den richtigen Prinzipien gebaut werden. Speichert ein Service beispielsweise den aktuellen Status in seinem eigenen Container, so können weitere Container nicht darauf zugreifen und keine Arbeit abnehmen. Wird dieser Status aber vom Container entkoppelt, können weitere Container dazugeschaltet werden.

Durch die Konzeption der Gesamtarchitektur und der einzelnen Komponenten stellen Sie sicher, dass Ihre Anwendung im Großen und im Kleinen cloud-native und somit skalierbar und ausfallsicher ist.


Cloud-native Architekturen für vorhandene Anwendungen

Kann ich meine bestehende Anwendung einfach in die Cloud überspielen? Ja, auch die Modernisierung alter Anwendungen mit der Cloud ist möglich! Schließlich haben Sie nicht immer das Glück, Anwendung und Backend von Null aufzubauen. Dank Application Transformation kann eine bestehende Anwendung so transformiert werden, dass sie moderne Infrastruktur, Services und Prozesse verwendet und somit die Vorteile der Cloud nutzen kann. Die Transformation an sich unterscheidet sich je nach Anwendung: In welchem Zustand ist die Anwendung? Wie aufwändig ist eine Migration in die Cloud? Was muss um- oder neu gebaut werden, damit Ihre Anwendung optimal in der Cloud funktioniert? Je nach Anwendungsfall haben Sie dann verschiedene Möglichkeiten.

Fahrplan

Cloud Fahrplan

Von Budget bis Hyperscaler: In nur 24 Schritten planen Sie Ihr Cloud-Projekt!

Jetzt kostenlos downloaden
Drucken

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Um die Diskussionsqualität zu wahren, veröffentlichen wir nur noch Kommentare mit nachvollziehbarem Vor- und Nachnamen sowie authentischer E-Mail-Adresse.