Exercício – implementar uma aplicação monolítica no Serviço de Aplicações
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.
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.
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
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
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 .
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)"
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
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
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)
Executar um teste de carga em relação à aplicação
Agora, vamos testar o desempenho do aplicativo em sua arquitetura monolítica.
Na home page da aplicação implementada, selecione Enviar Pedidos. Esta ação simula o envio de 100 pedidos através da aplicação.
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.
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.