Bearbeiten

Zuverlässiges Web-App-Muster für .NET – Planen der Implementierung

Azure App Service
Azure Front Door
Azure Cache for Redis
.NET

In diesem Artikel erfahren Sie, wie Sie das zuverlässige Web-App-Muster anwenden. Das zuverlässige Web-App-Muster besteht aus einer Reihe von Prinzipien und Implementierungstechniken, die definieren, wie Sie Web-Apps bei der Migration zur Cloud ändern (zu einer neuen Plattform verlagern) sollten. Es führt nur die Codeupdates durch, die für eine erfolgreiche Ausführung in der Cloud benötigt werden.

Um die Anwendung dieser Anleitung zu unterstützen, gibt es eine Referenzimplementierung des zuverlässigen Web-App-Musters, die Sie bereitstellen können.

Diagramm der Architektur der Referenzimplementierung.Architektur der Referenzimplementierung: Laden Sie eine Visio-Datei dieser Architektur herunter.

In der folgenden Anleitung wird die Referenzimplementierung als Beispiel verwendet. Führen Sie die folgenden Schritte aus, um die Implementierung des zuverlässigen Web-App-Musters zu planen:

Definieren Sie die Unternehmensziele.

Der erste Schritt beim Wechsel zum Cloud Computing besteht in der Formulierung Ihrer geschäftlichen Ziele. Das zuverlässige Web-App-Muster betont die Bedeutung der Festlegung unmittelbarer und zukünftiger Ziele für Ihre Webanwendung. Diese Ziele sind für Ihre Wahl von Clouddiensten und die Architektur Ihrer Webanwendung in der Cloud relevant.

Beispiel: Das fiktive Unternehmen Relecloud verkauft Tickets über eine lokale Webanwendung. Relecloud hat eine positive Umsatzprognose und erwartet eine höhere Nachfrage für die Ticket-Web-App. Um diese Anforderung zu erfüllen, hat das Unternehmen die Ziele für die Webanwendung wie folgt definiert:

  • Anwendung kostengünstiger, aber hochwertiger Codeänderungen
  • Erreichen eines Servicelevel-Ziels (Service Level Objective, SLO) von 99,9 %
  • Einführung von DevOps-Verfahren
  • Entwicklung kostenoptimierter Umgebungen
  • Verbesserung von Zuverlässigkeit und Sicherheit

Die lokale Infrastruktur von Relecloud bot keine kostengünstige Lösung, um diese Ziele zu erreichen. Das Unternehmen kam zu dem Schluss, dass die Migration ihrer Webanwendung zu Azure die kostengünstigste Möglichkeit war, die unmittelbaren und zukünftigen Ziele zu erreichen.

Wählen Sie die richtigen verwalteten Dienste aus.

Wenn Sie eine Web-App zur Cloud migrieren, sollten Sie Azure-Dienste auswählen, die Ihren geschäftlichen Anforderungen entsprechen und an den aktuellen Funktionen der lokalen Web-App ausgerichtet sind. Die Ausrichtung trägt zur Minimierung des Aufwands für die Verlagerung zu einer neuen Plattform bei. Sie könnten beispielsweise Dienste verwenden, mit denen Sie das Datenbankmodul beibehalten und vorhandene Middleware und Frameworks unterstützen können. In den folgenden Abschnitten finden Sie Anleitungen für die Auswahl der richtigen Azure-Dienste für Ihre Web-App.

Beispiel: Vor dem Wechsel zur Cloud stellte die Ticket-Web-App von Relecloud eine lokale, monolithische ASP.NET-App dar. Sie wurde auf zwei virtuellen Computern auf der Basis einer Microsoft SQL Server-Datenbank ausgeführt. Die Web-App litt unter häufigen Problemen hinsichtlich Skalierbarkeit und Funktionsbereitstellung. Dieser Ausgangspunkt, die geschäftlichen Ziele und das SLO lagen der Auswahl der Dienste zugrunde.

Anwendungsplattform

Wählen Sie die Hostingplattform für Anwendungen aus, die für Ihre Web-App am besten geeignet ist. Azure bietet zahlreiche verschiedene Compute-Optionen an, um verschiedene Web-App-Anforderungen zu erfüllen. Wenn Sie Unterstützung bei der Einengung der Optionen benötigen, nutzen Sie die Compute-Entscheidungsstruktur von Azure.

