Der Weg zu einer Cloud-nativen Architektur

Es gibt unterschiedlichste Ansätze, um Cloud-native Anwendungen zu entwickeln. Architekten stehen deshalb in einem Spannungsfeld aus verschiedenen Bewertungskriterien, um aus den möglichen Architekturen den passenden Ansatz für ihren Anwendungskontext zu finden.

Architektur/Methoden  –  18 Kommentare

(Bild: dpa, Tobias Hase)

Cloud-Native Architecture (CNA) bezeichnet Architekturen, die explizit für den Einsatz in der Cloud konzipiert sind. Sie bilden die Grundlage für im Internet angebotene Produkte und Services. Im Kontext der Cloud erhalten dabei zwei nichtfunktionale Anforderungen eine besondere Bedeutung: Elastizität und Resilienz. Cloud-native Architekturen versprechen, diese Anforderungen ideal zu erfüllen.

Elastizität ist die Fähigkeit eines Systems, mit unerwarteten Lastsituationen umzugehen, ohne dass Anwender etwas davon mitbekommen. Abhängig von der Lastsituation, etwa den Serviceaufrufen pro Sekunde, schaltet eine Cloud-Native Architecture automatisch Ressourcen hinzu und heraus. Resilienz ist die Fähigkeit, unerwartete Fehlersituationen ohne Auswirkungen auf die Anwender zu handhaben. Analog dazu erkennt die Cloud-Native Architecture automatisch Fehler, schaltet zusätzliche Ressourcen hinzu und heraus.

Das Kundenverhalten und die Art der Anwendungen im Internet erzwingen das dynamische Verhalten. Denn die Kunden erwarten konstant kurze Antwortzeiten und die ständige Verfügbarkeit aller Produkte und Services.

Mit Netflix und Amazon fing es an

Pioniere der Cloud-Native Architecture sind Netflix und Amazon, die bereits 2010 die erste Streaming-Anwendung von Netflix in die Amazon-Cloud brachten. Netflix konnte die erhöhten

Skalierungsanforderungen seiner Streaming-Anwendung nicht mehr konventionell mit der eigenen Infrastruktur abdecken. Insbesondere bei Blockbustern, die zu bestimmten Zeiten ein extrem hohes Abrufverhalten aufwiesen und damit ein sehr dynamisches Lastverhalten nach sich zogen, zeigte sich das Problem besonders deutlich.

Amazon konnte bereits 2006 Infrastruktur als Dienst anbieten. Also gingen Amazon und Netflix eine Partnerschaft ein, die bis heute Bestand hat, beide Unternehmen eng zusammenarbeiten lässt und dazu führte, dass Netflix mittlerweile die gesamte Streaming-Anwendung in die Amazon-Cloud migriert hat.

Im Rahmen dieser Zusammenarbeit etablierten Amazon und Netflix auch eine Architektur für die Cloud, die die genannten Anforderungen an dynamischer Skalierung und Resilienz erfüllt. Hierbei sind insbesondere Adrian Cockcroft von Amazon und Neil Hunt von Netflix als führende Architekten zu nennen. Den Begriff der Cloud-Native Architecture verwendeten sie dafür allerdings noch nicht. Erst Matt Stine von Pivotal prägte ihn 2014 in seinem Buch „Migrating to Cloud-Native Application Architecture“ [1]. Seitdem haben prominente Architekten wie Martin Fowler, Chris Richardson [2] oder Sam Ramji den Begriff der Cloud-Native Architecture adaptiert. Sogar Organisationen wie die Cloud-Native Computing Foundation (CNCF)haben ihn aufgegriffen und kultiviert.

Die Prinzipien der Architektur

Es sind unterschiedliche Definitionen für eine Cloud-Native Architecture entstanden, etwa die der CNCF. Aus dieser Definition lassen sich bestimmte Werte und Regeln ableiten, die sich in den Architekturmaximen und -prinzipien niederschlagen. Werden sie eingehalten, sind die Anforderungen an die Cloud-Native Architecture erfüllt.

Die Cloud-Native Architecture folgt vier Maximen:

  1. Teile und herrsche (Modularisierung)
  2. Autonomie (Separation of Concerns, Self-Contained, Bounded-Context)
  3. Klein (kleine Verantwortung)
  4. verbunden (API-getrieben)

Die Architekturprinzipien setzen diese Maximen um. Sie sind in Tabelle 1 aufgeführt und genauer beschrieben.

Prinzip Beschreibung
Cloud Computing konsequente Nutzung der Cloud-Services für die Bereitstellung der Infrastruktur, z.B. mit Amazon
Microservices Anwendung der Microservice-Architektur bei der Entwicklung der Anwendung, z.B. mit Spring Boot
Containerisierung Installation und Betrieb von Microservices in Containern, z.B. mit Docker
Scheduling & Orchestrierung Scheduling und Orchestrierung der Container-Rechnerknoten, z.B. mit Kubernetes oder Docker Swarm
Clustering Verwaltung, Ausfallsicherheit und Skalierung der Rechnerknoten, z.B. mit Consul
Service-Mesh Ein Service-Mesh ist eine dezidierte Infrastrukturschicht, die die Service-zu-Service-Kommunikation sicher, schnell und zuverlässig macht, z.B. mit Istio
CI/CD kontinuierliche Integration und Auslieferung der Microservices, z.B. mit Jenkins oder Helm
Tabelle 1: CNA-Architekturprinzipien