Übung: Bereitstellen der Spring Boot Redis-Anwendung in Azure

Abgeschlossen

Da nun alles lokal ausgeführt wird, können Sie die Anwendung in der Cloud bereitstellen und ihr Verhalten in der Produktion testen.

Erstellen einer Azure App Service-Instanz

Erstellen Sie eine Azure App Service-Instanz, um die Anwendung zu hosten. Verwenden Sie den folgenden Azure CLI-Code zum Erstellen eines einfachen App Service-Plans unter Linux, und fügen Sie dann eine Instanz von Java on App Service zu diesem Plan hinzu.

Um Java 11 oder Java 17 anstelle von Java 8 zu verwenden, nutzen Sie "JAVA|<version>-java<version>" anstelle von "JAVA|8-jre8" als Webanwendungsruntime.

az appservice plan create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_REDIS_NAME-webapp-plan \
    --is-linux \
    --sku B1

az webapp create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_REDIS_NAME-webapp \
    --runtime "JAVA|8-jre8" \
    --plan $AZ_REDIS_NAME-webapp-plan

Hinweis

Im vorherigen Code wird die Variable $AZ_REDIS_NAME wiederverwendet, um den App Service-Plan und die App Service-Instanz zu benennen. Sie können jedoch verschiedene Namen verwenden. Der Name der App Service-Instanz ist Teil der URL, die für Azure eindeutig sein muss.

Sie können den nächsten Schritt ausführen, während diese Bereitstellung abgeschlossen wird.

Bereitstellen der Spring Boot-Anwendung in Azure App Service

  1. Fügen Sie der Datei pom.xml Ihres Projekts im Abschnitt <plugins> das folgende neue Plug-In hinzu:

    <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>2.11.0</version>
        <configuration>
            <schemaVersion>V2</schemaVersion>
            <resourceGroup>${env.AZ_RESOURCE_GROUP}</resourceGroup>
            <appName>${env.AZ_REDIS_NAME}-webapp</appName>
            <deployment>
                <resources>
                    <resource>
                        <directory>${project.basedir}/target</directory>
                        <includes>
                            <include>*.jar</include>
                        </includes>
                    </resource>
                </resources>
            </deployment>
        </configuration>
    </plugin>
    

    Hinweis

    In der obigen Konfiguration verwenden Sie die Umgebungsvariablen, die Sie zuvor konfiguriert haben. Damit diese Konfiguration funktioniert, müssen die Variablen $AZ_RESOURCE_GROUP und $AZ_REDIS_NAME korrekt eingerichtet sein.

  2. Führen Sie nach Abschluss der App Service-Bereitstellung den folgenden Befehl aus, um Ihre Anwendung zu packen und in Azure bereitzustellen:

    ./mvnw package azure-webapp:deploy
    
  3. Wenn die Bereitstellung erfolgreich abgeschlossen wurde, wird die folgende Zeile zurückgegeben:

    Successfully deployed the artifact to https://<redisName>-webapp.azurewebsites.net
    

    Notieren Sie sich die URL Ihrer ausgeführten Anwendung, wie in der vorherigen Ausgabe gezeigt, um sie im nächsten Abschnitt zu verwenden.

Testen der Anwendung in Azure

Verwenden Sie Ihre Anwendungs-URL, um die gleichen Client-URL-Befehle (cURL) in der Cloud auszuführen, die Sie auf Ihrem lokalen Server genutzt haben.

  1. Führen Sie den folgenden Befehl aus, um ein Datenelement hinzuzufügen:

    curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  2. Führen Sie Folgendes aus, um Daten abzurufen:

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. Führen Sie den folgenden Befehl mehrmals aus, um Ihre Sitzung zu erhöhen:

    curl -b cookie.txt -c cookie.txt https://$AZ_REDIS_NAME-webapp.azurewebsites.net/session
    

Der lokale Server und der Clouddienst verwenden dieselbe Redis-Instanz, um geclustert zu sein. Daten, die Sie in eine Instanz schreiben, sind in der anderen Instanz ebenfalls verfügbar. Der Clouddienst kann auch aufskaliert werden, indem weitere Knoten hinzugefügt werden, die alle dieselbe Redis-Instanz verwenden, um sowohl Unternehmensdaten als auch Sitzungsdaten zu speichern.