Beispiel: Relecloud hat sich aus den folgenden Gründen für Azure App Service als Anwendungsplattform entschieden:

  • Hohes Niveau der Vereinbarung zum Servicelevel (Service Level Agreement, SLA): Dieser Dienst verfügt über ein hohes SLA-Niveau, das die Anforderung an das Produktionsumgebungs-SLO von 99,9 % erfüllt.

  • Reduzierung des Verwaltungsaufwands: Azure App Service ist eine vollständig verwaltete Lösung für Skalierung, Integritätsprüfung und Lastenausgleich.

  • .NET-Unterstützung: Azure App Service unterstützt die Version von .NET, in der die Anwendung geschrieben ist.

  • Möglichkeit der Containerisierung: Die Web-App kann ohne Containerisierung zur Cloud migriert werden. Die Anwendungsplattform unterstützt jedoch eine Containerisierung, ohne Azure-Dienste ändern zu müssen.

  • Automatische Skalierung: Die Web-App kann abhängig von Datenverkehr und Einstellungen automatisch hoch- und herunterskaliert sowie auf- und abskaliert werden.

Identitätsverwaltung

Wählen Sie die Identitätsverwaltungslösung aus, die für Ihre Web-App am besten geeignet ist. Weitere Informationen finden Sie unter Vergleich von Identitätsverwaltungslösungen und Authentifizierungsmethoden.

Beispiel: Relecloud hat sich aus den folgenden Gründen für Microsoft Entra ID entschieden:

  • Authentifizierung und Autorisierung: Die Anwendung muss Mitarbeitende eines Callcenters authentifizieren und autorisieren.

  • Skalierbarkeit: Die Lösung kann skaliert werden, um größere Szenarien zu unterstützen.

  • Steuerung der Identitäten der Benutzer*innen: Mitarbeitende des Callcenters können ihre vorhandenen Unternehmensidentitäten verwenden.

  • Unterstützung des Autorisierungsprotokolls: Die Lösung unterstützt OAuth 2.0 für verwaltete Identitäten.

Datenbank

Wählen Sie die Datenbank aus, die für Ihre Web-App am besten geeignet ist. Wenn Sie Unterstützung bei der Einengung der Optionen benötigen, nutzen Sie die Datenspeicher-Entscheidungsstruktur von Azure.

Beispiel: Die Web-App hat SQL Server lokal verwendet. Relecloud möchte das vorhandene Datenbankschema, die vorhandenen gespeicherten Prozeduren und die vorhandenen Funktionen weiter verwenden. Auf Azure sind verschiedene SQL-Produkte verfügbar. Relecloud hat sich jedoch aus den folgenden Gründen für Azure SQL-Datenbank entschieden:

  • Zuverlässigkeit: Die Dienstebene „Universell“ bietet ein hohes SLA-Niveau und multiregionale Redundanz. Es ist für eine hohe Benutzerauslastung geeignet.

  • Reduzierung des Verwaltungsaufwands: Der Dienst stellt eine verwaltete SQL-Datenbankinstanz bereit.

  • Migrationsunterstützung: Der Dienst unterstützt die Datenbankmigration von einer lokalen SQL Server-Installation.

  • Konsistenz mit lokalen Konfigurationen: Der Dienst unterstützt die vorhandenen gespeicherten Prozeduren, Funktionen und Ansichten.

  • Resilienz: Der Dienst unterstützt Sicherungen und die Zeitpunktwiederherstellung.

  • Wissen und minimale Nacharbeit: Für Azure SQL-Datenbank kann das interne Wissen verwendet werden, und der Arbeitsaufwand für die Einführung ist minimal.

Überwachung der Anwendungsleistung

Wählen Sie eine Lösung für die Überwachung der Anwendungsleistung für Ihre Web-App aus. Application Insights ist die Azure-native Lösung für die Überwachung der Anwendungsleistung (Application Performance Management, APM). Es handelt sich um ein Feature der Überwachungslösung von Azure, Azure Monitor.

