Azure Well-Architected Framework-Perspektive auf Azure App Service (Web Apps)
Azure App Service ist eine Plattform als Dienst (PaaS), die eine vollständig verwaltete Hostingumgebung zum Erstellen, Bereitstellen und Skalieren von Webanwendungen bereitstellt. Als PaaS-Lösung abstrahiert App Service die zugrunde liegende Infrastruktur, sodass Sie sich auf ihre Anwendungsentwicklung konzentrieren können. Der App-Dienst (Web App) führt Ihre Apps im Kontext eines App Service-Plans aus, der die Ressourcen, das Betriebssystem, die Region und das Preismodell (Sku) bestimmt, mit dem Ihre App gehostet wird.
Dieser Artikel geht davon aus, dass Sie als Architekt den Compute-Entscheidungsbaum durchgesehen und App Service als Compute für Ihren Workload gewählt haben. Die Anleitung in diesem Artikel enthält Architekturempfehlungen, die den Prinzipien der Azure Well-Architected Framework-Säulenzugeordnet sind.
Wichtig
Verwenden dieses Handbuchs
Jeder Abschnitt enthält eine Entwurfsprüfliste mit einer Hervorhebung architektonischer Überlegungen und Strategien für Azure App Service. Empfehlungen bieten spezifische Anleitungen zur Umsetzung dieser Strategien.
Die Empfehlungen stellen keine vollständige Liste aller Konfigurationen dar, die für das Web-Apps-Feature von Azure App Service und deren Abhängigkeiten verfügbar sind. Stattdessen werden die wichtigsten Empfehlungen aufgelistet, die den Entwurfsperspektiven zugeordnet sind. Verwenden Sie die Empfehlungen, um Ihre Machbarkeitsstudie zu erstellen oder Ihre vorhandenen Umgebungen zu optimieren.
Grundlegende Architektur, die die wichtigsten Empfehlungen veranschaulicht: Basisarchitektur des App Service.
Technologieumfang
Diese Überprüfung konzentriert sich auf die miteinander verbundenen Entscheidungen für die folgenden Azure-Ressourcen:
- App Service-Pläne
- Webanwendungen
Andere Azure-Angebote sind mit App Service verknüpft, z. B. Azure Functions, Azure Logic Apps und App Service Environment. Diese Angebote sind nicht im Rahmen dieses Artikels enthalten. Auf die App-Dienstumgebung wird gelegentlich verwiesen, um Features oder Optionen der zentralen App Service-Angebote zu verdeutlichen.
Zuverlässigkeit
Der Zweck der Säule für Zuverlässigkeit besteht darin, eine kontinuierliche Funktionalität bereitzustellen, indem genügend Resilienz geschaffen und die Fähigkeit zur schnellen Wiederherstellung von Fehlerngewährleistet wird.
Die Zuverlässigkeitsentwurfsprinzipien bieten eine hochwertige Designstrategie für einzelne Komponenten, Systemflüsse und das gesamte System.
Entwurfsprüfliste
Beginnen Sie Ihre Entwurfsstrategie auf der Grundlage der Checkliste für die Entwurfsprüfung von Reliability. Bestimmen Sie ihre Relevanz für Ihre Geschäftlichen Anforderungen, und berücksichtigen Sie dabei die Ebenen und Features von App Service und deren Abhängigkeiten. Erweitern Sie die Strategie, um bei Bedarf weitere Ansätze einzuschließen.
Priorisieren von Benutzerflüssen: Nicht alle Flüsse sind gleichermaßen kritisch. Identifizieren Sie die kritischen Pfade in Ihrer Anwendung, und weisen Sie jedem Fluss Prioritäten zu, um Ihre Entwurfsentscheidungen zu leiten. Der Benutzerflussentwurf kann beeinflussen, welche Dienstebenen und Anzahl von Instanzen Sie für einen App Service-Plan und eine Konfiguration auswählen.
Ihre Anwendung kann beispielsweise Front-End- und Back-End-Ebenen enthalten, die über einen Nachrichtenbroker kommunizieren. Sie können die Ebenen in mehreren Web-Apps segmentieren, um eine unabhängige Skalierung, Lebenszyklusverwaltung und Wartung zu ermöglichen. Das Platzieren einer großen Anwendung in einem einzigen Plan kann zu Arbeitsspeicher- oder CPU-Problemen führen und die Zuverlässigkeit beeinträchtigen.
Möglicherweise benötigen Sie mehr Instanzen auf dem Front-End, um eine optimale Leistung auf der Ui-Seite zu erzielen. Das Back-End erfordert jedoch möglicherweise nicht dieselbe Anzahl von Instanzen.
Potenzielle Fehlerantizipieren: Planen Sie Strategien zur Risikominderung für potenzielle Fehler. Die folgende Tabelle enthält Beispiele für fehlermodusanalyse.
Versagen Milderung Fehler der zugrunde liegenden oder abstrahierten App-Dienstkomponenten Stellen Sie sicher, dass Instanzen und Abhängigkeiten redundante Komponenten enthalten. Überwachen der Integrität von Instanzen, Netzwerkleistung und Speicherleistung. Ausfall externer Abhängigkeiten Verwenden Sie Entwurfsmuster wie das Retry-Muster und das Circuit Breaker-Muster. Überwachen Sie die externen Abhängigkeiten, und legen Sie entsprechende Timeouts fest. Ausfall aufgrund von Datenverkehr, der an fehlerhafte Instanzen geroutet wird Überwachen Sie den Zustand der Instanzen. Berücksichtigen Sie die Reaktionsfähigkeit und vermeiden Sie es, Anfragen an ungesunde Instanzen zu senden. Weitere Informationen finden Sie unter Fehlermodusanalyse für Azure-Anwendungen.
Erstellen Sie Redundanz: Erstellen Sie Redundanz in der Anwendung und in der unterstützenden Infrastruktur. Verteilen Sie Instanzen über Verfügbarkeitszonen hinweg, um die Fehlertoleranz zu verbessern. Der Datenverkehr wird an andere Zonen weitergeleitet, wenn eine Zone fehlschlägt. Stellen Sie Ihre Anwendung über mehrere Regionen hinweg bereit, um sicherzustellen, dass Ihre App verfügbar bleibt, auch wenn eine gesamte Region einen Ausfall erlebt.
Erstellen Sie ähnliche Redundanzstufen in abhängigen Diensten. Zum Beispiel binden sich Anwendungsinstanzen an Blob-Storage. Erwägen Sie, das zugeordnete Speicherkonto mit zonenredundanten Speicher (ZRS) zu konfigurieren, wenn eine Anwendung eine zonenredundante Bereitstellung verwendet.
Verwenden Sie mehrere Instanzen: Wenn Sie Ihre App nur auf einer Instanz ausführen, haben Sie sofort einen Single Point of Failure. Weisen Sie Ihrer App mehrere Instanzen zu, um eine hohe Verfügbarkeit sicherzustellen. Wenn eine Instanz fehlschlägt, können andere Instanzen eingehende Anforderungen weiterhin verarbeiten. Denken Sie daran, dass Ihr App-Code mehrere Instanzen ohne Synchronisierungsprobleme beim Lesen von oder Schreiben in Datenquellen behandeln kann.
Stellen Sie Redundanz in Netzwerkkomponenten sicher. Verwenden Sie beispielsweise zonenredundante IP-Adressen und Lastenausgleichsgeräte.
Verwenden Sie eine zuverlässige Skalierungsstrategie: Unerwartete Belastungen einer Anwendung können sie unzuverlässig machen. Berücksichtigen Sie den richtigen Skalierungsansatz basierend auf Ihren Workloadmerkmalen. Mit horizontaler Skalierung (Skalierung nach oben) können Sie weitere Instanzen hinzufügen, um die Last zu verteilen, während die vertikale Skalierung (Skalierung nach oben) die Kapazität einer vorhandenen Instanz (CPU, Arbeitsspeicher) erhöht. Seien Sie vorsichtig bei der Überbereitstellung, da durch das Hinzufügen unnötiger Instanzen Kosten ohne spürbare Leistungsvorteile erhöht werden.
Manchmal können Sie hochskalieren, um mit der Last umzugehen. Wenn die Last jedoch weiter ansteigt, skalieren Sie horizontal auf neue Instanzen. Bevorzugen Sie die automatische oder automatische Skalierung gegenüber manuellen Ansätzen. Verwalten Sie während der Skalierungsvorgänge immer einen Puffer mit zusätzlicher Kapazität, um Leistungsbeeinträchtigungen zu verhindern[Option für die Skalierung für App Service auswählen](Automatische Skalierung in Azure App Service)
Die App Service-Planebene, die Sie auswählen, wirkt sich auf die Skalierung in Bezug auf die Anzahl der Instanzen und die Computeeinheiten aus.
Stellen Sie die richtige App-Initialisierung sicher, damit neue Instanzen schnell aufwärmen und Anforderungen empfangen können.
Streben Sie, wann immer möglich, statuslose Anwendungen an. Eine verlässliche Skalierung des Status mit neuen Instanzen kann die Komplexität erhöhen. Erwägen Sie einen externen Datenspeicher, den Sie unabhängig skalieren können, wenn Sie den Anwendungsstatus speichern müssen. Das Speichern des Sitzungszustands im Arbeitsspeicher kann zu einem Verlust des Sitzungszustands führen, wenn ein Problem mit der Anwendung oder dem App-Dienst vorliegt. Es beschränkt auch die Möglichkeit, die Last über andere Instanzen hinweg zu verbreiten.
Testen Sie regelmäßig Ihre Regeln für die automatische Skalierung. Simulieren Sie Ladeszenarien, um sicherzustellen, dass Ihre App erwartungsgemäß skaliert wird. Sie sollten Skalierungsereignisse protokollieren, damit Sie Probleme beheben können, die auftreten und Ihre Skalierungsstrategie im Laufe der Zeit optimieren können.
Der App-Dienst hat eine Einschränkung der Anzahl von Instanzen innerhalb eines Plans, was sich auf die Skalierungssicherheit auswirken kann. Eine Strategie besteht darin, identische Bereitstellungsstempel zu verwenden, wobei jede ausgeführte Instanz des App Service-Plans über einen eigenen Endpunkt verfügt. Es ist wichtig, dass Sie alle Stempel mit einem externen Load-Balancer ausstatten, um den Datenverkehr auf sie zu verteilen. Verwenden Sie das Azure-Anwendungsgateway für Bereitstellungen in einer Zone und Azure Front Door für multiregionale Bereitstellungen. Dieser Ansatz eignet sich ideal für unternehmenskritische Anwendungen, bei denen Zuverlässigkeit von entscheidender Bedeutung ist. Weitere Informationen finden Sie unter Unternehmenskritische Baseline mit App Service.
Planen Sie die Wiederherstellbarkeit: Redundanz ist für die Geschäftskontinuität von entscheidender Bedeutung. Führen Sie einen Failover zu einer anderen Instanz durch, wenn eine Instanz nicht erreichbar ist. Entdecken Sie Funktionalitäten zur automatischen Heilung in App Service, wie z. B. die automatische Reparatur von Instanzen.
Implementieren Sie Design-Muster, um sowohl bei vorübergehenden Ausfällen, wie z. B. Problemen mit der Networking-Konnektivität, als auch bei großflächigen Ereignissen, wie z. B. Ausfällen in einer Region, einen geordneten Abbau zu ermöglichen. Berücksichtigen Sie die folgenden Entwurfsmuster:
Das Bulkhead-Muster Ihre Anwendung in isolierte Gruppen segmentieren, um zu verhindern, dass ein Fehler das gesamte System beeinträchtigt.
Das Warteschlangen-basierte Load Leveling-Muster strukturiert Arbeitselemente in Warteschlangen, die als Puffer dienen, um Spitzen im Datenverkehr auszugleichen.
Das Wiederholungsmuster behandelt vorübergehende Fehler aufgrund von Netzwerkstörungen, verworfenen Datenbankverbindungen oder ausgelasteten Diensten.
Das Schaltkreistrennmuster verhindert, dass eine Anwendung wiederholt versucht, einen Vorgang auszuführen, der wahrscheinlich fehlschlägt.
Sie können WebJobs verwenden, um Hintergrundaufgaben in Ihrer Web-App auszuführen. Um diese Aufgaben zuverlässig auszuführen, stellen Sie sicher, dass die App, die Ihren Auftrag hostet, kontinuierlich auf einem Zeitplan oder basierend auf ereignisgesteuerten Triggern ausgeführt wird.
Weitere Informationen finden Sie unter Zuverlässigkeitsmuster.
Durchführen von Zuverlässigkeitstests: Durchführen von Auslastungstests, um die Zuverlässigkeit und Leistung Ihrer Anwendung unter Last zu bewerten. Testpläne sollten Szenarien enthalten, die Ihre automatisierten Wiederherstellungsvorgänge überprüfen.
Verwenden Sie Fehlerinjektion, um absichtlich Fehler herbeizuführen und Ihre Selbstheilungs- und Selbsterhaltungsmechanismen zu validieren. Erkunden Sie die Fehlerbibliothek, die von Azure Chaos Studiobereitgestellt wird.
Der App-Dienst erzwingt Ressourcenbeschränkungen für gehostete Apps. Der App Service-Plan bestimmt diese Grenzwerte. Stellen Sie sicher, dass Ihre Tests bestätigen, dass die App innerhalb dieser Ressourcengrenzwerte ausgeführt wird. Weitere Informationen finden Sie unter Azure-Abonnement- und -Dienstbeschränkungen, Kontingente und Einschränkungen.
Nutzen Sie die Funktion Integritätsprüfung, um nicht ansprechbare Worker zu identifizieren: Der App Service verfügt über integrierte Funktionalitäten, die periodisch einen bestimmten Pfad Ihrer Web-Anwendung anpingen. Die Plattform pingt diesen Pfad, um festzustellen, ob Ihre Anwendung fehlerfrei ist und auf Anforderungen reagiert. Wenn Ihre Website auf mehrere Instanzen skaliert wird, schließt der App Service alle ungesunden Instanzen von der Bearbeitung von Anfragen aus und verbessert so Ihre Gesamtverfügbarkeit. Der Gesundheitsprüfpfad Ihrer App sollte die kritischen Komponenten Ihrer Anwendung überwachen, zum Beispiel Ihre Datenbank, Ihr Cache oder Ihr Messagingdienst. Dadurch wird sichergestellt, dass der vom Integritätsprüfungspfad zurückgegebene Status ein genaues Bild der Gesamtintegrität Ihrer Anwendung ist. Festlegen des Gesundheitsprüfungspfads
Funktion "Automatisches Heilen"verwenden: Manchmal treten unerwartete Verhaltensweisen auf, die durch einen einfachen Neustart behoben werden können. Mit den Auto-Heal-Funktionen können Sie eine "Bedingung" festlegen, die Auto-Heal auslöst, sowie die "Aktion", die Auto-Heal ergreift, wenn die Bedingung erfüllt ist. App Service Diagnostic Tools und Auto-Heal Funktion
Bericht zur Beurteilung der Ausfallsicherheit von App-Diensten: Um die Empfehlungen für maßgeschneiderte Best-Practice-Ansätze zu überprüfen, lesen Sie den Bericht zur Ausfallsicherheitsbewertung.Bericht zur Beurteilung der Ausfallsicherheit von App-Diensten
Empfehlungen
Empfehlung | Nutzen |
---|---|
(App-Dienst) Wählen Sie die Premium v3-Ebene eines App Service-Plans für Produktionsworkloads aus. Legen Sie die maximale und minimale Anzahl von Mitarbeitern entsprechend Ihrer Kapazitätsplanung fest. Weitere Informationen finden Sie unter Übersicht über den App Service-Plan. |
Ein Premium V3 App Service-Plan bietet erweiterte Skalierungsfeatures und stellt Redundanz bei Fehlern sicher. |
(App Service) Zonenredundanzaktivieren. Erwägen Sie die Bereitstellung von mehr als drei Instanzen, um die Fehlertoleranz zu verbessern. Überprüfen Sie die regionale Unterstützung für Zonenredundanz, da nicht alle Regionen dieses Feature bieten. |
Ihre Anwendung kann Fehlern in einer einzelnen Zone standhalten, wenn mehrere Instanzen über Zonen verteilt sind. Der Datenverkehr wird automatisch auf intakte Instanzen in anderen Zonen verlagert und die Zuverlässigkeit der Anwendung wird aufrechterhalten, wenn eine Zone nicht verfügbar ist. |
(Web-App) Ziehen Sie in Erwägung, die Funktion der Affinität für das Application Request Routing (ARR) zu deaktivieren. ARR-Affinität erstellt Sticky Sessions, die Benutzer zu dem Knoten weiterleiten, der ihre vorherigen Anfragen bearbeitet hat. | Eingehende Anforderungen werden gleichmäßig über alle verfügbaren Knoten verteilt, wenn Sie die ARR-Affinität deaktivieren. Gleichmäßig verteilte Anforderungen verhindern, dass der Datenverkehr jeden einzelnen Knoten überlastet. Anforderungen können nahtlos an andere fehlerfreie Knoten umgeleitet werden, wenn ein Knoten nicht verfügbar ist. Vermeiden Sie die Sitzungsaffinität, um sicherzustellen, dass Ihre App Service Instanz statuslos bleibt. Ein zustandsloser App-Dienst reduziert komplexität und gewährleistet ein einheitliches Verhalten über Knoten hinweg. Entfernen Sie persistente Sitzungen, damit App Service Instanzen hinzufügen oder entfernen kann, für horizontale Skalierung. |
(Web App) Definieren von regeln für die automatische Heilung basierend auf anforderungsanzahl, langsamen Anforderungen, Speicherbeschränkungen und anderen Indikatoren, die Teil Ihrer Leistungsbasis sind. Betrachten Sie diese Konfiguration als Teil Ihrer Skalierungsstrategie. | Automatische Heilungsregeln helfen Ihrer Anwendung, sich automatisch von unerwarteten Problemen wiederherzustellen. Die konfigurierten Regeln lösen Heilungsaktionen aus, wenn Schwellenwerte verletzt werden. Die automatische Heilung ermöglicht die automatische proaktive Wartung. |
(Web App) Aktivieren Sie die Integritätsprüfungsfunktion und geben Sie einen Pfad an, der auf die Integritätsprüfungsanforderungen reagiert. | Gesundheitschecks können Probleme frühzeitig erkennen. Anschließend kann das System automatisch Korrekturmaßnahmen ergreifen, wenn eine Integritätsprüfungsanforderung fehlschlägt. Der Load-Balancer verteilt den Datenverkehr von ungesunden Instanzen weg und leitet die Benutzer zu gesunden Knoten. |
Sicherheit
Der Zweck der Säule „Security“ besteht darin, Garantien für die Arbeitsauslastung für Vertraulichkeit, Integrität und Verfügbarkeit bereitzustellen.
Die Grundsätze des Sicherheitsdesigns bieten eine hochrangige Designstrategie zur Erreichung dieser Ziele, indem sie Ansätze für das technische Design rund um das Hosten auf App Service anwenden.
Entwurfsprüfliste
Beginnen Sie Ihre Designstrategie auf der Grundlage der Checkliste für die Designüberprüfung für Sicherheit und identifizieren Sie Schwachstellen und Kontrollen, um die Sicherheitslage zu verbessern. Erweitern Sie die Strategie, um bei Bedarf weitere Ansätze einzuschließen.
Überprüfen der Sicherheitsgrundwerte: Um den Sicherheitsstatus Ihrer Anwendung zu verbessern, die in einem App Service-Plan gehostet wird, lesen Sie die Sicherheitsgrundwerte für App Service.
Verwenden Sie die neuesten Laufzeit- und Bibliotheken: Testen Sie Ihre Anwendungsbuilds gründlich, bevor Sie Updates durchführen, um Probleme frühzeitig abzufangen und einen reibungslosen Übergang zur neuen Version sicherzustellen. App Service unterstützt die Runtime-Support-Richtlinie für die Aktualisierung bestehender Stacks und das Ablösen von Stacks, die nicht mehr unterstützt werden.
Segmentierung durch Isolationsgrenzen erstellen, um den Verstoßeinzudämmen: Identitätssegmentierung anwenden. Implementieren Sie z. B. die rollenbasierte Zugriffssteuerung (RBAC), um bestimmte Berechtigungen basierend auf Rollen zuzuweisen. Befolgen Sie das Prinzip der geringsten Rechte, um die Zugriffsrechte nur auf das zu beschränken, was erforderlich ist. Erstellen Sie auch Segmentierung auf Netzwerkebene. Injizieren von App Service-Apps in ein virtuelles Azure-Netzwerk zur Isolierung und Definieren von Netzwerksicherheitsgruppen (NSGs) zum Filtern des Datenverkehrs.
App Service-Pläne bieten die App Service Environment-Ebene, die einen hohen Grad an Isolation bietet. Mit der App Service-Umgebung erhalten Sie dedizierte Compute- und Netzwerkfunktionen.
Anwenden von Zugriffssteuerungen auf Identitäten: Beschränken Sie sowohl den inneren Zugriff auf die Web-App als auch den nach außen gerichteten Zugriff von der Web-App auf andere Ressourcen. Diese Konfiguration wendet Zugriffssteuerungen auf Identitäten an und trägt dazu bei, den gesamten Sicherheitsstatus der Workload aufrechtzuerhalten.
Verwenden Sie die Microsoft Entra-ID für alle Authentifizierungs- und Autorisierungsanforderungen. Verwenden Sie integrierte Rollen, wie z. B. Mitwirkender am Plan, Mitwirkender an der Website und generischer Mitwirkender, Leser und Besitzer.
Anwenden von Netzwerksicherheitssteuerelementen: Integrieren Sie Ihren App-Dienst in ein virtuelles Netzwerk (VNet), um den ausgehenden Datenverkehr zu steuern. Verwenden Sie private Endpunkte, um den eingehenden Datenverkehr zu steuern und den Zugriff auf Ihren App-Dienst in Ihrem VNet zu beschränken und den öffentlichen Internetzugriff zu deaktivieren. Sichern Ihres Netzwerks, Steuern des eingehenden und ausgehenden Datenverkehrs
Stellen Sie eine Webanwendungsfirewall (WAF) bereit, um vor häufigen Sicherheitsrisiken zu schützen. Sowohl das Anwendungsgateway als auch azure Front Door verfügen über integrierte WAF-Funktionen.
Konfigurieren Sie die Reverseproxyregeln und Netzwerkeinstellungen entsprechend, um die gewünschte Sicherheits- und Kontrollstufe zu erreichen. Fügen Sie z. B. NSG-Regeln im Subnetz des privaten Endpunkts hinzu, um nur Datenverkehr vom Reverse-Proxy zu akzeptieren.
Der Datenverkehr von der Anwendung an andere PaaS-Dienste sollte über private Endpunkte erfolgen. Erwägen Sie, eine Firewallkomponente zu platzieren, um den Ausgang des Datenverkehrs in das öffentliche Internet einzuschränken. Beide Ansätze verhindern Datenexfiltration.
Eine umfassende Ansicht finden Sie unter App Service Netzwerkfunktionen.
Verschlüsseln von Daten: Schützen von Daten während der Übertragung mit End-to-End Transport Layer Security (TLS). Verwenden Sie Ihre vom Kunden verwalteten Schlüssel für die vollständige Verschlüsselung ruhender Daten. Weitere Informationen finden Sie unter Verschlüsselung im Ruhezustand mit vom Kunden verwalteten Schlüsseln.
Verwenden Sie keine Legacyprotokolle wie TLS 1.0 und 1.1. Stellen Sie sicher, dass alle Web-Apps nur HTTPS verwenden und TLS 1.2 oder höher erzwingen. Die mindeste TLS-Version ist 1.2. Weitere Informationen finden Sie unter App-Service-TLS-Übersicht.
Alle Instanzen Ihres App-Diensts weisen einen Standarddomänennamen auf. Verwenden Sie eine benutzerdefinierte Domäne, und sichern Sie diese Domäne mit Zertifikaten.
End-to-End-TLS-Verschlüsselung: End-to-End TLS-Verschlüsselung ist in Premium App Service-Plänen verfügbar. Dieses Feature verschlüsselt Ihren Datenverkehr während der gesamten Transaktion, wodurch das Risiko einer Abfangen von Datenverkehr minimiert wird.
Reduzieren Sie die Angriffsfläche: Entfernen Sie standardkonfigurationen, die Sie nicht benötigen. Deaktivieren Sie beispielsweise Das Remotedebugging, die lokale Authentifizierung für SCM-Websites (Source Control Manager) und die Standardauthentifizierung. Deaktivieren Sie unsichere Protokolle wie HTTP und File Transfer Protocol (FTP). Erzwingen von Konfigurationen über Azure-Richtlinien. Weitere Informationen finden Sie unter Azure-Richtlinien.
Implementieren von restriktiven CORS-Richtlinien (Cross-Origin Resource Sharing): Verwenden Sie restriktive CORS-Richtlinien in Ihrer Web-App, um nur Anforderungen aus den zulässigen Domänen, Headern und anderen Kriterien zu akzeptieren. Erzwingen Sie CORS-Richtlinien mit integrierten Azure Policy-Definitionen.
Verwaltete Identitätenverwenden: Aktivieren Sie verwaltete Identitäten für Ihren App Service, um sicher auf andere Azure-Dienste zuzugreifen, ohne Anmeldeinformationen verwalten zu müssen. Erfahren Sie mehr über verwaltete Identitäten.
Schützen von geheimen Anwendungsschlüsseln: Sie müssen vertrauliche Informationen wie API-Schlüssel oder Authentifizierungstoken behandeln. Anstatt diese geheimen Schlüssel direkt in Ihren Anwendungscode oder Konfigurationsdateien zu codieren, können Sie Azure Key Vault-Verweise in den App-Einstellungen verwenden. Wenn die Anwendung gestartet wird, ruft App Service automatisch die geheimen Werte aus Key Vault mithilfe der verwalteten Identität der App ab.
Ressourcenprotokolle für Ihre Anwendung aktivieren: Aktivieren Sie Ressourcenprotokolle für Ihre Anwendung, um umfassende Aktivitätspfade zu erstellen, die wertvolle Daten während Untersuchungen bereitstellen, die Sicherheitsvorfällen folgen. Ausführliche Anleitungen finden Sie in den Anleitungen zur Protokollüberwachung.
Berücksichtigen Sie die Protokollierung als Teil Ihres Bedrohungsmodellierungsprozesses, wenn Sie Bedrohungen bewerten.
Empfehlungen
Empfehlung | Nutzen |
---|---|
(Web-App) Werden Sie der Web-App verwaltete Identitäten zuweisen. Um Isolationsgrenzen aufrechtzuerhalten, teilen oder verwenden Sie Identitäten nicht über verschiedene Anwendungen hinweg. Stellen Sie sicher, dass Sie eine sichere Verbindung zu Ihrer Container Registry herstellen, wenn Sie Container für die Bereitstellung verwenden. |
Die Anwendung ruft geheime Schlüssel aus Key Vault ab, um die ausgehende Kommunikation von der Anwendung zu authentifizieren. Azure verwaltet die Identität und erfordert keine Bereitstellung oder Rotation von Geheimnissen. Sie verfügen über unterschiedliche Identitäten, um die Kontrolle granularer zu gestalten. Unterschiedliche Identitäten erleichtern die Sperrung, wenn eine Identität kompromittiert wird. |
(Web App) Konfigurieren Sie die benutzerdefinierten Domains für Anwendungen. Deaktivieren Sie HTTP, und akzeptieren Sie nur HTTPS-Anforderungen. |
Benutzerdefinierte Domänen ermöglichen eine sichere Kommunikation über HTTPS mithilfe des TLS-Protokolls (Transport Layer Security), das den Schutz vertraulicher Daten gewährleistet und die Benutzervertrauensstellung aufbaut. |
(Web App) Bewerten Sie, ob die integrierte Authentifizierung von App Service der richtige Mechanismus ist, um Benutzer zu authentifizieren, die auf Ihre Anwendung zugreifen. Integrierte App Service-Authentifizierung ist in Microsoft Entra ID integriert. Dieses Feature behandelt die Tokenüberprüfung und die Benutzeridentitätsverwaltung über mehrere Anmeldeanbieter hinweg und unterstützt OpenID Connect. Mit diesem Feature haben Sie keine Autorisierung auf granularer Ebene, und Sie verfügen nicht über einen Mechanismus zum Testen der Authentifizierung. | Wenn Sie dieses Feature verwenden, müssen Sie keine Authentifizierungsbibliotheken im Anwendungscode verwenden, was die Komplexität verringert. Der Benutzer wird bereits authentifiziert, wenn eine Anforderung die Anwendung erreicht. |
(Web App) Konfigurieren Sie die Anwendung für die Integration des virtuellen Netzwerks . Verwenden Sie private Endpunkte für App Service Apps. Blockieren Sie den gesamten öffentlichen Datenverkehr. Routen Sie das Container Image über die Integration des virtuellen Netzwerks. Der gesamte von der Anwendung ausgehende Datenverkehr läuft über das virtuelle Netzwerk. |
Nutzen Sie die Sicherheitsvorteile der Verwendung eines virtuellen Azure-Netzwerks. Beispielsweise kann die Anwendung sicher auf Ressourcen innerhalb des Netzwerks zugreifen. Fügen Sie einen privaten Endpunkt hinzu, um Ihre Anwendung zu schützen. Private Endpunkte beschränken den direkten Zugriff auf das öffentliche Netzwerk und ermöglichen den kontrollierten Zugriff über den Reverse-Proxy. |
(Web App) So implementieren Sie die Härtung: - Deaktivieren der Standardauthentifizierung, die einen Benutzernamen und ein Kennwort zugunsten der microsoft Entra ID-basierten Authentifizierung verwendet. – Deaktivieren Sie das Remotedebugging, sodass eingehende Ports nicht geöffnet werden. - Aktivieren Sie CORS Richtlinien, um eingehende Anfragen zu beschränken. - Deaktivieren Sie Protokolle, z. B. FTP-. |
Wir empfehlen die Standardauthentifizierung nicht als sichere Bereitstellungsmethode. Microsoft Entra ID verwendet die tokenbasierte OAuth 2.0-Authentifizierung, die zahlreiche Vorteile und Verbesserungen bietet, die den Einschränkungen entsprechen, die mit der Standardauthentifizierung verbunden sind. Richtlinien beschränken den Zugriff auf Anwendungsressourcen, erlauben nur Anforderungen aus bestimmten Domänen und sichere regionsübergreifende Anforderungen. |
(Web-App) Immer Key Vault-Referenzen als App-Einstellungen festlegen. |
Geheime Schlüssel werden getrennt von der Konfiguration Ihrer App gespeichert. App-Einstellungen werden im Ruhezustand verschlüsselt. App Service verwaltet auch Secret-Rotationen. |
(App Service) Microsoft Defender for Cloud for App Serviceaktivieren. | Erhalten Sie Echtzeitschutz für Ressourcen, die in einem App Service-Plan ausgeführt werden. Schützen Sie sich vor Bedrohungen, und verbessern Sie Ihren gesamten Sicherheitsstatus. |
(App Service) Diagnoseprotokollierung aktivieren und Instrumentierung zur App hinzufügen. Die Protokolle werden an Azure Storage-Konten, Azure Event Hubs und Log Analytics gesendet. Weitere Informationen zu Überwachungsprotokolltypen finden Sie unter Unterstützte Protokolltypen. | Die Protokollierung erfasst Zugriffsmuster. Es zeichnet relevante Ereignisse auf, die wertvolle Einblicke in die Interaktion von Benutzern mit einer Anwendung oder Plattform bieten. Diese Informationen sind für Verantwortlichkeits-, Compliance- und Sicherheitszwecke von entscheidender Bedeutung. |
Kostenoptimierung
Die Kostenoptimierung konzentriert sich darauf, Ausgabenmuster zu erkennen, Investitionen in kritischen Bereichen zu priorisieren und in anderen Bereichen zu optimieren, um das Budget der Organisation einzuhalten und gleichzeitig die Anforderungen des Unternehmens zu erfüllen.
Die Designprinzipien für die Kostenoptimierung bieten eine übergeordnete Designstrategie zur Erreichung dieser Ziele und zum notwendigen Ausgleich bei der technischen Gestaltung Ihrer Web-Apps und der Umgebung, in der sie ausgeführt werden.
Entwurfsprüfliste
Starten Sie Ihre Design-Strategie auf der Grundlage der Checkliste für die Design-Überprüfung bei der Kostenoptimierung für Investitionen und nehmen Sie eine Feinabstimmung des Designs vor, damit der Workload mit dem für den Workload zugewiesenen Budget in Einklang gebracht wird. Ihr Design sollte die richtigen Azure-Funktionen verwenden, Investitionen überwachen und Möglichkeiten zur Optimierung im Laufe der Zeit finden.
Schätzen der Anfangskosten: Verwenden Sie im Rahmen Ihrer Kostenmodellierungsübung den Azure-Preisrechner, um die ungefähren Kosten zu bewerten, die verschiedenen Ebenen zugeordnet sind, basierend auf der Anzahl der Instanzen, die Sie ausführen möchten. Jede App-Dienstebene bietet unterschiedliche Berechnungsoptionen.
Überwachen Sie das Kostenmodell kontinuierlich, um Ausgaben nachzuverfolgen.
Bewerten Sie die ermäßigten Optionen: Höhere Tiers umfassen dedizierte Instanzen. Sie können einen Reservierungsrabatt anwenden, wenn Ihre Workload ein vorhersehbares und konsistentes Nutzungsmuster aufweist. Stellen Sie sicher, dass Sie Nutzungsdaten analysieren, um die Art der Reservierung zu bestimmen, die zu Ihrer Workload passt. Weitere Informationen finden Sie unter Sparen von Kosten mit App Service Reserved Instances.
Verstehen von Nutzungszählern: Azure berechnet basierend auf dem Preisniveau Ihres App Service-Plans einen Stundensatz pro Sekunde. Für jede skalierte Instanz in Ihrem Plan fallen Belastungen an, basierend auf der Zeit, die Sie der VM-Instanz zuweisen. Achten Sie auf ungenutzte Rechenressourcen, die Ihre Kosten aufgrund von Überallokation durch suboptimale SKU-Auswahl oder eine schlecht konfigurierte Skalierungs-Einstellung erhöhen können.
Zusätzliche App Service-Features, z. B. benutzerdefinierte Domänenregistrierung und benutzerdefinierte Zertifikate, können Kosten hinzufügen. Andere Ressourcen wie virtuelle Netzwerke zur Isolierung Ihrer Lösung oder Schlüsseltresore zum Schutz von Arbeitslastgeheimnissen, die in Ihre App Service-Ressourcen integriert werden, können ebenfalls zusätzliche Kosten verursachen. Weitere Informationen finden Sie unter App Services-Abrechnungsmodell.
Berücksichtigen Sie die Kompromisse zwischen Dichte und Isolation: Sie können App Service-Pläne verwenden, um mehrere Anwendungen auf demselben Compute zu hosten, was Kosten für gemeinsam genutzte Umgebungen spart. Weitere Informationen finden Sie unter Tradeoffs.
Bewerten Sie die Auswirkungen Ihrer Skalierungsstrategie auf die Kosten: Sie müssen die Skalierung ordnungsgemäß entwerfen, testen und für die Skalierung nach oben und unten konfigurieren, wenn Sie die automatische Skalierung implementieren. Legen Sie genaue Höchst- und Mindestgrenzwerte für die automatische Skalierung fest.
Initialisieren Sie die Anwendung proaktiv für eine zuverlässige Skalierung. Warten Sie z.B. nicht, bis die CPU-Auslastung 95 % erreicht. Lösen Sie stattdessen die Skalierung mit ca. 65% aus, um ausreichend Zeit für die Zuordnung und Initialisierung neuer Instanzen während des Skalierungsprozesses zu ermöglichen. Diese Strategie kann jedoch zu nicht genutzter Kapazität führen.
Wir empfehlen Ihnen, die Mechanismen zum vertikalen Hochskalieren und horizontalen Skalieren zu kombinieren und auszubalancieren. So kann eine App beispielsweise eine Zeit lang vertikal hochskalieren und dann bei Bedarf horizontal skalieren. Erkunden Sie hohe Ebenen, die große Kapazität und eine effiziente Ressourcennutzung bieten. Basierend auf Nutzungsmustern sind höhere Premium-Stufen oft kostengünstiger, da sie fähiger sind.
Optimieren von Umgebungskosten: Berücksichtigen Sie die Stufe "Einfach" oder "Frei", um Vorproduktionsumgebungen auszuführen. Diese Ebenen sind von geringer Leistung und kostengünstig. Wenn Sie die Stufe "Einfach" oder "Frei" verwenden, verwenden Sie Governance, um die Ebene zu erzwingen, die Anzahl der Instanzen und CPUs einzuschränken, die Skalierung einzuschränken und die Protokollaufbewahrung einzuschränken.
Implementieren von Entwurfsmustern: Diese Strategie reduziert das Volumen der Anforderungen, die Ihre Workload generiert. Erwägen Sie die Verwendung von Mustern wie Backends für Frontends-Muster und Gateway-Aggregationsmuster, um die Anzahl der Anforderungen zu minimieren und Kosten zu reduzieren.
regelmäßig datenbezogene Kostenüberprüfen: Erweiterte Datenaufbewahrungszeiträume oder teure Speicherebenen können zu hohen Speicherkosten führen. Weitere Ausgaben können sich aufgrund der Bandbreitennutzung und der längeren Aufbewahrung von Protokollierungsdaten ansammeln.
Erwägen Sie die Implementierung der Zwischenspeicherung, um die Kosten für die Datenübertragung zu minimieren. Beginnen Sie mit der lokalen Zwischenspeicherung im Arbeitsspeicher, und erkunden Sie dann verteilte Cacheoptionen, um die Anzahl der Anforderungen an die Back-End-Datenbank zu reduzieren. Berücksichtigen Sie die Bandbreitendatenverkehrskosten, die mit der regionsübergreifenden Kommunikation verbunden sind, wenn sich Ihre Datenbank in einer anderen Region befindet.
Optimieren der Bereitstellungskosten: Nutzen Sie Bereitstellungsplätze, um Kosten zu optimieren. Der Slot läuft in derselben Berechnungsumgebung wie die Produktionsinstanz. Verwenden Sie sie strategisch für Szenarien wie blau-grüne Bereitstellungen, die zwischen Slots wechseln. Dieser Ansatz minimiert Ausfallzeiten und sorgt für reibungslose Übergänge.
Verwenden Sie Bereitstellungs-Slots mit Vorsicht. Sie können Probleme wie Ausnahmen oder Speicherverluste verursachen, die sich sowohl auf die vorhandenen Instanzen als auch auf neue Instanzen auswirken können. Stellen Sie sicher, dass Sie Änderungen gründlich testen. Eine operative Anleitung finden Sie unter Operational Excellence.
Empfehlungen
Empfehlung | Nutzen |
---|---|
(App Service) Für niedrigere Umgebungen die Stufen "Kostenlos" oder "Basic" auswählen. Wir empfehlen diese Stufen für die experimentelle Verwendung. Entfernen Sie die Ebenen, wenn Sie sie nicht mehr benötigen. | Die Stufe "Free" und "Basic" sind budgetfreundlich im Vergleich zu höheren Ebenen. Sie bieten eine kostengünstige Lösung für Nichtproduktionsumgebungen, die nicht die vollständigen Features und die Leistung von Premium-Plänen benötigen. |
(App-Dienst) Nutzen Sie Rabatte und erkunden Sie die bevorzugten Preise für: - Niedrigere Umgebungen mit dev/test Plänen. - Azure Reservierungen und Azure Sparpläne für dedizierten Rechenaufwand, den Sie im Premium V3 Tier und App Service-Umgebung bereitstellen. Verwenden Sie reservierte Instanzen für stabile Workloads mit vorhersagbaren Verwendungsmustern. |
Entwicklungs-/Testpläne bieten reduzierte Tarife für Azure-Dienste, die sie für nichtproduktive Umgebungen kosteneffizient machen. Verwenden Sie reservierte Instanzen, um im Voraus für Rechenressourcen zu zahlen und so erhebliche Rabatte zu erhalten. |
(Web-App) Überwachen Sie die Kosten, die für App Service Ressourcen anfallen. Führen Sie das Kostenanalysetool im Azure-Portal aus. Erstellen Sie Budgets und Warnhinweise, um Stakeholder zu benachrichtigen. |
Sie können Kostenspitzen, Ineffizienzen oder unerwartete Ausgaben frühzeitig identifizieren. Dieser proaktive Ansatz hilft Ihnen, Budgetkontrollen bereitzustellen, um Überausgaben zu verhindern. |
(App-Dienst) Skalieren, wenn die Nachfrage sinkt. Zur Skalierung definieren Sie Skalierungsregeln, um die Anzahl der Instanzen in Azure Monitor zu verringern. | Vermeiden Sie Verschwendung und reduzieren Sie unnötige Ausgaben. |
Operative Exzellenz
Operational Excellence konzentriert sich in erster Linie auf Verfahren für Entwicklungspraktiken, Beobachtbarkeit und Release Management.
Die Designprinzipien Operational Excellence bieten eine allgemeine Designstrategie, um diese Ziele in Bezug auf die betrieblichen Anforderungen an die Arbeitslast zu erreichen.
Entwurfsprüfliste
Beginnen Sie Ihre Design-Strategie auf der Grundlage der Checkliste zur Design-Überprüfung für Operational Excellence, um Prozesse für Beobachtbarkeit, Tests und Bereitstellung im Zusammenhang mit Web-Apps zu definieren.
Verwalten von Versionen: Verwenden Sie Bereitstellungsplätze, um Versionen effektiv zu verwalten. Sie können Ihre Anwendung an einem Steckplatz bereitstellen, Tests durchführen und deren Funktionalität überprüfen. Nach der Überprüfung können Sie die App nahtlos in die Produktion verschieben. Dieser Vorgang verursacht keine zusätzlichen Kosten, da der Slot in derselben VM-Umgebung wie die Produktionsinstanz ausgeführt wird.
Verwenden Sie "Swap with Preview" (Mehrphasentausch). Swap mit Vorschau bietet Ihnen die Möglichkeit, die App in Ihren Staging-Slots gegen Ihre Produktionseinstellungen zu testen und die App warmlaufen zu lassen. Nachdem Sie Ihre Tests durchgeführt und alle erforderlichen Pfade vorgewärmt haben, können Sie den Tausch abschließen, und die App wird Produktionsdatenverkehr empfangen, ohne neu zu starten.
Ausführen automatisierter Tests: Bevor Sie eine Veröffentlichung Ihrer Web-App bewerben, testen Sie ihre Leistung, Funktionalität und Integration in andere Komponenten gründlich. Verwenden Sie Azure Load Testing, das in Apache JMeter integriert ist, ein beliebtes Tool für Leistungstests. Erkunden Sie automatisierte Tools für andere Arten von Tests, z. B. Phantom für funktionsbezogene Tests.
Automatisieren von Bereitstellungen: Verwenden Sie CI/CD-Pipelines mit Azure DevOps- oder GitHub-Aktionen, um Bereitstellungen zu automatisieren und den manuellen Aufwand kontinuierliche Bereitstellung in Azure App Servicezu reduzieren.
Bereitstellen unveränderlicher Einheiten: Implementieren Sie das Bereitstellungsstempel-Muster, um den App Service in einen unveränderlichen Stempel zu unterteilen. Der App-Dienst unterstützt die Verwendung von Containern, die inhärent unveränderlich sind. Ziehen Sie angepasste Container für Ihre App Service Web-App in Betracht.
Jeder Stempel stellt eine in sich geschlossene Einheit dar, die Sie schnell horizontal skalieren oder erweitern können. Einheiten, die auf diesem Stempel basieren, sind temporär und zustandslos. Statusloses Design vereinfacht den Betrieb und die Wartung. Dieser Ansatz eignet sich ideal für unternehmenskritische Anwendungen. Ein Beispiel finden Sie unter Geschäftskritische Baseline mit App Service.
Verwenden Sie eine Infrastructure-as-Code (IaC)-Technologie wie z. B. Bicep, um Einheiten mit Reproduzierbarkeit und Konsistenz auszustempeln.
Schützen von Produktionsumgebungen: Erstellen Sie separate App Service-Pläne zum Ausführen von Produktions- und Vorproduktionsumgebungen. Nehmen Sie keine Änderungen direkt in der Produktionsumgebung vor, um Stabilität und Zuverlässigkeit zu gewährleisten. Separate Instanzen ermöglichen Flexibilität bei der Entwicklung und Tests, bevor Sie Änderungen an der Produktion fördern.
Verwenden Sie niedrige Umgebungen, um neue Features und Konfigurationen isoliert zu erkunden. Halten Sie Entwicklungs- und Testumgebungen kurzlebig.
Verwalten von Zertifikaten: Für benutzerdefinierte Domänen müssen Sie TLS-Zertifikate verwalten.
Stellen Sie Prozesse bereit, um Zertifikate zu beschaffen, zu erneuern und zu validieren. Laden Sie diese Prozesse nach Möglichkeit in App Service aus. Wenn Sie Ihr eigenes Zertifikat verwenden, müssen Sie die Verlängerung verwalten. Wählen Sie einen Ansatz aus, der ihren Sicherheitsanforderungen am besten entspricht.
Empfehlung | Nutzen |
---|---|
(Web-App) Überwachen Sie den Zustand Ihrer Instanzen und aktivieren Sie Integritätstests für die Instanzen. Richten Sie einen bestimmten Pfad für die Behandlung von Gesundheitsprüfanfragen ein. |
Sie können Probleme umgehend erkennen und erforderliche Maßnahmen ergreifen, um Verfügbarkeit und Leistung aufrechtzuerhalten. |
(Web App) Diagnoseprotokolle für die Anwendung und die Instanz aktivieren. Die häufige Protokollierung kann die Leistung des Systems verlangsamen, zu Speicherkosten hinzufügen und Risiken einführen, wenn Sie unsicheren Zugriff auf Protokolle haben. Befolgen Sie die folgenden bewährten Methoden: - Protokollieren Sie den richtigen Grad an Informationen. – Festlegen von Aufbewahrungsrichtlinien. – Halten Sie ein Protokoll über autorisierten Zugriff und nicht-autorisierten Versuche. - Behandeln Sie Protokolle als Daten und wenden Sie Datenschutzsteuerungsmaßnahmen an. |
Diagnoseprotokolle liefern wertvolle Einblicke in das Verhalten Ihrer App. Überwachen Sie Datenverkehrsmuster und identifizieren Sie Anomalien. |
(Web-App) Nutzen Sie die Vorteile von Zertifikaten, die vom App Service verwaltet werden, um das Zertifizierungsmanagement auf Azure auszulagern. | Der App-Dienst verarbeitet automatisch Prozesse wie Zertifikatbeschaffung, Zertifikatüberprüfung, Zertifikatverlängerung und Importieren von Zertifikaten aus Key Vault. Laden Sie alternativ Ihr Zertifikat in Key Vault hoch, und autorisieren Sie den App Service-Ressourcenanbieter für den Zugriff darauf. |
(App Service) Überprüfen Sie die App-Änderungen im Staging-Slot, bevor Sie ihn mit dem Produktionsslot austauschen. | Vermeiden Sie Ausfallzeiten und Fehler. Kehren Sie schnell zum letzten bekannten guten Zustand zurück, wenn Sie nach einem Tausch ein Problem erkennen. |
Leistungseffizienz
Bei der Leistungseffizienz geht es um Aufrechterhaltung der Benutzererfahrung, auch wenn durch die Verwaltung der Kapazität eine Zunahme der Last erfolgt. Die Strategie umfasst die Skalierung von Ressourcen, das Identifizieren und Optimieren potenzieller Engpässe und die Optimierung der Spitzenleistung.
Die Designprinzipien der Leistungseffizienz bieten eine übergeordnete Entwurfsstrategie zur Erreichung dieser Kapazitätsziele unter Berücksichtigung der erwarteten Nutzung.
Entwurfsprüfliste
Beginnen Sie Ihre Design-Strategie auf der Grundlage der Checkliste für die Überprüfung der Performance-Effizienz, um eine Baseline auf der Grundlage von Kennzahlen für Web-Apps zu definieren.
Identifizieren und Überwachen von Leistungsindikatoren: Legen Sie Ziele für die wichtigsten Indikatoren für die Anwendung fest, z. B. das Volumen eingehender Anforderungen, die Zeit, die die Anwendung benötigt, um auf Anforderungen, ausstehende Anforderungen und Fehler in HTTP-Antworten zu reagieren. Berücksichtigen Sie wichtige Indikatoren als Teil der Leistungsgrundlage für die Arbeitslast.
Erfassen Sie App Service-Metriken, die die Grundlage von Leistungsindikatoren bilden. Sammeln Sie Protokolle, um Einblicke in die Ressourcennutzung und -aktivitäten zu erhalten. Verwenden Sie Tools zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM), z. B. Application Insights, um Leistungsdaten aus der Anwendung zu sammeln und zu analysieren. Weitere Informationen finden Sie unter App Service-Überwachungsdatenreferenz.
Schließen Sie die Instrumentierung auf Codeebene, die Transaktionsablaufverfolgung und die Leistungsprofilerstellung ein.
Bewerten der Kapazität: Simulieren Sie verschiedene Benutzerszenarien, um die optimale Kapazität zu ermitteln, die Sie für den erwarteten Datenverkehr benötigen. Verwenden Sie Load Testing, um zu verstehen, wie sich Ihre Anwendung unter verschiedenen Ladeebenen verhält.
Wählen Sie die richtige Stufeaus: Verwenden Sie dedizierte Rechenressourcen für Produktions-Workloads. Premium V3-Ebenen bieten größere SKUs mit erhöhter Arbeitsspeicher- und CPU-Kapazität, mehr Instanzen und mehr Features, z. B. Zonenredundanz. Weitere Informationen finden Sie unter Premium V3 Preisniveau.
Optimieren Sie Ihre Skalierungsstrategie: Verwenden Sie nach Möglichkeit automatische Skalierung, anstatt die Anzahl der Instanzen manuell anzupassen, wenn sich die Anwendungslast ändert. Bei der automatischen Skalierung passt Der App-Dienst die Serverkapazität basierend auf vordefinierten Regeln oder Triggern an. Stellen Sie sicher, dass Sie angemessene Leistungstests durchführen und die richtigen Regeln für die richtigen Trigger festlegen.
Wenn Sie die Einfachheit während der ersteinrichtung priorisieren, verwenden Sie eine Option für die automatische Skalierung, die nicht erfordert, dass Sie Regeln definieren müssen, und Sie müssen nur Grenzwerte festlegen.
Verfügen Sie über ausreichende Ressourcen, um eine optimale Leistung sicherzustellen. Weisen Sie Ressourcen entsprechend zu, um Leistungsziele beizubehalten, z. B. Antwortzeit oder Durchsatz. Ziehen Sie bei Bedarf eine Gesamtzuweisung von Ressourcen in Betracht.
Wenn Sie Regeln für die automatische Skalierung definieren, müssen Sie die Zeit berücksichtigen, die für die Initialisierung der Anwendung benötigt wird. Berücksichtigen Sie diesen Aufwand, wenn Sie alle Skalierungsentscheidungen treffen.
Zwischenspeicherungverwenden: Das Abrufen von Informationen aus einer Ressource, die sich nicht häufig ändert und für den Zugriff teuer ist, wirkt sich auf die Leistung aus. Komplexe Abfragen, einschließlich Verknüpfungen und mehrerer Nachschlagevorgänge, tragen zur Laufzeit bei. Führen Sie die Zwischenspeicherung durch, um die Verarbeitungszeit und Latenz zu minimieren. Zwischenspeichern von Abfrageergebnissen, um wiederholte Roundtrips zur Datenbank oder zum Back-End zu vermeiden und die Verarbeitungszeit für nachfolgende Anforderungen zu reduzieren.
Weitere Informationen zur Verwendung des lokalen und verteilten Caches in der Workload finden Sie unter Zwischenspeichern.
Überprüfen Sie die Leistungs-Antipattern: Um sicherzustellen, dass die Webanwendung in Übereinstimmung mit Ihren Geschäftlichen Anforderungen ausgeführt und skaliert wird, vermeiden Sie die typischen Antipattern. Hier sind einige Antipattern, die der App-Dienst korrigiert.
Antimuster Beschreibung Busy Front End Ressourcenintensive Aufgaben können die Reaktionszeiten für Benutzeranforderungen erhöhen und eine hohe Latenz verursachen.
Verschieben Sie Prozesse, die erhebliche Ressourcen in ein separates Back-End verbrauchen. Verwenden Sie einen Message Broker, um ressourcenintensive Aufgaben in eine Warteschlange zu stellen, die das Backend zur asynchronen Verarbeitung abholt.Keine Zwischenspeicherung Bedienen Sie Anfragen aus einem Zwischencache vor der Backend-Datenbank, um die Latenzzeit zu verringern. lauter Nachbar Bei mehrinstanzenfähigen Systemen werden Ressourcen von mehreren Mandanten gemeinsam verwendet. Die Aktivität eines Mandanten kann sich negativ auf die Nutzung des Systems eines anderen Mandanten auswirken. App Service Environment bietet eine vollständig isolierte und dedizierte Umgebung zum Ausführen von App Service-Apps.
Empfehlungen
Empfehlung | Nutzen |
---|---|
(App Service) Aktivieren Sie die Einstellung Immer Ein, wenn Anwendungen einen einzigen App Service-Plan gemeinsam nutzen. App Service-Apps werden automatisch entladen, wenn sie im Leerlauf sind, um Ressourcen zu sparen. Die nächste Anforderung löst einen Kaltstart aus, was zu Anforderungstimeouts führen kann. | Die Anwendung wird nie entladen, wenn Always On aktiviert ist. |
(Web Apps) Erwägen Sie die Verwendung von HTTP/2 für Anwendungen, um die Protokolleffizienz zu verbessern. | Wählen Sie HTTP/2 statt HTTP/1.1, weil HTTP/2 Verbindungen vollständig multiplexen kann, Verbindungen wiederverwendet, um den Aufwand zu reduzieren, und Header komprimiert, um so die Datenübertragung zu minimieren. |
Kompromisse
Möglicherweise müssen Sie Design-Kompromisse machen, wenn Sie die Ansätze in den Pfeilerlisten verwenden. Hier sind einige Beispiele für Vor- und Nachteile.
Dichte und Isolation
Höhere Dichte: Co-Location mehrerer Apps innerhalb desselben App Service-Plans, um die Ressourcen zu minimieren. Alle Apps teilen Ressourcen wie CPU und Arbeitsspeicher, was Geld sparen und die Betriebskomplexität reduzieren kann. Dieser Ansatz optimiert auch die Ressourcennutzung. Apps können Leerlaufressourcen aus einer anderen App verwenden, wenn sich Lademuster im Laufe der Zeit ändern.
Berücksichtigen Sie auch die Nachteile, z. B. ressourcenkonflikt. So können sich beispielsweise Spitzen bei der Verwendung oder Instabilität einer App auf die Leistung anderer Apps auswirken. Vorfälle in einer App können auch in andere Apps innerhalb der freigegebenen Umgebung übertragen werden, was sich auf die Sicherheit auswirken kann. Für kritische Anwendungen, die hohe Verfügbarkeit und Leistung erfordern, bieten isolierte Umgebungen wie App Service Environment V3 (ASE) dedizierte Ressourcen, allerdings mit höheren Kosten. Erwägen Sie die Verwendung gemeinsam genutzter Umgebungen für nicht kritische Workloads und isolierte Umgebungen für unternehmenskritische Anwendungen.
Höhere Isolation: Isolation hilft, Störungen zu vermeiden. Diese Strategie gilt für Sicherheit, Leistung und sogar Trennung von Entwicklungs-, Test- und Produktionsumgebungen.
App Service Environment bietet eine bessere Kontrolle über Sicherheit und Datenschutz, da jede App über eigene Sicherheitseinstellungen verfügen kann. Ihre Umgebung kann Sicherheitslücken enthalten, da die Isolierung den Angriffsradius begrenzt. Die Ressourcenkonflikte werden aus Sicht der Leistung minimiert. Isolation ermöglicht eine unabhängige Skalierung basierend auf spezifischer Nachfrage und individueller Kapazitätsplanung.
Als Nachteil ist dieser Ansatz teurer und erfordert operative Strenge.
zuverlässige Skalierungsstrategie
Eine gut definierte Skalierungsstrategie stellt sicher, dass Ihre Anwendung verschiedene Lasten verarbeiten kann, ohne die Leistung zu beeinträchtigen. Es gibt jedoch Kompromisse bei den Kosten. Skalierungsvorgänge nehmen Zeit in Anspruch. Wenn neue Ressourcen zugeordnet werden, muss die Anwendung ordnungsgemäß initialisiert werden, bevor sie Anforderungen effektiv verarbeiten kann. Sie können Ressourcen überdimensioniert bereitstellen ("Prewarm Instanzen"), um ein Sicherheitsnetz zu schaffen. Ohne diese zusätzliche Kapazität kann es während der Initialisierungsphase zu einer Verzögerung bei der Bereitstellung von Anforderungen kommen, was sich auf die Benutzererfahrung auswirkt. Automatische Skalierungsvorgänge werden möglicherweise früh genug ausgelöst, um eine ordnungsgemäße Ressourceninitialisierung rechtzeitig bereitzustellen, bevor Kunden die Ressourcen nutzen.
Als Nachteil kosten überprovisionierte Ressourcen mehr. Jede Instanz wird Ihnen pro Sekunde in Rechnung gestellt, einschließlich vorgewärmter Instanzen. Höhere Tiers enthalten Prewarm-Instanzen. Ermitteln Sie, ob die Funktionen mit teureren Stufen die Investition wert sind.
Erstellen von Redundanz
Redundanz bietet Resilienz, verursacht aber auch Kosten. Ziele auf Dienstebene für Ihre Workload bestimmen akzeptable Leistungsschwellenwerte. Es wird überflüssig, wenn Redundanz die SLO-Anforderungen überschreitet. Bewerten Sie, ob übermäßige Redundanz SLOs verbessert oder unnötige Komplexität hinzufügt.
Berücksichtigen Sie auch die Nachteile. Beispielsweise bietet Redundanz mit mehreren Regionen hohe Verfügbarkeit, fügt jedoch aufgrund von Datensynchronisierung, Failovermechanismen und kommunikation zwischen Regionen Komplexität und Kosten hinzu. Ermitteln Sie, ob Zonenredundanz Ihren SLOs entsprechen kann.
Azure-Richtlinien
Azure bietet einen umfassenden Satz integrierter Richtlinien im Zusammenhang mit App Service und seinen Abhängigkeiten. Eine Reihe von Azure-Richtlinien kann einige der vorherigen Empfehlungen überwachen. Sie können beispielsweise überprüfen, ob:
Richtige Netzwerksteuerelemente sind vorhanden. Sie können z. B. die Netzwerksegmentierung integrieren, indem Sie App Service in Azure Virtual Network über eine virtuelle Netzwerkeinfügung platzieren, um eine bessere Kontrolle über die Netzwerkkonfiguration zu haben. Die Anwendung verfügt nicht über öffentliche Endpunkte und stellt über private Endpunkte eine Verbindung mit Azure-Diensten bereit.
Identitätskontrollen sind vorhanden. Die Anwendung verwendet z. B. verwaltete Identitäten, um sich bei anderen Ressourcen zu authentifizieren. Die in App Service integrierte Authentifizierung (Easy Auth) verifiziert eingehende Anforderungen.
Features wie Remotedebugging und Standardauthentifizierung sind deaktiviert, um die Angriffsfläche zu reduzieren.
Für eine umfassende Governance überprüfen Sie die Integrierten Definitionen der Azure Policy und andere Richtlinien, die die Sicherheit der Compute-Schicht beeinflussen könnten.
Empfehlungen für Azure Advisor
Azure Advisor ist ein personalisierter Cloudberater, der Ihnen hilft, bewährte Methoden zur Optimierung Ihrer Azure-Bereitstellungen zu befolgen. Hier sind einige Empfehlungen, die Ihnen helfen können, die Zuverlässigkeit, Sicherheit, Kosteneffizienz, Leistung und operative Exzellenz Ihrer Webanwendungsinstanzen zu verbessern.
Nächste Schritte
Betrachten Sie die folgenden Artikel als Ressourcen, die die in diesem Artikel hervorgehobenen Empfehlungen veranschaulichen.
Verwenden Sie diese Referenzarchitekturen als Beispiele für die Anwendung dieser Empfehlungen auf eine Workload.
Wenn Sie noch nie eine Webanwendung bereitgestellt haben, lesen Sie Grundlegende Webanwendung.
Eine grundlegende Architektur als Ausgangspunkt für eine produktionsreife Bereitstellung finden Sie unter Baseline hochverfügbare zonenredundante Webanwendung.
Verwenden Sie die folgende Produktdokumentation, um Ihre Implementierungskompetenz zu erstellen: