Cloud-native Computing ist ein Ansatz in der Softwareentwicklung, der Cloud Computing nutzt, um skalierbare Anwendungen in Cloud-Infrastrukturen, -Plattformen und -Umgebungen zu erstellen und auszuführen. Gemäß der Cloud Native Computing Foundation (CNCF) prägen diesen Remote-Computing-Ansatz insbesondere Technologien wie Container, Microservices sowie serverlose Funktionen und unveränderliche Infrastrukturen (Immutable Infrastructures und Infrastructure as Code), die zumeist über deklarativen Code bereitgestellt werden.[1]

Definition

Bearbeiten

Cloud-native Technologien ermöglichen lose gekoppelte Software-Systeme (Cloud-native Applikationen), die resilient, beobachtbar und dank Auto-Scaling und Self-Healing in automatisierten Umgebungen mit minimaler Interaktion durch Administratoren betreibbar sind.

„Eine Cloud-native Anwendung (CNA) ist ein verteiltes, beobachtbares, elastisches und auf horizontale Skalierbarkeit optimiertes Service-of-Services System, das seinen Zustand in (einem Minimum an) zustandsbehafteten Komponenten isoliert. Die Anwendung und jede in sich geschlossene Bereitstellungseinheit dieser Anwendung wird nach Cloud-fokussierten Designmustern entworfen und auf elastischen Self-Service-Plattformen betrieben.“[2][3]

Eigenschaften

Bearbeiten

Cloud-native Anwendungen sind daher oft durch eine oder mehrere der folgenden Eigenschaften charakterisiert:

  • Beobachtbarkeit bei Software-Systemen bezieht sich typischerweise auf Telemetriedaten, die meist in drei Aspekte unterteilt werden: Tracing (verteilte Ablaufverfolgung) ermöglicht Einblick in den Lebenszyklus von Requests in einem verteilten System. Metriken im Rahmen eines Monitorings liefern quantitative Informationen zu Prozessen, die im System ausgeführt werden. Mittels Logging (Protokollierung) lässt sich Einblick in anwendungsspezifische Nachrichten, die von Prozessen ausgegeben werden, gewinnen. Diese Beobachtbarkeit ist insbesondere für die DevOps-Prinzipien des Feedback essentiell.
  • Elastizität ist „der Grad, in dem ein System in der Lage ist, sich an Workload-Änderungen anzupassen, indem es Ressourcen in einer autonomen Art und Weise provisioniert und deprovisioniert, so dass zu jedem Zeitpunkt die verfügbaren Ressourcen so gut wie möglich mit dem aktuellen Bedarf übereinstimmen“.[4]
  • Skalierbarkeit kann in strukturelle Skalierbarkeit und Lastskalierbarkeit unterschieden werden. „Strukturelle Skalierbarkeit ist die Fähigkeit eines Systems, sich in einer gewählten Dimension ohne größere Änderungen an seiner Architektur zu erweitern. Unter Lastskalierbarkeit ist die Fähigkeit eines Systems zu verstehen, auch steigenden Datenverkehr bewältigen zu können“.
  • Service-of-Services Systeme werden bei Cloud-nativen Anwendungen zumeist im Microservice-Architekturstil verstanden. Dieser Architekturstil versteht „eine einzelne Anwendung als eine Suite kleiner Services, die jeweils in einem eigenen Prozess laufen und mit leichtgewichtigen Mechanismen kommunizieren. Diese Services sind um Geschäftsfunktionen herum aufgebaut und können unabhängig voneinander von vollautomatischen Bereitstellungsmechanismen aktualisiert werden. Es gibt nur ein Minimum an zentraler Verwaltung dieser Dienste, die in verschiedenen Programmiersprachen (polyglotte Programmierung) geschrieben sein können und unterschiedliche Datenspeichertechnologien verwenden (polyglotte Datenhaltung)“.[5]
  • In sich geschlossene Bereitstellungseinheiten (Deployment Unit) sind ein Teil der Deployment-Topologie der Anwendung zur Realisierung einer bestimmten technischen Einheit. Immer häufiger wird eine Deployment Unit als „ein Standardcontainer verstanden. Das Ziel eines Standardcontainers ist es, eine Softwarekomponente und alle ihre Abhängigkeiten in einem Format zu kapseln, das selbstbeschreibend und portabel ist, so dass jede konforme Laufzeitumgebung sie ohne zusätzliche Abhängigkeiten ausführen kann, unabhängig von der zugrunde liegenden Maschine und dem Inhalt des Containers“.[6]
  • Zustandsbehaftete Komponenten (meist Datenbanken) werden für „mehrere Instanzen einer skalierten Anwendungskomponente verwendet, die ihren internen Zustand synchronisieren, um ein einheitliches Verhalten zu bieten“.[7] Da die Skalierung zustandsbehafteter Komponenten meist aufwändiger ist, als die Skalierung zustandsloser Komponenten, versucht man Zustände in möglichst wenigen zustandsbehafteten Komponenten zu isolieren.
  • Unter einer elastischen Plattform versteht man eine „Middleware für die Ausführung von benutzerdefinierten Anwendungen, deren Kommunikation und Datenspeicherung über eine Self-Service-Schnittstelle mittels eines Netzwerks angeboten wird“.[8] Solche gut automatisierbaren Plattformen sind insbesondere für die DevOps-Prinzipien des Flow essentiell.

