Cloud Native
Architektur für Elastizität und Resilienz
Cloud Native ist nicht nur das Verschieben von Servern in die Cloud (Lift und Shift). Es ist ein Architektur-Ansatz, bei dem Anwendungen speziell für die Nutzung der Vorteile von verteilten Cloud-Umgebungen konzipiert werden: Elastizität, Resilienz und schnelle Iterationszyklen.
Im Zentrum stehen Containerisierung (Docker), Orchestrierung (Kubernetes) und die Zerlegung von Anwendungen in kleine, unabhängig skalierbare Services.
Anti-Patterns: Die Cloud-Migration ohne Mehrwert
- Lift und Shift von Altlasten: Man schiebt einen starren Monolithen 1:1 auf eine virtuelle Maschine in der Cloud. Das Ergebnis: Höhere Kosten ohne die Vorteile der Cloud-Flexibilität zu nutzen.
- Manuelle Server-Pflege: Man verwaltet Cloud-Server immer noch wie physische Rechner im Keller (Patches einspielen, manuelle Konfiguration), was die Skalierung verhindert.
- Vendor Lock-in durch Spezial-Dienste: Nutzung von proprietären Funktionen eines Cloud-Anbieters, die einen Wechsel oder Multi-Cloud-Betrieb unmöglich machen.
Die Cloud-native Architektur
- Containerisierung: Verpackung von Code und allen Abhängigkeiten in standardisierte Container für hohe Portabilität über Umgebungen hinweg.
- Kubernetes (K8s) Orchestrierung: Automatisches Deployment, Skalierung und Management der Container-Flotte.
- Microservices und APIs: Zerlegung der Anwendung in kleine Einheiten, die über Netzwerkschnittstellen kommunizieren (siehe API-First).
- Stateless Design: Anwendungen speichern keine Daten lokal, was das schnelle Starten, Stoppen und Verschieben von Instanzen ermöglicht.
- Observability: Durchgehende Telemetrie (Logs, Metriken, Traces), um den Zustand des komplexen verteilten Systems jederzeit zu verstehen.
Der Fokus: Belastbare Systeme
Richtig aufgebaute Cloud-native Systeme können sich selbst reparieren (Self-healing) und ihre Kapazität automatisch dem tatsächlichen Bedarf anpassen, was Kosten senken und die Verfügbarkeit erhöhen kann. Diese Eigenschaften sind ein Ergebnis von Health-Checks, Controllern, Redundanz und Skalierungs-Policies, nicht automatisch gegeben.
FAQ
Warum brauchen wir Kubernetes? Ist das nicht zu kompliziert?
Es ist ein verbreiteter Standard für Container-Orchestrierung, jedoch nicht für jedes Cloud-native System zwingend (Serverless, Managed PaaS und Container-Dienste sind Alternativen). Wo es passt, nimmt es die Arbeit ab, Server manuell zu überwachen und zu skalieren, und bildet die Basis für eine moderne, automatisierte IT.
Ist Cloud-native teurer als klassisches Hosting?
Die Infrastrukturkosten können steigen, während Automatisierung operative Arbeit reduziert. Zusätzlich verkürzt eine passende Cloud-native Architektur den Weg von einer geprüften Änderung bis zur Veröffentlichung.
Referenzen
- Wiggins, Adam The Twelve-Factor App. Methodische Grundlage für moderne SaaS-Anwendungen. (2012). 12factor.net
- CNCF Cloud Native Definition v1.1. Definition und Ökosystem-Überblick. github.com/cncf/toc/blob/main/DEFINITION.md
- CNCF Kubernetes Documentation. Referenz für Container-Orchestrierung. kubernetes.io/docs/home/