Ejercicio: Implementación de la aplicación de Spring Boot con Redis en Azure

Completado

Ahora que ya todo se ejecuta en el equipo local, puede implementar la aplicación en la nube y probar su comportamiento en producción.

Creación de una instancia de Azure App Service

Cree una instancia de Azure App Service para hospedar la aplicación. Utilice el siguiente código de la CLI de Azure para crear un plan de App Service básico que use Linux y, después, agréguele una instancia de Java en App Service.

Para usar Java 11 o Java 17 en lugar de Java 8, use "JAVA|<version>-java<version>" en lugar de "JAVA|8-jre8" como entorno de ejecución para la aplicación 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

Nota

El código anterior reutiliza la variable $AZ_REDIS_NAME para asignar un nombre al plan y a la instancia de App Service, pero puede usar otros nombres. El nombre de la instancia de App Service forma parte de la dirección URL, que debe ser única en Azure.

Puede realizar el siguiente paso mientras termina la implementación.

Implementación de la aplicación de Spring Boot en Azure App Service

  1. En el archivo pom.xml del proyecto, agregue el siguiente complemento en la sección <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>
    

    Nota

    En la configuración anterior, se usan las variables de entorno que ha configurado antes. Para que esta configuración funcione, asegúrese de establecer correctamente las variables $AZ_RESOURCE_GROUP y $AZ_REDIS_NAME.

  2. Una vez finalizada la implementación de App Service, ejecute el siguiente comando para empaquetar la aplicación e implementarla en Azure:

    ./mvnw package azure-webapp:deploy
    
  3. Cuando la implementación se completa correctamente, devuelve la siguiente línea:

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

    Anote la dirección URL de la aplicación en ejecución, como se muestra en la salida anterior, para usarla en la siguiente sección.

Prueba de la aplicación en Azure

Use la dirección URL de la aplicación para ejecutar los mismos comandos de dirección URL de cliente (cURL) en la nube que usó en el servidor local.

  1. Para agregar un elemento de datos, ejecute el siguiente comando:

    curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  2. Para recuperar los datos, ejecute:

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. Para incrementar la sesión, ejecute el siguiente comando varias veces:

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

El servidor local y el servicio en la nube usan la misma instancia de Redis, por tanto, se agrupan en clúster. Cualquier dato que escriba en una instancia estará disponible en la otra. El servicio en la nube se puede escalar horizontalmente agregando más nodos que usen la misma instancia de Redis para almacenar tanto datos empresariales como datos de sesión.