Migrieren von JBoss EAP-Anwendungen zu JBoss EAP unter Azure App Service
In diesem Leitfaden erfahren Sie, was Sie beachten sollten, wenn Sie eine vorhandene JBoss EAP-Anwendung für die Ausführung unter JBoss EAP auf einer Azure App Service-Instanz migrieren möchten.
Vor der Migration
Führen Sie vor Beginn einer Migration die in den folgenden Abschnitten beschriebenen Schritte zur Bewertung und Bestandsermittlung aus, um eine erfolgreiche Migration zu gewährleisten.
Inventarisieren der Serverkapazität
Dokumentieren Sie die Hardware (Arbeitsspeicher, CPU, Datenträger) der aktuellen Produktionsserver und die durchschnittliche und maximale Anzahl von Anforderungen und die Ressourcennutzung. Sie benötigen diese Informationen unabhängig vom gewählten Migrationspfad. Dies ist beispielsweise hilfreich beim Auswählen der Größe von VMs in Ihrem Knotenpool, der Speichermenge für den Container und der Anzahl von benötigten CPU-Freigaben für den Container.
Es ist möglich, die Größe von Knotenpools in AKS zu ändern. Weitere Informationen finden Sie unter Ändern der Größe von Knotenpools in Azure Kubernetes Service (AKS).
Bestand: Alle Geheimnisse
Überprüfen Sie alle Eigenschaften und Konfigurationsdateien auf den Produktionsservern auf Geheimnisse und Kennwörter. Überprüfen Sie jboss-web.xml in Ihren WAR-Dateien. Unter Umständen finden Sie in Ihrer Anwendung auch Konfigurationsdateien mit Kennwörtern oder Anmeldeinformationen.
Es empfiehlt sich gegebenenfalls, diese Geheimnisse in Azure Key Vault zu speichern. Weitere Informationen finden Sie unter Grundlegende Konzepte von Azure Key Vault.
Sie können Key Vault-Geheimnisse auf Ihrer App Service-Instanz mit Key Vault-Verweisen nutzen. Mit Key Vault-Verweisen können Sie die Geheimnisse in Ihrer Anwendung verwenden, während sie im ruhenden Zustand geschützt und verschlüsselt sind. Weitere Informationen erhalten Sie unter Verwenden von Key Vault-Verweisen in App Service und Azure Functions.
Inventarisieren aller Zertifikate
Dokumentieren Sie alle Zertifikate, die für öffentliche SSL-Endpunkte verwendet werden. Sie können alle Zertifikate auf den Produktionsservern anzeigen, indem Sie den folgenden Befehl ausführen:
keytool -list -v -keystore <path to keystore>
Überprüfen, ob die unterstützte Java-Version richtig funktioniert
Für JBoss EAP auf Azure-VMs wird eine unterstützte Version von Java benötigt. Anleitungen dazu, welche Version des JDK verwendet werden soll, finden Sie der Red Hat-Dokumentation unter Unterstützte Konfigurationen.
Hinweis
Diese Überprüfung ist besonders wichtig, wenn Ihr aktueller Server auf einem nicht unterstützten JDK (z. B. Oracle JDK oder IBM OpenJ9) ausgeführt wird.
Melden Sie sich an Ihrem Produktionsserver an, und führen Sie den folgenden Befehl aus, um Ihre aktuelle Java-Version zu ermitteln:
java -version
Bestand: Externe Ressourcen
Externe Ressourcen, z. B. Datenquellen, JMS-Nachrichtenbroker und andere, werden per JNDI (Java Naming and Directory Interface) eingefügt. Für einige dieser Ressourcen ist unter Umständen eine Migration oder erneute Konfiguration erforderlich.
Innerhalb Ihrer Anwendung
Untersuchen Sie die Datei WEB-INF/jboss-web.xml und/oder WEB-INF/web.xml. Suchen Sie im <Context>
-Element nach <Resource>
-Elementen.
Datenquellen
Datenquellen sind JNDI-Ressourcen, für die das type
-Attribut auf javax.sql.DataSource
festgelegt ist. Dokumentieren Sie für jede Datenquelle die folgenden Informationen:
- Wie lautet der Name der Datenquelle?
- Wie ist der Verbindungspool konfiguriert?
- Wo ist die JAR-Datei mit den JDBC-Treibern zu finden?
Weitere Informationen finden Sie in der JBoss EAP-Dokumentation unter Informationen zu JBoss EAP-Datenquellen.
Alle anderen externen Ressourcen
Es würde den Rahmen dieses Leitfadens sprengen, jede mögliche externe Abhängigkeit zu dokumentieren. Ihr Team ist dafür verantwortlich, zu überprüfen, dass nach der Migration die Anforderungen aller externen Abhängigkeiten Ihrer Anwendung abgedeckt werden können.
Ermitteln, ob die Sitzungsreplikation verwendet wird
Falls Ihre Anwendung die Sitzungsreplikation verwendet, müssen Sie Ihre Anwendung ändern, um diese Abhängigkeit zu entfernen. In App Service ist es nicht zulässig, dass Instanzen direkt miteinander kommunizieren.
Ermitteln, ob und wie das Dateisystem verwendet wird
Für jegliche Nutzung des Dateisystems auf dem Anwendungsserver sind erneute Konfigurationen oder in selteneren Fällen auch Architekturänderungen erforderlich. Das Dateisystem kann von JBoss EAP-Modulen oder von Ihrem Anwendungscode genutzt werden. Unter Umständen kann es zu den Szenarien kommen, die in den folgenden Abschnitten beschrieben sind.
Schreibgeschützter statischer Inhalt
Falls mit Ihrer Anwendung derzeit statischer Inhalt bereitgestellt wird, benötigen Sie dafür einen anderen Speicherort. Sie können beispielsweise erwägen, statischen Inhalt in Azure Blob Storage zu verschieben und Azure CDN hinzuzufügen, um global eine sehr hohe Downloadgeschwindigkeit zu erzielen. Weitere Informationen finden Sie unter Hosten von statischen Websites in Azure Storage und Schnellstart: Integrieren eines Azure-Speicherkontos in Azure CDN.
Dynamisch veröffentlichter statischer Inhalt
Wenn Ihre Anwendung statischen Inhalt zulässt, der von Ihrer Anwendung hochgeladen bzw. produziert wird, nach der Erstellung aber unveränderlich ist, können Sie Azure Blob Storage und Azure CDN wie oben beschrieben nutzen. Hierbei können Sie auch eine Azure-Funktion zum Verarbeiten von Uploads und der CDN-Aktualisierung verwenden. Eine entsprechende Beispielimplementierung finden Sie unter Hochladen und CDN-Vorabladen von statischem Inhalt mit Azure Functions.
Dynamischer oder interner Inhalt
Für Dateien, für die von Ihrer Anwendung häufige Schreib- und Lesevorgänge durchgeführt werden (z. B. temporäre Datendateien), oder für statische Dateien, die nur für Ihre Anwendung sichtbar sind, können Sie lokalen Dateispeicher nutzen, der Ihrem App Service-Plan zugeordnet ist. Weitere Informationen finden Sie unter Betriebssystemfunktionen für Azure App Service und Grundlegendes zum Azure App Service-Dateisystem.
Ermitteln, ob für Ihre Anwendung geplante Aufträge benötigt werden
Für Azure App Service sollten geplante Aufträge, z. B. Quartz Scheduler-Aufgaben oder Unix-Cron-Aufträge, NICHT verwendet werden. Azure App Service hindert Sie nicht an der Bereitstellung einer Anwendung, die intern geplante Aufgaben enthält. Wenn Ihre Anwendung aber horizontal hochskaliert wird, wird derselbe geplante Auftrag unter Umständen mehrmals pro geplantem Zeitraum ausgeführt. Diese Situation kann unerwünschte Konsequenzen haben.
Inventarisieren Sie alle geplanten Aufgaben, die auf Produktionsservern ausgeführt werden, innerhalb oder außerhalb Ihres Anwendungscodes.
Ermitteln, ob eine Verbindung mit der lokalen Umgebung erforderlich ist
Wenn Ihre Anwendung auf Ihre lokalen Dienste zugreifen muss, müssen Sie einen der Konnektivitätsdienste von Azure bereitstellen. Weitere Informationen finden Sie unter Herstellen einer Verbindung zwischen einem lokalen Netzwerk und Azure. Alternativ müssen Sie Ihre Anwendung so umgestalten, dass öffentlich zugängliche APIs genutzt werden, die von Ihren lokalen Ressourcen verfügbar gemacht werden.
Ermitteln, ob JMS-Warteschlangen oder -Themen (Java Message Service) verwendet werden
Wenn Ihre Anwendung JMS-Warteschlangen oder -Themen nutzt, müssen diese zu einem extern gehosteten JMS-Server migriert werden. Azure Service Bus und das Advanced Message Queuing Protocol (AMQP) können bei Verwendung von JMS eine hervorragende Migrationsstrategie sein. Weitere Informationen finden Sie unter Verwenden von Java Message Service 1.1 mit Azure Service Bus Standard und AMQP 1.0.
Wenn beständige JMS-Speicher konfiguriert wurden, müssen Sie die zugehörige Konfiguration erfassen und nach dem Migrationsvorgang anwenden.
Ermitteln, ob JCA-Connectors genutzt werden
Falls Ihre Anwendung JCA-Connectors verwendet, sollten Sie sich vergewissern, dass der JCA-Connector in JBoss EAP genutzt werden kann. Wenn der JCA-Connector in JBoss EAP genutzt werden kann, müssen Sie die JAR-Dateien dem Serverklassenpfad hinzufügen und die erforderlichen Konfigurationsdateien in den JBoss EAP-Serververzeichnissen platzieren, damit der Connector verfügbar ist.
Ermitteln, ob JAAS verwendet wird
Wenn für Ihre Anwendung JAAS verwendet wird, müssen Sie erfassen, wie JAAS konfiguriert wird. Sofern hierfür eine Datenbank verwendet wird, können Sie sie in eine JAAS-Domäne unter JBoss EAP konvertieren. Falls es sich um eine benutzerdefinierte Implementierung handelt, müssen Sie überprüfen, ob sie unter JBoss EAP verwendet werden kann.
Ermitteln, ob Ihre Anwendung einen Ressourcenadapter verwendet
Wenn für Ihre Anwendung ein Ressourcenadapter (RA) benötigt wird, muss dieser mit JBoss EAP kompatibel sein. Ermitteln Sie, ob der RA für eine eigenständige Instanz von JBoss EAP richtig funktioniert, indem Sie ihn auf dem Server bereitstellen und entsprechend konfigurieren. Falls der RA richtig funktioniert, müssen Sie die JARs dem Serverklassenpfad der App Service-Instanz hinzufügen und die erforderlichen Konfigurationsdateien in den JBoss EAP-Serververzeichnissen ablegen, um die Verfügbarkeit sicherzustellen.
Ermitteln, ob Ihre Anwendung aus mehreren WAR-Dateien besteht
Besteht Ihre Anwendung aus mehreren WAR-Dateien, sollten Sie die einzelnen WAR-Dateien als separate Anwendungen behandeln und für jede Datei diese Anleitung ausführen.
Ermitteln, ob Ihre Anwendung als EAR-Datei gepackt ist
Ist Ihre Anwendung als EAR-Datei gepackt, untersuchen Sie die Datei application.xml, und erfassen Sie die Konfiguration.
Hinweis
Falls Sie Ihre Webanwendungen einzeln skalieren möchten, um eine bessere Nutzung Ihrer App Service-Ressourcen zu erzielen, sollten Sie die EAR-Datei in separate Webanwendungen unterteilen.
Ermitteln aller externen Prozesse und Daemons, die auf den Produktionsservern ausgeführt werden
Werden einige Ihrer Prozesse außerhalb des Anwendungsservers ausgeführt (z. B. die Überwachung von Daemons), müssen Sie sie beseitigen oder zu einem anderen Ort migrieren.
Durchführen von direkten Tests
Migrieren Sie Ihre Anwendung vor dem Erstellen von Containerimages zu den Versionen des JDK und von JBoss EAP, die Sie für App Service nutzen möchten. Führen Sie für die Anwendung gründliche Tests durch, um die Kompatibilität und Leistung sicherzustellen.
JBoss EAP in App Service: Hinweise zu Features
Beachten Sie bei Verwendung von JBoss EAP in App Service unbedingt die folgenden Hinweise.
JBoss EAP-Verwaltungskonsole: Die JBoss-Webkonsole wird in App Service nicht verfügbar gemacht. Stattdessen werden die Verwaltungs-APIs für Ihre Anwendung über das Azure-Portal bereitgestellt, und Sie sollten für die Bereitstellung die Azure CLI, das Azure Maven-Plug-In oder andere Azure-Entwicklungstools verwenden. Eine weitere Konfiguration von JBoss-Ressourcen kann mithilfe der JBoss CLI während des Anwendungsstarts erreicht werden.
Transaktionen: Die Transaktions-API wird unterstützt und es gibt Unterstützung für die automatische Transaktionswiederherstellung. Weitere Informationen finden Sie in der Red Hat-Dokumentation unter Verwalten von Transaktionen unter JBoss EAP.
Modus „Verwaltete Domänen“: In einer Produktionsumgebung mit mehreren Servern werden im Modus „Verwaltete Domänen“ in JBoss EAP zentralisierte verwaltete Funktionen bereitgestellt. Bei Verwendung von JBoss EAP in App Service übernimmt aber die App Service-Plattform die Zuständigkeit für die Konfiguration und Verwaltung Ihrer Serverinstanzen. App Service macht den verwalteten Domänen-Modus von JBoss EAP überflüssig. Der Domänenmodus ist eine gute Wahl für VM-basierte Bereitstellungen mit mehreren Servern. Weitere Informationen finden Sie in der Red Hat-Dokumentation unter Informationen zu verwalteten Domänen.
Server-zu-Server-Clustering: Ab dem 28. September 2023 ist die gruppierte Bereitstellung von JBoss EAP allgemein verfügbar. Dieser Support bedeutet, dass Sie die folgenden Funktionen nicht mehr aus Ihren Anwendungen entfernen müssen, bevor Sie sie im App Service bereitstellen können:
- Statusbasierte Session Beans.
- Verteilte Transaktionen.
- Ähnliche Funktionen, die eine Kommunikation von Instanz zu Instanz oder Hochverfügbarkeit erfordern.
Weitere Informationen finden Sie in der Veröffentlichungsankündigung und im Abschnitt "Clustering" unter "Konfigurieren einer Java-App für Azure-App Dienst".
Migration
Red Hat Migration Toolkit for Apps
Das Red Hat Migration Toolkit for Applications ist eine kostenlose Erweiterung für Visual Studio Code. Diese Erweiterung analysiert Ihren Anwendungscode und Ihre Konfiguration, um Empfehlungen für die Migration von der lokalen Bereitstellung in die Cloud bereitzustellen. Weitere Informationen finden Sie in der Übersicht über das Migrations-Toolkit für Applikationen.
Die Inhalte dieser Anleitung helfen Ihnen bei den anderen Komponenten der Migration, wie z.B. der Auswahl des richtigen App Service-Plan-Typs, der Externalisierung Ihres Sitzungsstatus und der Verwendung von Azure zur Verwaltung Ihrer EAP Instanzen anstelle der JBoss Management Schnittstelle.
Bereitstellen von Azure App Service für die JBoss EAP-Runtime
Verwenden Sie die folgenden Befehle, um eine Ressourcengruppe und einen Azure App Service-Plan zu erstellen. Nachdem der App Service-Plan erstellt wurde, wird mit der JBoss EAP-Runtime ein Linux-Web-App-Plan erstellt. Sie können JBoss EAP-Websites nur unter den App Service-Plantarifen „PremiumV3“ und „IsolatedV2“ erstellen.
Vergewissern Sie sich, dass die angegebenen Umgebungsvariablen über die richtigen Werte verfügen.
Hinweis
Bei „PremiumV3“ und „IsolatedV2“ können Preise für reservierte Instanzen angewendet werden, und dies kann für Sie zu einer Reduzierung der Kosten führen. Weitere Informationen zu App Service-Plantarifen und Preisen für reservierte Instanzen finden Sie unter App Service-Preise.
az group create --resource-group $resourceGroup --location eastus
az acr create --resource-group $resourceGroup --name $acrName --sku Standard
az appservice plan create \
--resource-group $resourceGroup \
--name $jbossAppService \
--is-linux \
--sku P1V2
az webapp create \
--resource-group $resourceGroup \
--name $jbossWebApp \
--plan $jbossAppServicePlan \
--runtime "JBOSSEAP|7-java8"
# Or use "JBOSSEAP|7-java11" if you're using Java 11
Erstellen der Anwendung
Führen Sie den Buildvorgang für die Anwendung mit dem folgenden Maven-Befehl durch.
mvn clean install -DskipTests
Bereitstellen der Anwendung
Wenn Ihre Anwendung über eine Maven-POM-Datei erstellt wurde, sollten Sie das Web-App-Plug-In für Maven verwenden, um die Web-App zu erstellen und Ihre Anwendung bereitzustellen. Weitere Informationen finden Sie unter Schnellstart: Erstellen Sie eine Java App auf Azure App Service.
Für die Automatisierung der Bereitstellung von JBoss EAP-Anwendungen können Sie die Azure Pipelines-Aufgabe für Web-Apps oder die GitHub-Aktion für die Bereitstellung für Azure-Web-Apps verwenden.
Einrichten von Datenquellen
Das Registrieren einer Datenquelle in JBoss EAP umfasst drei Hauptschritte: Hochladen des JDBC-Treibers, Hinzufügen des JDBC-Treibers als Modul und Registrieren des Moduls. Weitere Informationen finden Sie in der JBoss EAP-Dokumentation im Artikel zur Datenquellenverwaltung. App Service ist ein zustandsloser Hostingdienst, weshalb die Konfigurationsbefehle zum Hinzufügen und Registrieren des Datenquellenmoduls als Skript geschrieben und beim Start des Containers angewendet werden müssen.
Führen Sie die folgenden Schritte aus, um Datenquellen einzurichten.
Rufen Sie den JDBC-Treiber Ihrer Datenbank ab.
Erstellen Sie eine XML-Moduldefinitionsdatei für den JDBC-Treiber. Das folgende Beispiel zeigt eine Moduldefinition für PostgreSQL. Achten Sie darauf, dass Sie den Wert
resource-root path
durch den Pfad zum von Ihnen verwendeten JDBC-Treiber ersetzen.<?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="org.postgres"> <resources> <!-- ***** IMPORTANT: REPLACE THIS PLACEHOLDER *******--> <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
Fügen Sie Ihre JBoss-CLI-Befehle in eine Datei mit dem Namen jboss-cli-commands.cli ein. Die JBoss-Befehle müssen das Modul hinzufügen und es als Datenquelle registrieren. Das folgende Beispiel zeigt die JBoss-CLI-Befehle für PostgreSQL.
module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
Erstellen Sie ein Startskript mit dem Namen startup_script.sh, über das die JBoss-CLI-Befehle aufgerufen werden. Das unten angegebene Beispiel veranschaulicht, wie Sie Ihre Datei jboss-cli-commands.cli aufrufen. Später konfigurieren Sie dann App Service für die Ausführung dieses Skripts, wenn die Instanz gestartet wird.
$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cli
Laden Sie mit einem FTP-Client Ihrer Wahl den JDBC-Treiber, jboss-cli-commands.cli, startup_script.sh und die Moduldefinition in /site/deployments/tools/ hoch.
Konfigurieren Sie Ihre Site so, dass startup_script.sh ausgeführt wird, wenn der Container gestartet wird. Navigieren Sie im Azure-Portal zu Konfiguration > Allgemeine Einstellungen > Startbefehl. Legen Sie das Feld für den Startbefehl auf /home/site/deployments/tools/startup_script.sh fest, und wählen Sie anschließend Speichern aus.
Starten Sie die Web-App neu, um zu erreichen, dass sie das Konfigurationsskript ausführt.
Aktualisieren Sie die Konfiguration der JTA-Datenquelle für Ihre Anwendung. Öffnen Sie die Datei src/main/resources/META-INF/persistence.xml für Ihre Anwendung und suchen Sie das Element
<jta-data-source>
. Ersetzen Sie seinen Inhalt wie folgt:<jta-data-source>java:jboss/datasources/postgresDS</jta-data-source>
Erstellen der Anwendung
Führen Sie den Buildvorgang für die Anwendung mit dem folgenden Maven-Befehl durch.
mvn clean install -DskipTests
Bereitstellen der Anwendung
Wenn Ihre Anwendung über eine Maven-POM-Datei erstellt wurde, sollten Sie das Web-App-Plug-In für Maven verwenden, um die Web-App zu erstellen und Ihre Anwendung bereitzustellen. Weitere Informationen finden Sie unter Schnellstart: Erstellen Sie eine Java App auf Azure App Service.
Für die Automatisierung der Bereitstellung von JBoss EAP-Anwendungen können Sie die Azure Pipelines-Aufgabe für Web-Apps oder die GitHub-Aktion für die Bereitstellung für Azure-Web-Apps verwenden.
Nach der Migration
Nachdem Sie Ihre Anwendung nun zu Azure App Service migriert haben, sollten Sie sich vergewissern, dass sie wie erwartet funktioniert. Anschließend können Sie sich dann über unsere Empfehlungen informieren, mit denen Sie Ihre Anwendung cloudnativer gestalten können.
Empfehlungen
Wenn Sie sich für die Verwendung des Verzeichnisses /home zum Speichern der Dateien entschieden haben, können Sie erwägen, dafür die Umstellung auf Azure Storage durchzuführen. Weitere Informationen finden Sie unter Konfigurieren von Azure Files in einem Windows-Container in App Service.
Wenn Sie über eine Konfiguration im Verzeichnis /home verfügen, die Verbindungszeichenfolgen, SSL-Schlüssel und andere geheime Informationen enthält, sollten Sie, wenn möglich, Azure Key Vault und/oder Parameterinjektion mit Anwendungseinstellungen verwenden. Weitere Informationen finden Sie unter Verwenden von Key Vault-Verweisen für App Service und Azure Functions und Konfigurieren einer App Service-App im Azure-Portal.
Erwägen Sie die Verwendung von Bereitstellungsslots, um zuverlässige Bereitstellungen ohne jegliche Downtime zu erzielen. Weitere Informationen finden Sie unter Einrichten von Stagingumgebungen in Azure App Service.
Entwerfen und implementieren Sie eine DevOps-Strategie. Sie können Bereitstellungen automatisieren und mit Azure Pipelines testen, um die Zuverlässigkeit sicherzustellen, während gleichzeitig die Entwicklungsgeschwindigkeit erhöht wird. Weitere Informationen finden Sie im Artikel zum Erstellen und Bereitstellen einer Java-Web-App. Bei Verwendung von Bereitstellungsslots können Sie nicht nur die Bereitstellung für einen Slot automatisieren, sondern auch den anschließenden Slotaustausch. Weitere Informationen finden Sie im Abschnitt Bereitstellen eines Slots des Artikels Bereitstellen einer Azure-Web-App (Linux).
Entwerfen und implementieren Sie eine Strategie für Geschäftskontinuität und Notfallwiederherstellung. Bei unternehmenskritischen Anwendungen sollten Sie erwägen, eine Bereitstellungsarchitektur mit mehreren Regionen zu verwenden. Weitere Informationen finden Sie unter Hochverfügbare Webanwendungen für mehrere Regionen.