Beispiel: Relecloud hat sich aus den folgenden Gründen für die Verwendung von Application Insights entschieden:

  • Integration in Azure Monitor: Die Lösung bietet die beste Integration in Azure Monitor.

  • Anomalieerkennung: Die Lösung erkennt automatisch Leistungsanomalien.

  • Fehlerbehebung: Die Lösung unterstützt Sie bei der Diagnose von Problemen in der ausgeführten App.

  • Überwachung: Die Lösung sammelt Informationen zur App-Nutzung der Benutzer*innen und ermöglicht die mühelose Nachverfolgung benutzerdefinierter Ereignisse.

  • Transparenzlücke: Die lokale Lösung verfügte über keine Lösung für die Überwachung der Anwendungsleistung. Application Insights bietet eine einfache Integration in die Anwendungsplattform und in den Code.

cache

Legen Sie fest, ob der Web-App-Architektur ein Zwischenspeicher hinzugefügt werden soll. Azure Cache for Redis ist die primäre Zwischenspeicherlösung von Azure. Es handelt sich um einen verwalteten In-Memory-Datenspeicher auf der Basis der Redis-Software.

Beispiel: Die Auslastung der Web-App von Relecloud geht in erster Linie auf das Anzeigen von Details zu Konzerten und Veranstaltungsorten zurück. Das Unternehmen hat sich aus den folgenden Gründen für Azure Cache for Redis entschieden:

  • Reduzierung des Verwaltungsaufwands: Es handelt sich um einen vollständig verwalteten Dienst.

  • Geschwindigkeit und Volumen: Azure Cache for Redis bietet einen hohen Datendurchsatz und Lesevorgänge mit geringer Latenz für häufig abgerufene Daten, die sich nur langsam ändern.

  • Vielfältige Unterstützung: Azure Cache for Redis ist ein konsolidierter Zwischenspeicher, der von allen Instanzen der Web-App verwendet werden kann.

  • Externer Datenspeicher: Die lokalen Anwendungsserver führten eine lokale Zwischenspeicherung von Daten auf den virtuellen Computern aus. Bei diesem Setup wurden häufig verwendete Daten nicht ausgelagert, und Daten konnten nicht ungültig gemacht werden.

  • Nicht fixierte Sitzungen: Die Externalisierung des Sitzungszustands unterstützt nicht fixierte Sitzungen.

Load Balancer

Wählen Sie den Load Balancer aus, der für Ihre Web-App am besten geeignet ist. Azure verfügt über mehrere Lastenausgleichsmodule. Hilfe bei der Einengung der Optionen finden Sie unter Wählen Sie den Load Balancer aus, der für Ihre Web-App am besten geeignet ist.

Beispiel: Relecloud benötigte einen Layer-7-Load Balancer, der den Datenverkehr durch mehrere Regionen leiten kann. Relecloud benötigte eine multiregionale Web-App, um das SLO von 99,9 % zu erreichen. Relecloud hat sich aus den folgenden Gründen für Azure Front Door entschieden:

  • Globaler Lastenausgleich: Es handelt sich um einen Layer-7-Load Balancer, der den Datenverkehr durch mehrere Regionen leiten kann.

  • Web Application Firewall: Der Load Balancer kann nativ in Azure Web Application Firewall integriert werden.

  • Flexibilität beim Routing: Der Load Balancer ermöglicht dem Anwendungsteam die Konfiguration der Anforderungen an den eingehenden Datenverkehr, um zukünftige Änderungen in der Anwendung zu unterstützen.

  • Beschleunigung des Datenverkehrs: Der Load Balancer verwendet Anycast, um den nächstgelegenen Azure Point of Presence (PoP) zu erreichen und die schnellste Route zur Web-App zu finden.

  • Angepasste Domänen: Der Load Balancer unterstützt angepasste Domänennamen mit flexibler Domänenvalidierung.

  • Integritätstests: Die Anwendung benötigt eine intelligente Überwachung mittels Integritätstests. Azure Front Door ermittelt anhand der Ergebnisse des Tests den besten Ursprung für die Weiterleitung Ihrer Clientanforderungen.

  • Unterstützung der Überwachung: Der Load Balancer unterstützt integrierte Berichte mit einem zentralen Dashboard für Front Door und Sicherheitsmuster. Sie können Warnungen konfigurieren, die in Azure Monitor integriert werden. Die Anwendung kann jede Anforderung sowie fehlerhafte Integritätstests protokollieren.

  • DDoS-Schutz: Der Load Balancer verfügt über integrierten DDoS-Schutz für Layer 3 und 4.

  • Netzwerk zur Bereitstellung von Inhalten: Der Load Balancer ermöglicht Relecloud die Verwendung eines Netzwerk zur Bereitstellung von Inhalten. Das Netzwerk zur Bereitstellung von Inhalten ermöglicht die Beschleunigung der Website.

Web Application Firewall

Wählen Sie eine Webanwendungsfirewall aus, um Ihre Web-App vor Angriffen aus dem Web zu schützen. Azure Web Application Firewall (WAF) ist die Webanwendungsfirewall von Azure und bietet einen zentralisierten Schutz vor häufigen Web-Exploits und Sicherheitsrisiken.

Beispiel: Relecloud musste die Web-App vor Angriffen aus dem Web schützen. Das Unternehmen hat sich aus den folgenden Gründen für Azure Web Application Firewall entschieden:

  • Globaler Schutz: Web Application Firewall bietet einen verbesserten globalen Schutz für die Web-App, ohne dass die Leistung beeinträchtigt wird.

  • Botnet-Schutz: Dem Team stehen Überwachungs- und Konfigurationsoptionen zur Behandlung von Sicherheitsbedenken im Zusammenhang mit Botnets zur Verfügung.

  • Parität mit der lokalen Umgebung: Die lokale Lösung wurde hinter einer Webanwendungsfirewall ausgeführt, die von der IT verwaltet wurde.

  • Benutzerfreundlichkeit: Web Application Firewall kann in Azure Front Door integriert werden.

Konfigurationsspeicher

Legen Sie fest, ob Ihrer Web-App ein App-Konfigurationsspeicher hinzugefügt werden soll. Azure App Configuration ist ein Dienst zur zentralen Verwaltung von Anwendungseinstellungen und Featureflags. Machen Sie sich mit bewährten Methoden für Azure App Configuration vertraut, um zu entscheiden, ob dieser Dienst für Ihre App geeignet ist.

Beispiel: Relecloud wollte die dateibasierte Konfiguration durch einen zentralen Konfigurationsspeicher ersetzen, der in die Anwendungsplattform und in den Code integriert werden kann. Das Unternehmen hat sich aus den folgenden Gründen für App Configuration entschieden:

  • Flexibilität: Die Lösung unterstützt Featureflags. Featureflags ermöglichen es Benutzern, Features einer frühen Vorschauversion in einer Produktionsumgebung zu aktivieren und zu deaktivieren, ohne die App erneut bereitstellen zu müssen.

  • Unterstützung der Git-Pipeline: Bei der Source of Truth für Konfigurationsdaten musste es sich um ein Git-Repository handeln. Die Pipeline musste die Daten im zentralen Konfigurationsspeicher aktualisieren.

  • Unterstützung verwalteter Identitäten: App Configuration unterstützt verwaltete Identitäten, um die Verbindung zum Konfigurationsspeicher zu vereinfachen und zu schützen.

Geheimnisverwaltung

Verwenden Sie Azure Key Vault, wenn Sie geheime Schlüssel in Azure verwalten müssen. Key Vault kann mithilfe des ConfigurationBuilder-Objekts in .NET-Apps integriert werden.

Beispiel: Die lokale Web-App von Relecloud speicherte Geheimnisse in Codekonfigurationsdateien. Aus Sicherheitsgründen sollten Geheimnisse jedoch externalisiert werden. Während verwaltete Identitäten die bevorzugte Lösung für die Verbindung zu Azure-Ressourcen sind, musste Relecloud auch Anwendungsgeheimnisse verwalten. Relecloud hat sich aus den folgenden Gründen für Key Vault entschieden:

  • Verschlüsselung: Key Vault unterstützt die Verschlüsselung im Ruhezustand und während der Übertragung.

  • Verwaltete Identitäten: Die Anwendungsdienste können verwaltete Identitäten verwenden, um auf den Geheimnisspeicher zuzugreifen.

  • Überwachung und Protokollierung: Key Vault unterstützt den Überwachungszugriff und generiert Warnungen, wenn gespeicherte Geheimnisse geändert werden.

  • Integration: Key Vault bietet eine native Integration mit dem Azure-Konfigurationsspeicher (App Configuration) und der Webhostingplattform (App Service).

