Auswählen einer Azure-Computeoption für Microservices
Der Begriff Compute bezieht sich auf das Hostingmodell für die Computeressourcen, auf denen Ihre Anwendung ausgeführt wird. Dieser Artikel enthält präskriptive Anleitungen, die Ihnen bei der Auswahl einer Computeplattform für Microservices helfen. Ihre Microservice Compute Platform-Auswahl hängt möglicherweise von differenzierten Anforderungen ab.
Für eine Microservices-Architektur sind die folgenden Ansätze beliebt:
- Stellen Sie Microservices auf dedizierten Computeplattformen bereit, in der Regel mithilfe eines Microservice Orchestrators.
- Bereitstellen von Microservices auf einer serverlosen Plattform.
Obwohl diese Optionen nicht die einzigen sind, sind sie beide bewährte Ansätze zum Erstellen von Microservices. Eine Anwendung kann beide Ansätze umfassen.
Laden Sie eine Visio-Datei dieser Architektur herunter.
Verwenden einer serverlosen Plattform
Sie können serverlose Plattformen verwenden, um Microservices in Azure-Container-Apps oder Azure-Funktionen bereitzustellen. Sowohl Container-Apps als auch Funktionen bieten serverlose Computeoptionen, die basierend auf dem Umfang der Anforderungen und nicht auf der Berechnungsnutzung abgerechnet werden. Beide Plattformen bieten Ihnen auch die Möglichkeit, die Workloads auf dedizierter Kapazität zu hosten.
Bereitstellen von codebasierten Microservices
Wenn Sie Ihre Microservices als Code bereitstellen möchten, anstatt sie zu containerisieren, sollten Sie Azure Functions verwenden. Weitere Informationen finden Sie in der Liste der Programmier- und Skriptsprachen, die von Funktionen unterstützt werden. Bei Mikroservices, die Sie in anderen Sprachen entwickeln, möchten Sie möglicherweise einen benutzerdefinierten Handler in Funktionen implementieren oder die Containerisierung der Anwendung in Betracht ziehen.
Verwenden eines GPU-Modells
Wenn Ihr Microservice beispielsweise GPU-Kapazität benötigt, um Machine Learning-Aufgaben auszuführen, sollten Sie für Ihre Plattform Container-Apps oder Azure Kubernetes-Dienst (Azure Kubernetes Service, AKS) auswählen. AKS kann alle GPU-Modelle in Azure verwenden, und Container-Apps bieten eine Teilmenge von GPU-Modellen, aus der Sie auswählen können.
Verwenden von Service Orchestratoren
Ein Orchestrator behandelt Aufgaben, die sich auf die Bereitstellung und Verwaltung einer Reihe von Diensten beziehen. Diese Aufgaben umfassen das Platzieren von Diensten auf Knoten, das Überwachen der Integrität von Diensten, das Neustarten fehlerhafter Dienste, das Durchführen eines Lastenausgleichs für den Netzwerkdatenverkehr der Dienstinstanzen, das Ermitteln von Diensten, das Skalieren der Anzahl von Dienstinstanzen sowie das Anwenden von Konfigurationsaktualisierungen. Beliebte Orchestratoren sind Kubernetes, Azure Service Fabric, DC/OS und Docker-Schwarm.
Berücksichtigen Sie die folgenden Optionen auf der Azure-Plattform:
Azure Kubernetes Service (AKS) ist ein Managed Kubernetes-Dienst. AKS stellt Kubernetes zur Verfügung und macht die Kubernetes-API-Endpunkte, hostet und verwaltet die Kubernetes-Kontrollebene und führt automatisierte Upgrades, automatisierte Patching, automatisches Patchen und andere Verwaltungsaufgaben aus. AKS bietet direkten Zugriff auf Kubernetes-APIs.
Container-Apps ist ein verwalteter Dienst, der auf Kubernetes basiert, der die Komplexität der Container-Orchestrierung und anderer Verwaltungsaufgaben abstrahiert. Container Apps vereinfacht die Bereitstellung und Verwaltung von containerisierten Anwendungen und Microservices in einer serverlosen Umgebung, während die Features von Kubernetes bereitgestellt werden. Container-Apps eignen sich ideal für Szenarien, in denen direkter Zugriff auf Kubernetes-APIs nicht erforderlich ist.
Service Fabric ist eine Plattform für verteilte Systeme, mit der Microservices gepackt, bereitgestellt und verwaltet werden können. Sie können Microservices als Container, als binäre ausführbare Dateien oder als zuverlässige Dienste in Service Fabric bereitstellen. Mithilfe des Programmiermodells für zuverlässige Dienste können Dienste dienst fabric-Programmier-APIs direkt verwenden, um das System abzufragen, den Status zu melden, Benachrichtigungen zu Konfigurations- und Codeänderungen zu erhalten und andere Dienste zu ermitteln.
Verwenden Sie Azure Red Hat OpenShift , um vollständig verwaltete OpenShift-Cluster bereitzustellen. Azure Red Hat OpenShift stellt eine Erweiterung von Kubernetes dar. Azure Red Hat OpenShift wird gemeinsam von Red Hat und Microsoft entwickelt, betrieben und unterstützt.
Andere Optionen, z. B. Docker Enterprise Edition, können in einer Cloud Computing-Umgebung in Azure ausgeführt werden. Bereitstellungsvorlagen finden Sie im Azure Marketplace.
Verwenden von Kubernetes-APIs
Der Zugriff auf Kubernetes-APIs ist häufig ein entscheidender Faktor, wenn Sie eine Berechnungsoption auswählen. AKS bietet direkten Zugriff auf Kubernetes-APIs, container-Apps jedoch nicht. Container-Apps blendet die Komplexitäten von Kubernetes aus und vereinfacht die Containerbereitstellung. Wenn Sie Ihre Microservice-Bereitstellung so entwerfen, dass sie direkt mit Kubernetes-APIs interagieren, ist AKS möglicherweise die richtige Wahl.
Andere Entscheidungsfaktoren
Möglicherweise gibt es andere Faktoren, die sich auf die Auswahl ihrer Microservice-Computeplattform auswirken. Zu diesen Faktoren gehören Dienstgitteroptionen, Plattformskalierbarkeit und Qualifikationssätze, die Sie in der Organisation verwenden können.
Überlegungen
Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.
Zuverlässigkeit
Zuverlässigkeit stellt sicher, dass Ihre Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Zuverlässigkeit.
Eine der wichtigsten Säulen der Zuverlässigkeit ist Resilienz. Das Ziel der Resilienz besteht darin, die Arbeitsauslastung nach auftreten eines Ausfalls in einen voll funktionsfähigen Zustand zurückzugeben.
Wenn Sie Azure Functions als Ihre Microservice Computing-Plattform auswählen, sollten Sie den Functions Premium-Plan oder Azure-App Serviceplan in einer zonenredundanten Konfiguration bereitstellen. Weitere Informationen finden Sie unter Zuverlässigkeit in Funktionen.
Wenn Sie AKS als Microservice Computing-Plattform auswählen, können Sie die Zuverlässigkeit von Microservice verbessern, indem Sie einen AKS-Cluster bereitstellen, der Verfügbarkeitszonen verwendet, indem Sie die Standard- oder Premium-Ebene für Azure Kubernetes-Cluster verwenden und die Mindestanzahl von Pods und Knoten erhöhen. Weitere Informationen finden Sie unter bewährte Methoden für die Bereitstellungs- und Clustersicherheit für AKS.
Wenn Sie Container-Apps als Ihre Microservice Computing-Plattform auswählen, können Sie die Zuverlässigkeit mithilfe von Verfügbarkeitszonen verbessern. Weitere Informationen finden Sie unter Zuverlässigkeit in Container-Apps.
Sicherheit
Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Sicherheit.
Wenn Sie Azure Functions als Ihre Computeplattform für die Bereitstellung von Microservices auswählen, gelten auch die Prinzipien der Sicherung von Azure Functions für Microservices.
Wenn Sie AKS als Ihre Computeplattform für die Bereitstellung von Microservices auswählen, bietet die AKS-Sicherheitsbasisbasisarchitektur Anleitungen zum Sichern der Computeplattform. Bewährte Methoden zur Mikroservicesicherheit auf AKS finden Sie unter Advanced AKS microservice architecture.
Wenn Sie Container-Apps als Computeplattform für die Bereitstellung von Microservices auswählen, lesen Sie die Sicherheitsgrundlinie für Container-Apps für bewährte Methoden.
Kostenoptimierung
Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Kostenoptimierung.
Wenn Sie einen Orchestrator verwenden, bezahlen Sie für die virtuellen Computer, die im Cluster ausgeführt werden. Wenn Sie eine serverlose Anwendung verwenden, zahlen Sie nur für die tatsächlich verbrauchten Computeressourcen. In beiden Fällen müssen Sie die Kosten für zusätzliche Dienste berücksichtigen, z. B. Speicher, Datenbanken und Messagingdienste.
Azure-Funktionen, Container-Apps und AKS bieten automatische Skalierungsoptionen. Container-Apps und -Funktionen bieten serverlose Plattformen, auf denen die Kosten auf dem Verbrauch basieren und null sein können. AKS bietet nur dedizierte Computeoptionen.
Wenn Sie AKS als Computeplattform für die Bereitstellung von Microservices auswählen, müssen Sie die bewährten Methoden für die Kostenoptimierung verstehen. Weitere Informationen finden Sie unter Optimieren der Kosten in Azure Kubernetes Service.
Wenn Sie Container-Apps als Ihre Microservices-Computeplattform auswählen, müssen Sie die verschiedenen Abrechnungsmodelle verstehen und das Bereitstellungsmodell für Ihre Microservices basierend auf Ihren Workloadanforderungen festlegen. Weitere Informationen finden Sie unter Abrechnung in Container-Apps.
Wenn Sie Azure Functions als Ihre Microservices-Computeplattform auswählen, müssen Sie die verschiedenen Abrechnungsmodelle verstehen und den Funktionsplan basierend auf Ihren Workloadanforderungen festlegen. Weitere Informationen finden Sie unter Schätzen von verbrauchsbasierten Kosten und Azure Functions-Plandetails.
Optimaler Betrieb
„Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung des optimalen Betriebs.
Mit Terraform, Bicep und anderen Skriptsprachen können Sie alle Mikroservice-Computeoptionen bereitstellen, die in diesem Artikel automatisiert beschrieben werden. Sie können Application Insights, Azure Monitor und andere Überwachungslösungen verwenden, um diese Computeplattformen und Microservices zu überwachen.
Berücksichtigen Sie die folgenden Faktoren, wenn Sie zwischen einem Orchestratoransatz und einem serverlosen Ansatz wählen:
Flexibilität und Kontrolle: Mit einem Orchestrator können Sie Ihre Dienste und den Cluster konfigurieren und verwalten. Der Kompromiss ist komplexer. Bei einer serverlosen Architektur geben Sie ein gewisses Maß an Kontrolle auf, da diese Details abstrahiert werden.
Portabilität: Alle in diesem Artikel aufgeführten Orchestratoren, einschließlich Kubernetes, DC/OS, Docker-Schwarm und Service Fabric, können lokal oder in mehreren öffentlichen Clouds ausgeführt werden.
Anwendungsintegration: Es kann schwierig sein, eine komplexe Anwendung zu erstellen, die eine serverlose Architektur verwendet, da Sie viele kleine, unabhängige Funktionen koordinieren, bereitstellen und verwalten müssen. Eine Option in Azure besteht darin, Azure Logic Apps zum Koordinieren einer Reihe von Azure-Funktionen zu verwenden. Ein Beispiel für diesen Ansatz finden Sie unter Erstellen einer Funktion, die in Logik-Apps integriert ist.