Exercício – Implantar o aplicativo Spring Boot Redis no Azure

Concluído

Agora que tudo é executado localmente, é possível implantar o aplicativo na nuvem e testar o comportamento dele na produção.

Criar uma instância do Serviço de Aplicativo do Azure

Crie uma instância do Serviço de Aplicativo do Azure para hospedar o aplicativo. Use o código da CLI do Azure a seguir para criar um plano básico do Serviço de Aplicativo que usa o Linux e adicione uma instância do Java no Serviço de Aplicativo do Azure nesse plano.

Para usar o Java 11 ou 17 em vez do Java 8, use "JAVA|<version>-java<version>" em vez de "JAVA|8-jre8" como o runtime do aplicativo 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

Observação

O código anterior reutiliza a variável $AZ_REDIS_NAME para nomear o plano do Serviço de Aplicativo e a instância do Serviço de Aplicativo, mas é possível usar nomes diferentes. O nome da instância do Serviço de Aplicativo faz parte da URL, que precisa ser exclusiva no Azure.

É possível realizar a próxima etapa enquanto essa implantação é concluída.

Implantar o aplicativo Spring Boot no Serviço de Aplicativo do Azure

  1. No arquivo pom.xml do projeto, adicione o seguinte novo plug-in à seção <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>
    

    Observação

    A configuração anterior usa as variáveis de ambiente configuradas anteriormente. Para que essa configuração funcione, as variáveis $AZ_RESOURCE_GROUP e $AZ_REDIS_NAME precisam ser configuradas corretamente.

  2. Após a conclusão da implantação do Serviço de Aplicativo, execute o seguinte comando para empacotar o aplicativo e implantá-lo no Azure:

    ./mvnw package azure-webapp:deploy
    
  3. Quando a implantação for concluída com êxito, ela retornará a seguinte linha:

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

    Observe a URL do aplicativo em execução, conforme mostrado na saída anterior, a ser usada na próxima seção.

Testar o aplicativo no Azure

Use a URL do aplicativo para executar os mesmos comandos de URL do cliente (cURL) na nuvem que você usou no servidor local.

  1. Para adicionar um item de dados, execute o seguinte 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 os dados, execute o seguinte:

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. Para incrementar sua sessão, execute o seguinte comando várias vezes:

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

O servidor local e o serviço de nuvem usam a mesma instância do Redis, portanto, são clusterizados. Todos os dados que você grava em uma instância estarão disponíveis na outra. O serviço de nuvem pode ser escalado horizontalmente: adicionando mais nós que usarão a mesma instância do Redis para armazenar dados corporativos e dados de sessão.