Exercice - Déployer l’application Spring Boot Redis sur Azure

Effectué

Maintenant que tout fonctionne au niveau local, vous pouvez déployer l’application dans le cloud et tester son comportement en production.

Créer une instance d’Azure App Service

Créez une instance Azure App Service pour héberger votre application. Utilisez le code Azure CLI suivant pour créer un plan App Service de base qui utilise Linux, puis ajoutez une instance de Java sur App Service dans ce plan.

Pour utiliser Java 11 ou Java 17 à la place de Java 8, utilisez "JAVA|<version>-java<version>" au lieu de "JAVA|8-jre8" comme runtime d’application web.

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

Notes

Le code précédent réutilise la variable $AZ_REDIS_NAME pour nommer le plan App Service et l’instance App Service, mais vous pouvez utiliser des noms différents. Le nom de l’instance App Service fait partie de l’URL, laquelle doit être unique dans Azure.

Vous pouvez effectuer l’étape suivante pendant que le déploiement se poursuit.

Déployer l’application Spring Boot sur Azure App Service

  1. Dans le fichier pom.xml de votre projet, ajoutez le nouveau plug-in suivant dans la section <plugins> :

    <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>
    

    Notes

    La configuration précédente utilise les variables d’environnement que vous avez configurées plus tôt. Pour que cette configuration fonctionne, vérifiez que vos variables $AZ_RESOURCE_GROUP et $AZ_REDIS_NAME sont correctement configurées.

  2. Une fois le déploiement d’App Service terminé, exécutez la commande suivante pour créer un package de votre application et la déployer sur Azure :

    ./mvnw package azure-webapp:deploy
    
  3. La ligne suivante est retournée à l’issue du déploiement :

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

    Notez l’URL de votre application en cours d’exécution (voir sortie précédente). Vous en aurez besoin dans la section suivante.

Tester l’application sur Azure

Utilisez l’URL de votre application pour exécuter les mêmes commandes cURL (client URL) dans le cloud que celles utilisées sur votre serveur local.

  1. Pour ajouter un élément de données, exécutez la commande suivante :

    curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  2. Pour récupérer les données, exécutez :

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. Pour incrémenter votre session, exécutez plusieurs fois la commande suivante :

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

Votre serveur local et votre service cloud utilisant la même instance Redis, ils sont mis en cluster. Les données que vous écrivez dans une instance sont disponibles dans l’autre instance. Le service cloud peut effectuer un scale-out en ajoutant d’autres nœuds qui utilisent tous la même instance Redis pour stocker des données métier et des données de session.