Speicherlösung

Wählen Sie die Speicherlösung für Ihre Web-App aus, die am besten geeignet ist. Weitere Informationen finden Sie unter Überprüfen Ihrer Speicheroptionen.

Beispiel: In der lokalen Umgebung gab es für die Web-App auf jedem Webserver einen Datenträgerspeicher. Das Team wollte jedoch eine externe Datenspeicherlösung verwenden. Relecloud hat sich aus den folgenden Gründen für Azure Blob Storage entschieden:

  • Sicherer Zugriff: Die Web-App kann Endpunkte ausschließen, die über das öffentliche Internet mit anonymem Zugriff auf den Speicher zugreifen.

  • Verschlüsselung: Blob Storage verschlüsselt Daten im Ruhezustand und während der Übertragung.

  • Resilienz: Blob Storage unterstützt den zonenredundanten Speicher (ZRS). Zonenredundanter Speicher repliziert Ihre Daten synchron in drei Azure-Verfügbarkeitszonen in der primären Region. Jede Verfügbarkeitszone ist ein getrennter physischer Standort mit unabhängiger Stromversorgung und Kühlung sowie mit einem unabhängigen Netzwerk. Diese Konfiguration sollte die Ticket-Images vor Verlust schützen.

Endpunktsicherheit

Legen Sie fest, ob der ausschließlich private Zugriff auf Azure-Dienste aktiviert werden soll. Azure Private Link stellt den Zugriff auf Platform-as-a-Service-Lösungen über einen privaten Endpunkt in Ihrem virtuellen Netzwerk bereit. Datenverkehr zwischen Ihrem virtuellen Netzwerk und dem Dienst wird über das Microsoft-Backbone-Netzwerk übertragen.

Beispiel: Relecloud hat sich aus den folgenden Gründen für Private Link entschieden:

  • Verbesserte Sicherheit für die Kommunikation: Private Link ermöglicht den privaten Zugriff der Anwendung auf Dienste auf der Azure-Plattform und reduziert die Netzwerkausdehnung von Datenspeichern zum Schutz vor Datenlecks.

  • Minimaler Aufwand: Die privaten Endpunkte unterstützen die von der Web-App verwendete Web-App- und Datenbankplattform. Beide Plattformen spiegeln vorhandene lokale Konfigurationen, sodass nur minimale Änderungen erforderlich sind.

Netzwerksicherheit

Legen Sie fest, ob Sie Ihren virtuellen Netzwerken Netzwerksicherheitsdienste hinzufügen möchten. Azure Firewall ist eine zustandsbehaftete Netzwerkfirewall, die den Netzwerkdatenverkehr überprüft. Azure Bastion ermöglicht Ihnen die sichere Verbindung zu virtuellen Computern, ohne dass RDP/SSH-Ports verfügbar werden.

Beispiel: Relecloud führte eine Hub-Spoke-Netzwerktopologie ein und wollte gemeinsam genutzte Netzwerksicherheitsdienste im Hub platzieren. Azure Firewall verbessert die Sicherheit durch die Überprüfung des gesamten ausgehenden Datenverkehrs aus den Speichen, um die Netzwerksicherheit zu erhöhen. Relecloud benötigte Azure Bastion für sichere Bereitstellungen über einen Bastion Host im DevOps-Subnetz.

Wählen Sie eine geeignete Architektur aus.

Nachdem Sie definiert haben, was verfügbar für Ihre Web-App bedeutet, und die am besten geeigneten Clouddienste ausgewählt haben, müssen Sie die Architektur ermitteln, die für Ihre Web-App am besten geeignet ist. Ihre Architektur muss Ihre geschäftlichen Anforderungen, Ihre technischen Anforderungen und Ihr SLO unterstützen.

Legen Sie die Architekturredundanz fest.

Die geschäftlichen Ziele bestimmen die Ebene der Infrastruktur- und Datenredundanz, die Ihre Web-App benötigt. Das Web-App-SLO bietet einen guten Ausgangspunkt, um Ihre Redundanzanforderungen besser zu verstehen. Berechnen Sie das zusammengesetzte SLA-Niveau anhand aller Abhängigkeiten auf dem kritischen Pfad der Verfügbarkeit. Die Abhängigkeiten müssen Azure-Dienste und Lösungen umfassen, die nicht von Microsoft stammen.