Häufig werden Cloud-native Anwendungen daher als eine Reihe von Microservices erstellt, die in Containern ausgeführt werden.[9] Sie können mittels Container-Plattformen wie bspw. Kubernetes orchestriert und mit DevOps- und Git-basierten Continuous Integration und Deployment-Workflows verwaltet und bereitgestellt werden. Der Vorteil der Verwendung von Containern besteht darin, dass die gesamte Software inklusive aller Abhängigkeiten, die zur Ausführung benötigt wird, in Form in sich geschlossener Bereitstellungseinheiten vorgehalten werden kann. Container werden hierzu in virtualisierten Umgebungen (Betriebssystemvirtualisierung) ausgeführt, die die enthaltene Anwendung von ihrer Umgebung isoliert.

Einzelnachweise

Bearbeiten
  1. Cloud Native Computing Foundation Policy Repo. Cloud Native Computing Foundation (CNCF), 3. Januar 2022, abgerufen am 3. Januar 2022.
  2. Kapitel 1 bis 4 - Cloud-native Computing. Abgerufen am 4. Januar 2022.
  3. Nane Kratzke: Cloud-native Computing Software Engineering von Diensten und Applikationen für die Cloud. 1. Auflage. München 2021, ISBN 978-3-446-46228-1.
  4. Nikolas Roman Herbst, Samuel Kounev, Ralf Reussner: Elasticity in Cloud Computing: What It Is, and What It Is Not. 2013, ISBN 978-1-93197102-7, S. 23–27 (usenix.org [abgerufen am 4. Januar 2022]).
  5. Microservices. Abgerufen am 4. Januar 2022.
  6. Open Container Initiative Runtime Specification. Open Container Initiative, 4. Januar 2022, abgerufen am 4. Januar 2022.
  7. Cristoph Fehling: Cloud computing patterns : fundamentals to design, build, and manage cloud applications. Wien 2014, ISBN 978-3-7091-1568-8.
  8. Cristoph Fehling: Cloud computing patterns : fundamentals to design, build, and manage cloud applications. Wien 2014, ISBN 978-3-7091-1568-8.
  9. Sam Newman: Building Microservices, 2nd Edition. 2nd edition Auflage. 2021, ISBN 1-4920-3402-9.

📚 Artikel Terkait di Wikipedia

Cloud Native Computing Foundation

Die Cloud Native Computing Foundation (CNCF) wurde 2015 gegründet und ist ein Projekt der Linux Foundation um Cloud Computing, Microservices und

NixOS

30 Highest Velocity Open Source Projects – Cloud Native Computing Foundation. In: Cloud Native Computing Foundation. 5. Juni 2017 (cncf.io [abgerufen

Prometheus (Software)

der Apache 2-Lizenz lizenziert und ist ein graduated project der Cloud Native Computing Foundation. Prometheus und Grafana gelten als de-facto Standard-Monitoringsystem

Kubernetes

bezeichnet. Es kann sowohl fremdgehostet von verschiedenen Anbietern für Cloud Computing gebucht als auch selbst lokal auf eigener oder fremder Hardware betrieben

GRPC

auf dem Standard HTTP/2 und Protocol Buffers. gRPC wird von der Cloud Native Computing Foundation als „incubating project“ bewertet. Mittels einer

Distributed Application Runtime

produktive Einsatz eignet. Am 12. November 2024 verkündete die Cloud Native Computing Foundation, dass Dapr in den Graduated-Status gehoben wird. dapr

VMware

Broadcom. VMware LLC ist ein Anbieter von Software-Lösungen im Bereich Cloud Computing sowie der Virtualisierung von Rechenzentrumsinfrastrukturen und gilt

Salesforce

US-amerikanisches Softwareunternehmen, das Cloud-Computing-Produkte für Unternehmen anbietet. Das Unternehmen gilt als der weltgrößte Cloud-Softwareanbieter für Unternehmen