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.
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, mit der Sie sich auf die Anwendungsentwicklung konzentrieren können. Das Web-Apps-Feature von App Service führt Ihre Apps im Kontext eines App Service-Plans aus. Dieser Plan bestimmt die Ressourcen, das Betriebssystem, die Region und das Preismodell (SKU), die zum Hosten Ihrer App verwendet werden.
In diesem Artikel wird davon ausgegangen, dass Sie als Architekt die Berechnungsentscheidungsstruktur überprüft und App Service als Berechnung für Ihre Workload ausgewählt haben. Die Anleitung in diesem Artikel enthält Architekturempfehlungen, die den Grundsätzen der Well-Architected Rahmenpfeilerzugeordnet sind.
Technologieumfang
Diese Überprüfung konzentriert sich auf die miteinander verbundenen Entscheidungen für die folgenden Azure-Ressourcen:
- App Service-Pläne
- Web Apps
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.
Reliability
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ässigkeitsdesignprinzipien bieten eine allgemeine Designstrategie, die für einzelne Komponenten, Systemflüsse und das gesamte System angewendet wird.
Checkliste für die Arbeitsauslastungsgestaltung
Starten Sie Ihre Entwurfsstrategie basierend auf der Checkliste zur Entwurfsüberprüfung in Bezug auf „Zuverlässigkeit“. 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 wichtig. 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 welche 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. Wenn Sie eine große Anwendung in einem einzigen Plan platzieren, kann dies zu Arbeitsspeicher- oder CPU-Problemen führen, die sich auf die Zuverlässigkeit auswirken.
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 Fehler antizipieren: Planen Sie Strategien zur Risikominderung für potenzielle Fehler. Die folgende Tabelle enthält Beispiele für fehlermodusanalyse.
Failure Mitigation 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 Wiederholungsmuster und das Schaltkreistrennmuster. Überwachen Sie die externen Abhängigkeiten, und legen Sie entsprechende Timeouts fest. Fehlschlag aufgrund von Datenverkehr, der zu fehlerhaften 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.
Redundanz erstellen: Erstellen Sie Redundanz in der Anwendung und unterstützende 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 ein Ausfall einer gesamten Region vorliegt.
Erstellen Sie ähnliche Redundanzstufen in abhängigen Diensten. Zum Beispiel binden sich Anwendungsinstanzen an Blob-Storage. Erwägen Sie die Konfiguration des zugeordneten Speicherkontos mit zonenredundanten Speicher, wenn eine Anwendung eine zonenredundante Bereitstellung verwendet.
Verwenden Sie mehrere Instanzen: Ein unmittelbarer Ausfallpunkt entsteht, wenn Sie Ihre App auf nur einer Instanz ausführen. 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. Ihr App-Code sollte in der Lage sein, mehrere Instanzen ohne Synchronisierungsprobleme beim Lesen aus Datenquellen oder Schreiben in Datenquellen zu behandeln.
Stellen Sie Redundanz in Netzwerkkomponenten sicher. Verwenden Sie beispielsweise zonenredundante IP-Adressen und Lastenausgleichsgeräte.
Haben Sie eine zuverlässige Skalierungsstrategie: Unerwartetes Laden für eine Anwendung kann dazu führen, dass sie unzuverlässig ist. Berücksichtigen Sie den richtigen Skalierungsansatz basierend auf Ihren Workloadmerkmalen. Mit horizontaler Skalierung oder Skalierung können Sie weitere Instanzen hinzufügen, um die Last zu verteilen. Vertikale Skalierung oder Skalierung erhöht die Kapazität einer vorhandenen Instanz, z. B. CPU oder Arbeitsspeicher. Seien Sie vorsichtig bei der Überbereitstellung, da durch das Hinzufügen unnötiger Instanzen die 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. Wählen Sie den automatischen oder automatischen Skalierungsansatz über den manuellen Ansatz aus. Behalten Sie während der Skalierungsvorgänge immer einen Puffer mit zusätzlicher Kapazität bei, um Leistungsbeeinträchtigungen zu verhindern.
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, wenn möglich, zustandslose 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 zur Lösung dieses Problems besteht darin, identische Stamps auszuführen, wobei jeder Stamp seine eigene Instanz und seinen eigenen Endpunkt des App Service-Plans bereitstellt. 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 mit einer Zone und Azure Front Door für Bereitstellungen mit mehreren Regionen. Dieser Ansatz eignet sich ideal für unternehmenskritische Anwendungen, wenn zuverlässigkeit von entscheidender Bedeutung ist. Weitere Informationen finden Sie unter Unternehmenskritische Baseline mit App Service.
Planen Sie Ihre 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 Entwurfsmuster, um eine angemessene Degradierung bei vorübergehenden Fehlern zu gewährleisten, beispielsweise bei Netzwerkkonnektivitätsproblemen und großangelegten Ereignissen wie regionalen Ausfällen. 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 Architekturentwurfsmuster, die Zuverlässigkeit unterstützen.
Durchführen von Zuverlässigkeitstests: Führen Sie Auslastungstests durch, um die Zuverlässigkeit und Leistung Ihrer Anwendung beim Laden 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. Weitere Informationen finden Sie in der Fehler- und Aktionsbibliothek von Azure Chaos Studio.
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 App Service-Grenzwerte.
Nutzen Sie das Zustandsprüfung-Feature, um nicht reagierende Worker zu identifizieren: App Service verfügt über integrierte Funktionalitäten, die in regelmäßigen Abständen einen bestimmten Pfad Ihrer Web-Anwendung anpingen. Die Plattform pingt diesen Pfad, um zu bestimmen, ob Ihre Anwendung fehlerfrei ist und auf Anforderungen reagiert.
Wenn Ihre Website auf mehrere Instanzen skaliert wird, schließt App Service fehlerhafte Instanzen von der Bearbeitung von Anfragen aus. Dieser Prozess verbessert Ihre Gesamtverfügbarkeit.
Der Gesundheitsprüfungspfad Ihrer App sollte die wesentlichen Komponenten Ihrer Anwendung überprüfen, z. B. die Datenbank, der Cache oder der Messagingdienst. Mit diesem Schritt wird sichergestellt, dass der vom Integritätsprüfungspfad zurückgegebene Status ein genaues Bild der Gesamtintegrität Ihrer Anwendung ist.
Verwenden Sie die Funktion zum automatischen Heilen: Manchmal kann ihre Anwendung unerwartete Verhaltensweisen aufweisen, die ein einfacher Neustart lösen kann. Verwenden Sie die Funktion zum automatischen Heilen, um eine Bedingung zu definieren, die die automatische Heilung auslöst, und die Aktion , die automatisch heilen, wenn diese Bedingung erfüllt wird. Weitere Informationen finden Sie in der Übersicht über die App-Dienstdiagnose.
Bericht zur Ausfallsicherheit von App-Diensten: Informationen zur Überprüfung maßgeschneiderter Empfehlungen für bewährte Methoden finden Sie in der Übersicht über die App-Dienstdiagnose.
Konfigurationsempfehlungen
Recommendation | Benefit |
---|---|
(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 über dieses Feature verfügen. |
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-Apps) Erwägen Sie, die Affinitätsfunktion für das Anwendungsanforderungsrouting (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. Eine zustandslose App Service-Instanz 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. |
(App-Dienst) Verwenden Sie die Sicherungs- und Wiederherstellungsfunktionen von App Service nicht für verknüpfte Datenbanken. | Die Verwendung nativer Sicherungs- und Wiederherstellungstools für verknüpfte Datenbanken bietet eine zuverlässigere und tunablere Wiederherstellungslösung für den Zustandsspeicher Ihrer Web-App. Das Sichern verknüpfter Datenbanken über App Service ist veraltet. |
(Web-Apps) Definieren Sie automatische Heilungsregeln basierend auf der 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-Apps) Aktivieren Sie das Feature "Integritätsprüfung" , 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. |
Security
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.
Checkliste für die Arbeitsauslastungsgestaltung
Starten Sie Ihre Designstrategie basierend auf der -Designüberprüfungsprüfliste für Sicherheit und identifizieren Sie Sicherheitsrisiken und Kontrollen, um die Sicherheitslage zu verbessern. Erweitern Sie die Strategie, um bei Bedarf weitere Ansätze einzuschließen.
Überprüfen sie die Sicherheitsgrundwerte: Um den Sicherheitsstatus Ihrer Anwendung zu verbessern, die in einem App Service-Plan gehostet wird, überprüfen Sie die Sicherheitsgrundwerte für App Service.
Verwenden Sie die neueste 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.
Erstellen Sie Segmentierung durch Isolationsgrenzen, um Verstöße einzudämten: Wenden Sie die Identitätssegmentierung an. 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. Integrieren Sie App Service-Apps in ein virtuelles Azure-Netzwerk zur Isolation und definieren Sie Netzwerksicherheitsgruppen (NSGs), um Datenverkehr zu filtern.
App Service-Pläne stellen die App-Dienstumgebungsebene bereit, die einen hohen Grad an Isolation bietet. Mit der App Service-Umgebung erhalten Sie dedizierte Compute- und Netzwerkfunktionen.
Anwenden von Zugriffssteuerelementen auf Identitäten: Beschränken Sie den inneren Zugriff auf die Web-App und 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, um den ausgehenden Datenverkehr zu steuern. Verwenden Sie private Endpunkte, um eingehenden Datenverkehr zu steuern, den Zugriff auf Ihre App Service-Instanz in Ihrem virtuellen Netzwerk einzuschränken und den öffentlichen Internetzugriff zu deaktivieren. Weitere Informationen finden Sie unter Netzwerkrouting.
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 tragen dazu bei, Datenexfiltration zu verhindern.
Weitere Informationen finden Sie unter App Service-Netzwerkfeatures.
Daten verschlüsseln: Schützen Von Daten während der Übertragung mithilfe von Tls (End-to-End Transport Layer Security). Verwenden Sie Ihre vom Kunden verwalteten Schlüssel für die vollständige Verschlüsselung ruhender Daten.
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 Ihre App Service-Instanzen weisen einen Standarddomänennamen auf. Verwenden Sie eine benutzerdefinierte Domäne, und sichern Sie diese Domäne mithilfe von Zertifikaten.
End-to-End-TLS-Verschlüsselung: Die 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 der 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 Sie Konfigurationen mithilfe von Azure-Richtlinien. Weitere Informationen finden Sie unter Azure-Richtlinien.
Implementieren sie restriktive richtlinien für die ursprungsübergreifende Ressourcenfreigabe (CORS): 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 mithilfe integrierter Azure-Richtliniendefinitionen.
Verwaltete Identitäten verwenden: Aktivieren Sie verwaltete Identitäten für Ihre App Service-Instanz, um sicherer auf andere Azure-Dienste zuzugreifen, ohne Anmeldeinformationen verwalten zu müssen.
Schützen sie geheime Anwendungsgeheimnisse: Sie müssen vertrauliche Informationen verarbeiten, z. B. API-Schlüssel oder Authentifizierungstoken. 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.
Aktivieren Sie Ressourcenprotokolle für Ihre Anwendung: Aktivieren Sie Ressourcenprotokolle für Ihre Anwendung, um umfassende Aktivitätspfade zu erstellen, die wertvolle Daten bei Untersuchungen bereitstellen, die Sicherheitsvorfällen folgen. Weitere Informationen finden Sie unter Azure Monitor-Ressourcenprotokolle.
Berücksichtigen Sie die Protokollierung als Teil Ihres Bedrohungsmodellierungsprozesses, wenn Sie Bedrohungen bewerten.
Konfigurationsempfehlungen
Recommendation | Benefit |
---|---|
(Web-Apps) Weisen Sie der Web-App verwaltete Identitäten zu. 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-Apps) Konfigurieren sie benutzerdefinierte Domänen für Anwendungen. Deaktivieren Sie HTTP, und akzeptieren Sie nur HTTPS-Anforderungen. |
Benutzerdefinierte Domänen ermöglichen die sichere Kommunikation über HTTPS mithilfe des TLS-Protokolls, wodurch der Schutz vertraulicher Daten gewährleistet und die Benutzervertrauensstellung entsteht. |
(Web-Apps) Bewerten Sie, ob die integrierte Authentifizierung des App-Diensts 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-Apps) 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-Apps) 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 Anforderungen zu straffen. - 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-Apps) Verwenden Sie Key Vault-Verweise immer als App-Einstellungen. |
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
Bei der Kostenoptimierung geht es darum, Ausgabenmuster zu erkennen, Investitionen in kritischen Bereichen zu priorisieren und in anderen Bereichen zu optimieren, um das Budget der Organisation einzuhalten und gleichzeitig die geschäftlichen Anforderungen zu erfüllen.
Die Designprinzipien für die Kostenoptimierung bieten eine allgemeine Designstrategie, um diese Ziele zu erreichen und bei Bedarf im technischen Design im Zusammenhang mit Web Apps und seiner Umgebung Kompromisse zu erzielen.
Checkliste für die Arbeitsauslastungsgestaltung
Erstellen Sie Ihre Entwurfsstrategie basierend auf der Checkliste zur Entwurfsüberprüfung in Bezug auf „Kostenoptimierung“ für Investitionen. Optimieren Sie das Design so, dass die Arbeitsbelastung mit dem Budget übereinstimmt, das dafür zugewiesen ist. Ihr Design sollte die richtigen Azure-Funktionen verwenden, Investitionen überwachen und Möglichkeiten zur Optimierung im Laufe der Zeit finden.
Schätzen Sie die Anfangskosten: Verwenden Sie als Teil 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 Computeoptionen.
Überwachen Sie das Kostenmodell kontinuierlich, um Ausgaben nachzuverfolgen.
Bewerten Sie die rabattierten Optionen: Höhere Ebenen umfassen dedizierte Computeinstanzen. 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.
Nutzungszähler verstehen: Azure berechnet einen sekundengenauen Stundensatz, der auf der Preis-Tier Ihres App Service-Plans basiert. Für jede skalierte Instanz in Ihrem Plan fallen Belastungen an, basierend auf der Zeit, die Sie der VM-Instanz zuweisen. Achten Sie auf nicht optimal genutzte Rechenressourcen, die Ihre Kosten aufgrund der Überallokation durch eine suboptimale SKU-Auswahl oder schlecht konfigurierte Skalierungseinstellungen erhöhen könnten.
Zusätzliche App Service-Features, z. B. benutzerdefinierte Domänenregistrierung und benutzerdefinierte Zertifikate, können Kosten hinzufügen. Andere Ressourcen wie z. B. virtuelle Netzwerke, die Ihre Lösung isolieren, oder Key Vaults, die Workload-Secrets schützen, können ebenfalls in Ihre App Service-Ressourcen integriert werden und zusätzliche Kosten verursachen. Weitere Informationen finden Sie unter Grundlegendes zum vollständigen Abrechnungsmodell für App Service.
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".
Evaluieren Sie die Auswirkungen Ihrer Skalierungsstrategie auf die Kosten: Sie müssen für das horizontale Skalieren und für das Skalieren nach innen richtig entwerfen, testen und 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 eine 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 sie die Kosten für die Umgebung: Erwägen Sie die Verwendung der einfachen oder kostenlosen Ebene zum Ausführen von Vorproduktionsumgebungen. Diese Ebenen sind von geringer Leistung und kostengünstig. Wenn Sie die standardebene oder die freie Ebene 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 dem "Backends für Frontends-Muster" und dem "Gateway-Aggregationsmuster", um die Anzahl der Anforderungen zu minimieren und Kosten zu reduzieren.
Regelmäßige Überprüfung der datenbezogenen Kosten: Erweiterte Datenaufbewahrungszeiträume oder teure Speicherebenen können zu hohen Speicherkosten führen. Weitere Ausgaben können sich aufgrund der Bandbreitennutzung und einer 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 sie die Bereitstellungskosten: Nutzen Sie die Vorteile von Bereitstellungsplätzen, um Die 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 auf die vorhandenen Instanzen und neue Instanzen auswirken können. Stellen Sie sicher, dass Sie Änderungen gründlich testen. Weitere Informationen zur betrieblichen Anleitung finden Sie unter Operational Excellence.
Konfigurationsempfehlungen
Recommendation | Benefit |
---|---|
(App-Dienst) Wählen Sie für niedrigere Umgebungen kostenlose Ebenen oder grundlegende Ebenen aus. Wir empfehlen diese Stufen für die experimentelle Verwendung. Entfernen Sie die Ebenen, wenn Sie sie nicht mehr benötigen. | Die kostenlosen Ebenen und die Basisebenen 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 Entwicklungs-/Testplänen. - Azure-Reservierungen und Azure-Einsparpläne für dedizierte Rechenressourcen, die Sie in der Premium v3-Stufe und der 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-Apps) Überwachen Sie die Kosten , die app Service-Ressourcen verursachen. 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 der Operational Excellence bieten eine allgemeine Designstrategie, um diese Ziele für die betrieblichen Anforderungen der Arbeitsauslastung zu erreichen.
Checkliste für die Arbeitsauslastungsgestaltung
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 die Funktion 'Tausch mit Vorschau' für einen mehrphasigen Tausch. Swap mit Vorschau bietet Ihnen die Möglichkeit, die App in Ihren Staging-Slots gegen Ihre Produktionseinstellungen zu testen und die App aufzuwärmen. Nachdem Sie Ihre Tests durchgeführt und alle erforderlichen Pfade aufgewärmt haben, können Sie den Tausch abschließen. Dann empfängt die App den Produktionsdatenverkehr, 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. Es ist in Apache JMeter integriert, 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 kontinuierliche Integrations- und fortlaufende Bereitstellungspipelinen mit Azure DevOps- oder GitHub-Aktionen, um Bereitstellungen zu automatisieren und den manuellen Aufwand zu reduzieren. Weitere Informationen finden Sie unter Fortlaufende Bereitstellung für App Service.
Bereitstellen unveränderlicher Einheiten: Implementieren Sie das Deployment Stamps-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. Berücksichtigen Sie benutzerdefinierte Container für Ihre App Service-Web-App.
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. Weitere Informationen finden Sie unter Unternehmenskritische Baseline mit App Service.
Verwenden Sie eine Infrastructure-as-Code (IaC)-Technologie wie z. B. Bicep, um Einheiten mit Reproduzierbarkeit und Konsistenz auszustempeln.
Sichern Sie Produktionsumgebungen: Erstellen Sie separate App Service Pläne, um Produktions- und Vorproduktionsumgebungen auszuführen. 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.
Recommendation | Benefit |
---|---|
(Web-Apps) Überwachen Sie den Status Ihrer Instanzen , und aktivieren Sie Instanzintegritätssonden. 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-Apps) Aktivieren Sie Diagnoseprotokolle für die Anwendung und die Instanz. 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-Apps) Nutzen Sie die von App Service verwalteten Zertifikate , um die Zertifizierungsverwaltung auf Azure zu entladen. | 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. Wenn Sie die zuvor bereitgestellte Produktionsversion in einem Steckplatz beibehalten, können Sie zum letzten bekannten guten Zustand zurückkehren, wenn Sie nach der Bereitstellung ein Problem erkennen. Ermöglicht Es Ihnen, sicherzustellen, dass alle Instanzen aufgewärmet werden, bevor sie in die Produktion umgetauscht werden, um vorübergehende Bedenken bei der Bereitstellung von Kaltstarts zu vermeiden. |
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.
Checkliste für die Arbeitsauslastungsgestaltung
Starten Sie Ihre Designstrategie basierend auf der Prüfliste für die Entwurfsüberprüfung für die Leistungseffizienz. Definieren Sie einen Basisplan, der auf wichtigen Leistungsindikatoren für Web Apps basiert.
Identifizieren und Überwachen von Leistungsindikatoren: Legen Sie Ziele für die wichtigsten Indikatoren für die Anwendung fest, z. B. das Volumen eingehender Anforderungen, 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, 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 Ebene aus: Verwenden Sie dedizierte Rechenleistung für Produktionsworkloads. Premium v3-Ebenen bieten größere SKUs mit erhöhter Arbeitsspeicher- und CPU-Kapazität, mehr Instanzen und mehr Funktionen, z. B. Zonenredundanz. Weitere Informationen finden Sie unter Premium v3 Preisniveau.
Optimieren Sie Ihre Skalierungsstrategie: Verwenden Sie nach Möglichkeit die automatische Skalierung , anstatt die Anzahl der Instanzen manuell anzupassen, wenn sich die Anwendungsladevorgang ä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 des anfänglichen Setups priorisieren, verwenden Sie eine Option für die automatische Skalierung, für die nur Grenzwerte festgelegt werden müssen, ohne Regeln definieren zu müssen.
Verfügen Sie über ausreichende Ressourcen, um eine optimale Leistung zu gewährleisten. 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.
Zwischenspeichern verwenden: 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 Caching.
Überprüfen Sie die Leistungs-Antipattern: Vermeiden Sie die typischen Antipattern, um sicherzustellen, dass die Webanwendung gemäß Ihren Geschäftlichen Anforderungen ausgeführt und skaliert wird. In der folgenden Tabelle werden einige Antipattern beschrieben, die der App-Dienst korrigiert.
Antipattern Description Ausgelastetes 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.
Konfigurationsempfehlungen
Recommendation | Benefit |
---|---|
(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. |
Tradeoffs
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: Verlagern Sie mehrere Apps innerhalb desselben App Service-Plans, um 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 andere Apps innerhalb der freigegebenen Umgebung durchdringen, 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 dedizierte Ressourcen, aber zu 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 trägt dazu bei, Störungen zu verhindern. 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 trägt dazu bei, 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 überdimensionieren (oder 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 Serviceebene (Service Level Objectives, SLOs) 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. So bietet z. B. Redundanz mit mehreren Regionen hohe Verfügbarkeit, fügt jedoch aufgrund von Datensynchronisierung, Failovermechanismen und interregionaler Kommunikation 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. Einige der vorstehenden Empfehlungen können über Azure-Richtlinie überwacht werden. 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 integrierte App-Dienstauthentifizierung (oder Easy Auth) überprüft eingehende Anforderungen.
Features wie Remotedebugging und Standardauthentifizierung werden deaktiviert, um die Angriffsfläche zu reduzieren.
Für eine umfassende Governance überprüfen Sie die integrierten Azure-Richtliniendefinitionen für App Service und andere Richtlinien, die sich auf die Sicherheit der Computeebene auswirken können.
Empfehlungen für Azure Advisor
Azure Advisor ist ein personalisierter Cloudberater, der Ihnen hilft, bewährte Methoden zur Optimierung Ihrer Azure-Bereitstellungen zu befolgen.
Weitere Informationen finden Sie unter Azure Advisor.
Beispielarchitektur
Grundlegende Architektur, die die wichtigsten Empfehlungen veranschaulicht: Basisarchitektur des App Service.
Nächste Schritte
Betrachten Sie die folgenden Artikel als Ressourcen, die die in diesem Artikel hervorgehobenen Empfehlungen veranschaulichen.
Verwenden Sie die folgenden Referenzarchitekturen als Beispiele für die Anwendung dieser Empfehlungen auf eine Workload.
- Wenn Sie keine Web-App bereitgestellt haben, lesen Sie die Standardwebanwendung.
- 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: