Exercício – implementar uma aplicação monolítica no Serviço de Aplicações

Concluído

Falamos um pouco sobre arquiteturas monolíticas e de microsserviços. Agora, vamos implantar um aplicativo monolítico e mergulhar ainda mais em como podemos evolui-lo para uma arquitetura de microsserviços.

A Fabrikam adicionou recentemente o serviço de drones à sua aplicação existente.

Neste exercício, implantamos um aplicativo monolítico no Serviço de Aplicativo do Azure e habilitamos o Azure Monitor para obter visibilidade da telemetria e do desempenho do aplicativo.

Visualization of the resources for the drone delivery application.

Implementar uma aplicação monolítica no Serviço de Aplicações do Azure

Vamos começar por implementar a aplicação. Primeiro, precisamos de criar os recursos do Azure para alojar a aplicação.

  1. Execute o seguinte comando para implantar os recursos necessários para este aplicativo. A implementação irá demorar alguns minutos.

    az deployment group create \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-microservices-architecture/master/deployment/azuredeploy.json
    
  2. Agora que temos os recursos criados, vamos implementar a aplicação. Primeiro, execute o seguinte comando para extrair o código-fonte do repositório de exemplo.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Execute o seguinte comando para compactar o código do aplicativo, que usamos para implantar no serviço do aplicativo.

    zip -r DroneDelivery-before.zip .
    
  4. Execute o seguinte comando para definir uma variável com o nome do seu serviço de aplicativo.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Execute o seguinte comando para configurar o serviço de aplicativo para executar uma compilação como parte da implantação.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. Agora, execute o seguinte comando para implementar a aplicação no Serviço de Aplicações. A implementação irá demorar alguns minutos a concluir.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. Após a conclusão da implantação, confirme se ela foi bem-sucedida visitando o site do seu serviço de aplicativo. Execute o seguinte comando para obter o URL e selecione-o para abrir a página.

    echo https://$(az webapp config hostname list \
                    --resource-group "<rgn>[sandbox resource group]</rgn>" \
                    --webapp-name $APPSERVICENAME \
                    --query [].name \
                    --output tsv)
    

    Screenshot of the Drone Delivery website.

Executar um teste de carga em relação à aplicação

Agora, vamos testar o desempenho do aplicativo em sua arquitetura monolítica.

  1. Na home page da aplicação implementada, selecione Enviar Pedidos. Esta ação simula o envio de 100 pedidos através da aplicação.

  2. Para o primeiro pedido, verá um resultado de cerca de 8 a 12 segundos para processar 100 mensagens. Se você atualizar a página e reenviar se solicitado, esse número pode cair pela metade. Ainda demora cerca de cinco segundos por pedido.

    Screenshot of the Drone Delivery website after running the performance test.

A Fabrikam suspeita que a arquitetura monolítica está a impedir que serviços amplamente utilizados sejam dimensionados, o que conduz ao mau desempenho aqui observado.