Weisen Sie jeder Abhängigkeit eine Verfügbarkeitsschätzung zu. Vereinbarungen zum Servicelevel (Service Level Agreements, SLAs) bieten einen guten Ausgangspunkt. SLAs berücksichtigen jedoch keinen Code, keine Bereitstellungsstrategien und keine Konnektivitätsentscheidungen für die Architektur.

Beispiel: Relecloud hat die Dienste auf dem kritischen Pfad der Verfügbarkeit identifiziert. Das Unternehmen verwendete Azure-SLAs für die Verfügbarkeitsprognosen. Basierend auf der Berechnung des zusammengesetzten SLA-Niveaus benötigte Relecloud eine multiregionale Architektur, um das SLO von 99,9 % zu erreichen.

Wählen Sie eine Netzwerktopologie aus.

Wählen Sie die richtige Netzwerktopologie für Ihre Web- und Netzwerkanforderungen aus. Die Hub-Spoke-Netzwerktopologie ist die Standardkonfiguration in Azure. Sie bietet Vorteile in Bezug auf Kosten, Verwaltung und Sicherheit. Außerdem werden hybride Konnektivitätsoptionen für lokale Netzwerke unterstützt.

Beispiel: Relecloud entschied sich für eine Hub-Spoke-Netzwerktopologie, um die Sicherheit der multiregionalen Bereitstellung bei gleichzeitiger Reduzierung von Kosten und Verwaltungsaufwand zu erhöhen.

Wählen Sie die Datenredundanz aus.

Stellen Sie die Zuverlässigkeit der Daten sicher, indem Sie die Daten über die Regionen und Verfügbarkeitszonen von Azure verteilen. Je größer die geografische Trennung, desto höher ist die Zuverlässigkeit.

  • Legen Sie eine Wiederherstellungspunktvorgabe (Recovery Point Objective, RPO) fest. Der RPO-Wert definiert den maximalen tolerierbaren Datenverlust während eines Ausfalls und zeigt an, wie häufig Daten repliziert werden müssen. Beispielsweise bedeutet ein RPO-Wert von einer Stunde, dass Datenverluste entsprechend einer Stunde Dauer akzeptiert werden.

  • Implementieren Sie eine Datenreplikation. Richten Sie die Datenreplikation an Ihrer Architektur und Ihrem RPO-Wert aus. Azure unterstützt in der Regel die synchrone Replikation innerhalb von Verfügbarkeitszonen. Nutzen Sie mehrere Zonen, um die Zuverlässigkeit auf einfache Weise zu verbessern. Replizieren Sie Daten für multiregionale Web-Apps in einer Aktiv-Passiv-Konfiguration zur passiven Region gemäß dem RPO-Wert der Web-App, um sicherzustellen, dass die Replikationshäufigkeit den RPO-Wert überschreitet. Aktiv-Aktiv-Konfigurationen erfordern eine Datensynchronisierung nahezu in Echtzeit über alle Regionen, was möglicherweise Codeanpassungen erfordert.

  • Erstellen Sie einen Failoverplan. Entwickeln Sie einen Failoverplan (für die Notfallwiederherstellung), der die Reaktionsstrategien bei Ausfällen beschreibt, die durch Ausfallzeiten oder Funktionsverluste verursacht werden. Geben Sie die Ziele für die Wiederherstellungszeit (Recovery Time Objectives, RTO) in Bezug auf die maximal akzeptable Ausfallzeit an. Stellen Sie sicher, dass der Failoverprozess in kürzerer Zeit als der RTO-Wert ausgeführt wird. Entscheiden Sie sich für automatisierte oder manuelle Failovermechanismen hinsichtlich Konsistenz und Kontrolle, und geben Sie die Rückkehr zur normalen Ausführung an. Testen Sie den Failoverplan, um die Effektivität sicherzustellen.

Nächster Schritt

In diesem Artikel haben Sie erfahren, wie Sie die Implementierung des zuverlässigen Web-App-Musters planen. Der nächste Schritt besteht in der Anwendung der Implementierungstechniken des zuverlässigen Web-App-Musters.