Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Dieser Inhalt ist ein Auszug aus dem eBook, Architect Modern Web Applications mit ASP.NET Core und Azure, verfügbar auf .NET Docs oder als kostenloses herunterladbares PDF, das offline gelesen werden kann.
Führungskräfte umgehen IT-Abteilungen, um sich Anwendungen aus der Cloud (auch bekannt als SaaS) zu besorgen und für sie zu bezahlen, als würden sie ein Magazinabonnement abschließen. Und wenn der Dienst nicht mehr benötigt wird, können sie das Abonnement kündigen, ohne dass ungenutzte Ausrüstung in der Ecke bleibt.
- Daryl Plummer, Analyst von Gartner
Unabhängig von den Anforderungen und der Architektur Ihrer Anwendung kann Microsoft Azure sie unterstützen. Ihre Hostinganforderungen können so einfach wie eine statische Website oder eine anspruchsvolle Anwendung sein, die aus Dutzenden von Diensten besteht. Für ASP.NET Core monolithische Webanwendungen und unterstützende Dienste gibt es mehrere bekannte Konfigurationen, die empfohlen werden. Die Empfehlungen zu diesem Artikel werden basierend auf der Art der zu hostende Ressource gruppiert, unabhängig davon, ob vollständige Anwendungen, einzelne Prozesse oder Daten.
Webanwendungen
Webanwendungen können gehostet werden durch:
App-Dienst Webanwendungen
Container (mehrere Optionen)
Virtuelle Computer (VMs)
Davon ist App Service Web Apps der empfohlene Ansatz für die meisten Szenarien, einschließlich einfacher containerbasierter Apps. Berücksichtigen Sie für Microservice-Architekturen einen containerbasierten Ansatz. Wenn Sie mehr Kontrolle über die Computer benötigen, auf denen Ihre Anwendung ausgeführt wird, sollten Sie Azure Virtual Machines in Betracht ziehen.
App-Dienst Webanwendungen
App Service Web Apps bietet eine vollständig verwaltete Plattform, die für das Hosten von Webanwendungen optimiert ist. Es ist eine Plattform als Dienst (PaaS), mit der Sie sich auf Ihre Geschäftslogik konzentrieren können, während Azure die für die Ausführung und Skalierung der App erforderliche Infrastruktur übernimmt. Einige wichtige Features von App Service Web Apps:
DevOps-Optimierung (kontinuierliche Integration und Übermittlung, mehrere Umgebungen, A/B-Tests, Skriptunterstützung).
Globale Skalierung und hohe Verfügbarkeit.
Verbindungen mit SaaS-Plattformen und Ihren lokalen Daten.
Sicherheit und Konformität
Visual Studio-Integration.
Azure App Service ist die beste Wahl für die meisten Web-Apps. Die Bereitstellung und Verwaltung sind in die Plattform integriert, Standorte können schnell skaliert werden, um hohe Datenverkehrslasten zu bewältigen, und der integrierte Lastenausgleich und der Datenverkehrs-Manager bieten hohe Verfügbarkeit. Sie können vorhandene Websites ganz einfach mit einem Onlinemigrationstool in Azure App Service verschieben. Sie können eine Open-Source-App aus dem Webanwendungskatalog verwenden oder eine neue Website mit dem Framework und den Tools Ihrer Wahl erstellen. Das WebJobs-Feature erleichtert das Hinzufügen von Hintergrundauftragsverarbeitung zu Ihrer App Service-Web-App. Wenn Sie über eine vorhandene ASP.NET Anwendung verfügen, die lokal mit einer lokalen Datenbank gehostet wird, gibt es einen klaren Pfad zum Migrieren. Sie können App Service Web App mit einer Azure SQL-Datenbank verwenden (oder bei Bedarf sicheren Zugriff auf Ihren lokalen Datenbankserver).
In den meisten Fällen ist der Wechsel von einer lokal gehosteten ASP.NET-App zu einer App Service Web App ein einfacher Prozess. Nur wenig oder gar keine Änderung sollte für die App selbst erforderlich sein, und es kann schnell beginnen, die vielen Features zu nutzen, die Azure App Service Web Apps anbieten.
Zusätzlich zu Apps, die nicht für die Cloud optimiert sind, sind Azure App Service Web Apps eine hervorragende Lösung für viele einfache monolithische (nicht verteilte) Anwendungen, z. B. viele ASP.NET Core-Apps. Bei diesem Ansatz ist die Architektur einfach zu verstehen und zu verwalten:
Eine kleine Anzahl von Ressourcen in einer einzelnen Ressourcengruppe reicht in der Regel aus, um eine solche App zu verwalten. Anwendungen, die in der Regel als einzelne Einheit bereitgestellt werden, anstatt aus Apps, die aus vielen separaten Prozessen bestehen, eignen sich für diesen grundlegenden Architekturansatz. Obwohl die Architektur einfach ist, kann die gehostete App sowohl nach oben (mehr Ressourcen pro Knoten) als auch nach oben (mehr gehostete Knoten) skalieren, um jede Zunahme der Nachfrage zu erfüllen. Mit der automatischen Skalierung kann die App so konfiguriert werden, dass die Anzahl der Knoten, die die App basierend auf Bedarf und durchschnittliche Auslastung über Knoten hosten, automatisch angepasst wird.
App Service-Web-Apps für Container
Zusätzlich zur direkten Unterstützung für das Hosten von Web-Apps können App Service Web Apps für Container verwendet werden, um containerisierte Anwendungen unter Windows und Linux auszuführen. Mithilfe dieses Diensts können Sie containerisierte Anwendungen, die mit Ihrem Unternehmen skaliert werden können, problemlos bereitstellen und ausführen. Die Apps verfügen über alle oben aufgeführten Features von App Service Web Apps. Darüber hinaus unterstützt Web Apps für Container vereinfachte CI/CD mit Docker Hub, Azure Container Registry und GitHub. Sie können Azure DevOps verwenden, um Build- und Bereitstellungspipelinen zu definieren, die Änderungen in einer Registrierung veröffentlichen. Diese Änderungen können dann in einer Stagingumgebung getestet und automatisch mithilfe von Bereitstellungsplätzen für die Produktion bereitgestellt werden, sodass Upgrades ohne Ausfallzeiten möglich sind. Das Zurücksetzen auf frühere Versionen kann genauso einfach erfolgen.
Es gibt einige Szenarien, in denen Web-Apps für Container am sinnvollsten sind. Wenn Sie über vorhandene Apps verfügen, die Sie containern können, ganz gleich, ob in Windows- oder Linux-Containern, können Sie diese problemlos mit diesem Toolset hosten. Veröffentlichen Sie einfach Ihren Container und konfigurieren Sie dann Web-Apps für Container, um die neueste Version dieses Images aus der Registrierung Ihrer Wahl abzurufen. Dies ist ein "Lift and Shift"-Ansatz für die Migration von klassischen App-Hostingmodellen zu einem cloudoptimierten Modell.
Dieser Ansatz funktioniert auch gut, wenn Ihr Entwicklungsteam zu einem containerbasierten Entwicklungsprozess wechseln kann. Die "innere Schleife" der Entwicklung von Apps mit Containern umfasst das Erstellen der App mit Containern. Änderungen am Code sowie an der Containerkonfiguration werden an die Quellcodeverwaltung übertragen, und ein automatisierter Build ist für das Veröffentlichen neuer Containerimages in einer Registrierung wie Docker Hub oder Azure Container Registry verantwortlich. Diese Images werden dann als Grundlage für die zusätzliche Entwicklung sowie für Bereitstellungen in der Produktion verwendet, wie im folgenden Diagramm dargestellt:
Die Entwicklung mit Containern bietet viele Vorteile, insbesondere, wenn Container in der Produktion verwendet werden. Die gleiche Containerkonfiguration wird verwendet, um die App in jeder Umgebung zu hosten, in der sie ausgeführt wird, vom lokalen Entwicklungscomputer zum Erstellen und Testen von Systemen bis hin zur Produktion. Dieser Ansatz reduziert erheblich die Wahrscheinlichkeit von Fehlern, die sich aus Unterschieden bei der Computerkonfiguration oder Softwareversionen ergeben. Entwickler können auch alle Tools verwenden, mit denen sie am produktivsten arbeiten, einschließlich des Betriebssystems, da Container auf jedem Betriebssystem ausgeführt werden können. In einigen Fällen können verteilte Anwendungen mit vielen Containern sehr ressourcenintensiv sein, um auf einem einzigen Entwicklungscomputer ausgeführt zu werden. In diesem Szenario kann es sinnvoll sein, ein Upgrade auf die Verwendung von Kubernetes und Azure Dev Spaces durchzuführen, die im nächsten Abschnitt behandelt wird.
Da Teile größerer Anwendungen in ihre eigenen kleineren, unabhängigen Microservices aufgeteilt werden, können zusätzliche Entwurfsmuster verwendet werden, um das App-Verhalten zu verbessern. Anstatt direkt mit einzelnen Diensten zu arbeiten, kann ein API-Gateway den Zugriff vereinfachen und den Client vom Back-End entkoppeln. Wenn Sie separate Backend-Dienste für verschiedene Front-Ends haben, können sich Dienste auch in Zusammenarbeit mit ihren Nutzern weiterentwickeln. Auf allgemeine Dienste kann über einen separaten Sidecar-Container zugegriffen werden, der allgemeine Clientkonnektivitätsbibliotheken mithilfe des Botschaftermusters umfassen kann.
Azure Kubernetes-Dienst
Azure Kubernetes Service (AKS) verwaltet Ihre gehostete Kubernetes-Umgebung und erleichtert die Bereitstellung und Verwaltung von containerisierten Anwendungen ohne Container-Orchestrierungskompetenz. Außerdem wird die Belastung von laufenden Vorgängen und Wartungen durch Bereitstellung, Upgrade und Skalierung von Ressourcen bei Bedarf beseitigt, ohne Ihre Anwendungen offline zu schalten.
AKS reduziert die Komplexität und den betriebstechnischen Aufwand beim Verwalten eines Kubernetes-Clusters, indem ein Großteil dieser Verantwortung für Azure entladen wird. Der Azure-Dienst übernimmt als gehosteter Kubernetes-Dienst entscheidende Aufgaben wie die Überwachung des Betriebszustands und die Wartung für Sie. Außerdem zahlen Sie nur für die Agentknoten in Ihren Clustern, nicht für die Master. Als verwalteter Kubernetes-Dienst bietet AKS Folgendes:
- Automatisierte Kubernetes-Versionsupgrades und Patching.
- Einfache Clusterskalierung.
- Selbstheilende gehostete Steuerungsebene (Master)
- Kosteneinsparungen: Zahlen Sie nur für ausgeführte Agentpoolknoten
Wenn Azure die Verwaltung der Knoten in Ihrem AKS-Cluster verarbeitet, müssen Sie nicht mehr viele Aufgaben manuell ausführen, z. B. Clusterupgrades. Da Azure diese kritischen Wartungsaufgaben für Sie verarbeitet, bietet AKS keinen direkten Zugriff (z. B. mit SSH) auf den Cluster.
Teams, die AKS nutzen, können auch Azure Dev Spaces nutzen. Azure Dev Spaces hilft Teams dabei, sich auf die Entwicklung und schnelle Iteration ihrer Microservice-Anwendung zu konzentrieren, indem Teams direkt mit ihrer gesamten Microservices-Architektur oder -Anwendung arbeiten können, die in AKS ausgeführt wird. Azure Dev Spaces bietet auch eine Möglichkeit, Teile Ihrer Microservices-Architektur isoliert zu aktualisieren, ohne den Rest des AKS-Clusters oder anderer Entwickler zu beeinträchtigen.
Azure Dev Spaces:
- Minimieren der Einrichtungszeit für lokale Computer und Ressourcenanforderungen
- Zulassen, dass Teams schneller iterieren
- Verringern der Anzahl der von einem Team benötigten Integrationsumgebungen
- Entfernen Der Notwendigkeit, bestimmte Dienste in einem verteilten System beim Entwickeln/Testen zu modellieren
Weitere Informationen zu Azure Dev Spaces
Azure-virtuelle Maschinen
Wenn Sie über eine vorhandene Anwendung verfügen, die erhebliche Änderungen für die Ausführung in App Service erfordert, können Sie virtuelle Computer auswählen, um die Migration in die Cloud zu vereinfachen. Das ordnungsgemäße Konfigurieren, Sichern und Verwalten von VMs erfordert jedoch im Vergleich zu Azure App Service viel mehr Zeit und IT-Know-how. Wenn Sie Azure Virtual Machines in Betracht ziehen, stellen Sie sicher, dass Sie den laufenden Wartungsaufwand berücksichtigen, der zum Patchen, Aktualisieren und Verwalten Ihrer VM-Umgebung erforderlich ist. Virtuelle Azure-Computer sind Infrastruktur als Dienst (IaaS), während App Service PaaS ist. Sie sollten auch überlegen, ob die Bereitstellung Ihrer App als Windows-Container für Web App für Container eine geeignete Option für Ihr Szenario sein könnte.
Logische Prozesse
Einzelne logische Prozesse, die vom Rest der Anwendung entkoppelt werden können, können unabhängig von Azure Functions auf "serverlose" Weise bereitgestellt werden. Mit Azure Functions können Sie einfach den Code schreiben, den Sie für ein bestimmtes Problem benötigen, ohne sich Gedanken über die Anwendung oder Infrastruktur zu machen, um ihn auszuführen. Sie können aus einer Vielzahl von Programmiersprachen wählen, einschließlich C#, F#, Node.js, Python und PHP, sodass Sie die produktivste Sprache für die jeweilige Aufgabe auswählen können. Wie die meisten cloudbasierten Lösungen zahlen Sie nur für die Zeit, die Sie verwenden, und Sie können Azure Functions vertrauen, um nach Bedarf zu skalieren.
Daten
Azure bietet eine Vielzahl von Datenspeicheroptionen, damit Ihre Anwendung den entsprechenden Datenanbieter für die betreffenden Daten verwenden kann.
Für transaktionsbezogene, relationale Daten sind Azure SQL-Datenbanken die beste Option. Für überwiegend lesezugängliche, leistungsstarke Daten ist ein Redis-Cache, der von einer Azure SQL-Datenbank unterstützt wird, eine gute Lösung.
Unstrukturierte JSON-Daten können auf vielfältige Weise gespeichert werden, von SQL-Datenbankspalten bis zu Blobs oder Tabellen in Azure Storage, bis hin zu Azure Cosmos DB. Von diesen bietet Azure Cosmos DB die beste Abfragefunktionalität und ist die empfohlene Option für eine große Anzahl von JSON-basierten Dokumenten, die die Abfrage unterstützen müssen.
Vorübergehende Befehls- oder ereignisbasierte Daten, die zum Koordinieren des Anwendungsverhaltens verwendet werden, können Azure Service Bus oder Azure Storage Queues verwenden. Azure Service Bus bietet mehr Flexibilität und ist der empfohlene Dienst für nicht triviale Nachrichten innerhalb und zwischen Anwendungen.
Architekturempfehlungen
Die Anforderungen Ihrer Anwendung sollten ihre Architektur diktieren. Es stehen viele verschiedene Azure-Dienste zur Verfügung. Die Wahl des richtigen ist eine wichtige Entscheidung. Microsoft bietet einen Katalog mit Referenzarchitekturen, um typische Architekturen zu identifizieren, die für allgemeine Szenarien optimiert sind. Möglicherweise finden Sie eine Referenzarchitektur, die den Anforderungen Ihrer Anwendung genau entspricht oder zumindest einen Ausgangspunkt bietet.
Abbildung 11-1 zeigt eine Beispielreferenzarchitektur. In diesem Diagramm wird ein empfohlener Architekturansatz für eine Website des Sitecore-Inhaltsverwaltungssystems beschrieben, die für marketingoptimiert ist.
Abbildung 11-1. Referenzarchitektur der Sitecore-Marketing-Website.
Referenzen – Azure-Hostingempfehlungen
Azure-Lösungsarchitekturen
https://azure.microsoft.com/solutions/architecture/Azure Basic-Webanwendungsarchitektur
https://learn.microsoft.com/azure/architecture/reference-architectures/app-service-web-app/basic-web-appEntwurfsmuster für Microservices
https://learn.microsoft.com/azure/architecture/microservices/design/patternsAzure-Entwicklerhandbuch
https://azure.microsoft.com/campaigns/developer-guide/Übersicht über Web Apps
https://learn.microsoft.com/azure/app-service/app-service-web-overviewWeb App für Container
https://azure.microsoft.com/services/app-service/containers/Einführung in Azure Kubernetes Service (AKS)
https://learn.microsoft.com/azure/aks/intro-kubernetes