Freigeben über


Zusammenfassung: Architektur von cloudnativen Apps

Tipp

Diese Inhalte sind ein Auszug aus dem E-Book „Architecting Cloud Native .NET Applications for Azure“, verfügbar in der .NET-Dokumentation oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Zusammengefasst sind dies die wichtigsten Schlussfolgerungen aus diesem Leitfaden:

  • Beim Begriff cloudnativ geht es um die Entwicklung moderner Anwendungen, die schnelle Veränderungen, großen Umfang und Resilienz in modernen, dynamischen Umgebungen wie öffentlichen, privaten und Hybrid Clouds berücksichtigen.

  • Die Cloud Native Computing Foundation (CNCF) ist ein einflussreiches Open-Source-Konsortium von über 300 großen Unternehmen. Es ist dafür verantwortlich, die Einführung von cloudnativem Computing über Technologie- und Cloudstapel hinweg voranzutreiben.

  • Die CNCF-Richtlinien empfehlen, dass cloudnative Anwendungen sechs wichtige Grundpfeiler umfassen, wie in Abbildung 11-1 dargestellt:

    Cloud-native foundational pillars

    Abbildung 11-1. Cloudnative Grundpfeiler

  • Zu diesen cloudnativen Grundpfeilern gehören:

    • Die Cloud und ihr zugrunde liegendes Dienstmodell
    • Moderne Entwurfsprinzipien
    • Microservices
    • Containerisierung und Containerorchestrierung
    • Cloudbasierte Unterstützungsdienste, wie Datenbanken und Nachrichtenbroker
    • Automatisierung, einschließlich Infrastructure-as-Code und Codebereitstellung
  • Kubernetes ist die Hostumgebung der Wahl für die meisten cloudnativen Anwendungen. Kleinere, einfache Dienste werden manchmal auf serverlosen Plattformen gehostet, z. B. Azure Functions. Unter vielen wichtigen Automatisierungsfeatures bieten beide Umgebungen eine automatische Skalierung, um schwankende Workloadvolumen zu bewältigen.

  • Die Dienstkommunikation wird zu einer wichtigen Entwurfsentscheidung bei der Entwicklung einer cloudnativen Anwendung. Anwendungen machen in der Regel ein API-Gateway zum Verwalten der Front-End-Clientkommunikation verfügbar. Anschließend bemühen sich Back-End-Microservices, nach Möglichkeit mit einander zu kommunizieren, um asynchrone Kommunikationsmuster zu implementieren.

  • gRPC ist ein modernes, leistungsstarkes Framework, das basierend auf dem uralten RPC-Protokoll (Remote Procedure Call) weiterentwickelt wurde. Cloudnative Anwendungen nutzen häufig gRPC, um das Messaging zwischen Back-End-Diensten zu optimieren. gRPC verwendet als Transportprotokoll HTTP/2. Es kann bis zu 8-mal schneller als die JSON-Serialisierung sein und dabei 60–80 % kleinere Nachrichtengrößen generieren. gRPC ist Open Source und wird von der Cloud Native Computing Foundation (CNCF) verwaltet.

  • Verteilte Daten sind ein Modell, das häufig von cloudnativen Anwendungen implementiert wird. Anwendungen unterteilen die Geschäftsfunktionen in kleine, unabhängige Microservices. Jeder Microservice kapselt seine eigenen Abhängigkeiten, Daten und Zustände. Das klassische Modell einer freigegebenen Datenbank entwickelt sich zu einer von vielen kleineren Datenbanken, die jeweils auf einen Microservice ausgerichtet sind. Wenn sich der Rauch lichtet, kommen wir mit einem Entwurf zum Vorschein, der ein database-per-microservice-Modell bereitstellt.

  • No-SQL-Datenbanken bezeichnen leistungsstarke, nicht relationale Datenspeicher. Sie zeichnen sich durch ihre Benutzerfreundlichkeit, Skalierbarkeit, Resilienz und Verfügbarkeit aus. Dienste mit hohem Volumen, die eine Antwortzeit von unter einer Sekunde erfordern, bevorzugen NoSQL-Datenspeicher. Die Verbreitung von NoSQL-Technologien für verteilte cloudnative Systeme kann gar nicht hoch genug eingeschätzt werden.

  • NewSQL ist eine aufstrebende Datenbanktechnologie, die die verteilte Skalierbarkeit von NoSQL und den ACID-Garantien einer relationalen Datenbank kombiniert. NewSQL-Datenbanken sind auf Geschäftssysteme ausgerichtet, die große Datenmengen in verteilten Umgebungen verarbeiten müssen, mit voller Transaktions-/ACID-Konformität. Die Cloud Native Computing Foundation (CNCF) verfügt über mehrere NewSQL-Datenbankprojekte.

  • Resilienz ist die Fähigkeit Ihres Systems, auf einen Ausfall zu reagieren und dennoch funktionsfähig zu bleiben. Cloudnative Systeme umfassen eine verteilte Architektur, in der Fehler unvermeidlich sind. Anwendungen müssen so konstruiert sein, dass sie elegant auf Fehler reagieren und schnell in einen voll funktionsfähigen Zustand zurückkehren.

  • Dienstgitter sind eine konfigurierbare Infrastrukturebene mit integrierten Funktionen zur Behandlung der Dienstkommunikation und anderer übergreifender Herausforderungen. Sie entkoppeln übergreifende Verantwortlichkeiten von Ihrem Geschäftscode. Diese Verantwortlichkeiten gehen in einen Dienstproxy über. Der als Sidecar pattern bezeichnete Proxy wird in einem separaten Prozess bereitgestellt, um die Isolation von Ihrem Geschäftscode zu ermöglichen.

  • Beobachtbarkeit ist eine wichtige Entwurfsüberlegung für cloudnative Anwendungen. Da die Dienste über einen Cluster von Knoten verteilt sind, ist eine zentrale Protokollierung, Überwachung und Warnung unerlässlich. Azure Monitor ist eine Sammlung von cloudbasierten Tools, die einen Einblick in den Zustand Ihres Systems bieten.

  • Infrastructure-as-Code ist eine weithin akzeptierte Methode, die die Bereitstellung von Plattformen automatisiert. Ihre Infrastruktur und Bereitstellungen sind automatisiert, konsistent und wiederholbar. Tools wie Azure Resource Manager, Terraform und die Azure CLI ermöglichen es Ihnen, ein deklaratives Skript für die von Ihnen benötigte Cloudinfrastruktur zu verwenden.

  • Codeautomatisierung ist eine Anforderung für cloudnative Anwendungen. Moderne CI/CD-Systeme tragen dazu bei, dieses Prinzip zu erfüllen. Sie bieten separate Schritte zum Erstellen und Bereitstellen, die für konsistenten und hochwertigen Code sorgen. In der Buildphase wird der Code in ein binäres Artefakt transformiert. In der Releasephase wird das binäre Artefakt übernommen, die externe Umgebungskonfiguration angewendet und in einer bestimmten Umgebung bereitgestellt. Azure DevOps und GitHub sind vollständige DevOps-Umgebungen.