Cada componente de aplicação do serviço que escrevemos requer alguns recursos para executar e funcionar corretamente. Prever exatamente quanto recursos é necessário pode ser quase impossível, pois há muitas partes móveis que podem influenciá-lo. A quantidade de memória, CPU ou largura de banda de rede necessária pode mudar usando o ciclo de vida do aplicativo à medida que o volume de trabalho muda. Quase todas as aplicações têm requisitos de desempenho que devemos sempre atender. À medida que a carga de trabalho muda, devemos ser capazes de manter o nível de desempenho desejado. É aqui que o Azure Autoscale entra em jogo, pois é um mecanismo, podemos usar para conseguir isso.

 

Autoscalamento

Na figura 1 abaixo, há a carga de aplicação e o limite total dos recursos. Quando a escala automática não está no lugar, os usuários que estão conectados e os usuários que vão se conectar ao aplicativo web, podem enfrentar problemas de desempenho devido à limitação dos recursos disponíveis e atinge o ponto limite como retratado em figura 1.2 e não pode lidar com o tráfego. No entanto, quando você olha para a figura 2, você pode ver, com tráfego e carga de aplicativos, os recursos disponíveis aumentam simultaneamente. Esta é a vantagem do autoscalamento.

 

Cenário ocioso de Azure Autoscale

Figura 1

 

Limiar de escala automática do Azure

Figura 1.2

 

Figura 2

 

Soluções computacionais no Azure

  • Serviço de aplicativos. O Azure App Service é um serviço de hospedagem web totalmente gerenciado para a construção de aplicativos web, back ends móveis e APIs RESTful. De sites pequenos a aplicativos web em escala global, o Azure tem as opções de preços e desempenho e que se adequam às suas necessidades.
  • Azure Cloud Services. O Azure Cloud Services é um exemplo de uma plataforma como serviço (PaaS). Assim como o Azure App Service, essa tecnologia foi projetada para suportar aplicativos escaláveis, confiáveis e baratos de operar. Você pode instalar seu próprio software em VMs que usam Azure Cloud Services, e você pode acessá-los remotamente.
  • Tecido de Serviço Azure. O Azure Service Fabric é uma plataforma de sistemas distribuídos que facilita a embalagem, implantação e gerenciamento de microsserviços e contêineres escaláveis e confiáveis. O Service Fabric representa a plataforma de próxima geração para a construção e gerenciamento desses aplicativos de classe corporativa, nível 1 e em escala de nuvem em execução em contêineres.
  • Funções Azure. As Funções Azure permitem que os desenvolvedores ajam conectando-se a fontes de dados ou soluções de mensagens, facilitando o processamento e a reação a eventos. Os desenvolvedores podem aproveitar as Funções do Azure para criar pontos finais de API baseados em HTTP acessíveis por uma ampla gama de aplicativos, dispositivos móveis e IoT.
  • Máquinas Virtuais. A máquina virtual do Azure nos permitirá criar e usar máquinas virtuais na nuvem como Infraestrutura como serviço. Podemos usar uma imagem fornecida pelo Azure, ou parceiro, ou podemos usar a nossa própria para criar a máquina virtual.

 

Tipos de Autoscaling

Autoscalamento vertical

Escala vertical significa que modificamos o tamanho de um VM. Nós aumentamos se precisarmos de um VM maior que tenha mais recursos de hardware, e, por outro lado, reduzimos no caso de não precisarmos de todos os recursos disponíveis e queremos diminuir o tamanho de um VM. Nossa aplicação hospedada neste VM permanece inalterada em ambos os casos. Esse tipo de dimensionamento não é muito eficiente, especialmente no ambiente em nuvem, pois o consumo de recursos não é otimizado. Outra desvantagem principal é que a máquina virtual precisa ser parada para que seu tamanho mude. Isso afeta nosso aplicativo, pois ele deve ficar offline enquanto o VM é interrompido, redimensionado e reiniciado, e essas ações geralmente são demoradas. Claro, poderíamos manter nosso VM inalterado, mas em vez disso, provisão uma nova máquina virtual com tamanho desejado e mover nossa aplicação uma vez que o novo VM está pronto. Isso ainda exige que nosso aplicativo fique offline enquanto ele se move, mas o processo de movimentação do aplicativo é muito menor.

escala vertical

Figura 3

 

aplicativo de dimensionamento vertical indisponível

Figura 3.1 – O aplicativo fica indisponível quando o dimensionamento vertical é colocado em prática, pois leva tempo para reiniciar.

 

Autoscalamento horizontal

O dimensionamento horizontal significa que modificamos o número de VMs em execução e mantemos o desempenho desejado dividindo a carga entre várias instâncias do mesmo VM. O tamanho da máquina virtual permanece o mesmo. Nós só aumentamos o número deles escalando, ou diminuímos o número de VMs em execução em um momento, escalando dentro Usando essa abordagem, podemos começar com o pequeno tamanho VM e manter o consumo de recursos o mais ideal possível. Além disso, não há tempo de inatividade para o nosso aplicativo, pois sempre haverá pelo menos uma instância do aplicativo em execução. O dimensionamento horizontal requer um balanceador de carga para distribuir a carga entre VMs em execução uniformemente. Mas felizmente para nós, Azure faz isso fora da caixa sem nenhuma ação necessária do nosso lado.

 

escala horizontal

Figura 5. Ampliado quando o tráfego aumenta.

 

tráfego de escala horizontal diminui

Figura 5.1 – Escalado quando o tráfego diminui.

 

Monitoramento e Alertas

Existem muitas maneiras com você pode monitorar se recursos adicionais são adicionados no Azure a um serviço, alguns dos quais são bastante complicados, por exemplo, a lâmina de dimensionamento de um serviço (Conjuntos de Escala de Máquinas Virtuais neste caso, Figura 6). Este é um método preferido pelos administradores, mas não pelos proprietários e colaboradores. Para que os usuários possam visualizar, precisamos estar conectados ao portal do Azure, o que pode ser bastante demorado para os usuários.

Conjuntos de escala de máquina virtual

Figura 6

 

Alertas

Você pode optar por notificar os usuários quando a escala automática e a escala em (serviço app).

 

Alertas de escala automática do Azure

Figura 7

 

Por padrão, os insights do aplicativo são usados para o serviço de aplicativos que nos dá as informações sobre o tempo de resposta do servidor, solicitações, etc.

 

Insights de aplicativos

Figura 8. Insights de aplicativos mostrando o tempo médio de resposta do servidor com as solicitações que um serviço de aplicativo recebe.

 

É assim que configurar o autoscalamento em um serviço de aplicativo. Primeiro, vá para Scale-out > Configure > Add Scale condition Select appropriate metric like > CPU, RAM, requests, etc. > Salve e está feito.

 

Configure escala automática

Figura 9. Configurando as condições em escala automática em um plano de serviço de aplicativo

 

Quando você usa a escala automática do Azure, você não precisa se preocupar em como implementar balanceadores de carga, gerentes de tráfego, etc. O Azure controla tudo.

Nota: Os VMs autônomos precisam de configuração adicional. No entanto, os conjuntos de escala de máquina virtual não requerem nenhuma ação administrativa ao autoscalar. Os balanceadores de carga são criados automaticamente.

O Azure App Services tem um método de autoscalcificação cego que é manipulado pelo Azure e você não vê nenhum serviço usado individualmente nos recursos. Em vez disso, remove qualquer sobrecarga administrativa. Os usuários sentem pouco ou nenhum problema de desempenho tendo em mente que o autoscalamento é alcançado. O Azure lida com a maior parte da parte de autoscalagem, além de especificar as condições de escala automática, não há muito o que fazer. Tudo é tratado sem problemas.

Histórico de execução em escala automática

 

Na Figura 10, há um VMSS (Virtual Machine Scale Sets) que escala automaticamente quando as condições que você menciona provam ser verdadeiras.

 

Conjuntos de escala de máquina virtual com balanceador de carga

Figura 10. Conjuntos de escala de máquina virtual com balanceador de carga.

 

 

Testando a escala automática do Azure

O teste é parte integrante de um aplicativo web. Sem testes, não podemos ter certeza se o servidor web pode lidar com o tráfego, para ele, realizamos testes. Testes de estresse, teste de carga são os poucos exemplos de testes. Para que ele seja puramente tratado no Azure, inscreva-se em uma organização DevOps dentro do portal Azure, crie um projeto e, em seguida, você será redirecionado para a seguinte página:

 

Painel Azure DevOps

Figura 11. Painel de devOps para testes

 

Plano de teste do Azure DevOps

Figura 12. Você pode adicionar URLs para fins de teste e olhar para as métricas do serviço que está sendo usado para testes.

 

Percentual médio da CPU por instância

Figura 13. Gráfico da CPU do aplicativo testado que está em VM.

 

Resultados da amostra GET API

Figura 14. Resultados da amostra para uma API GET com detalhes como tempo de resposta, carga do usuário, solicitações por segundo, etc.

 

Usando o LoadView para verificar se a escala automática do Azure funciona corretamente

Como sabemos agora, quando uma quantidade de CPU, RAM e IO é atingida, o autoscalamento ocorre. Aqui na Figura 15, este gráfico está incluído em um relatório fornecido pelo LoadView quando você executa um teste contra uma determinada URL ou ponto final. O primeiro gráfico tem um número constante de usuários visitando o site de acordo com nossa estratégia de teste de carga e, portanto, depois do ponto, o tempo médio de resposta aumenta substancialmente.

LoadView Tempo médio de resposta sem escala automática

Figura 15. Tempo médio de resposta sem escala automática

 

No entanto, com autocalsagem vem vantagens. Na Figura 16, quando os usuários aumentam, nossa instância hospedando o aplicativo web é ampliada conforme as condições e, portanto, os tempos médios de resposta não são afetados quando o autoscalamento é concluído. Quando os usuários não estão mais conectados, as instâncias criadas para lidar com a carga imprevisível são encerradas e apenas a contagem inicial permanece intacta.

 

LoadView Tempo médio de resposta com escala automática

Figura 16. Tempos médios de resposta com escala automática

 

Na Figura 17, o teste de carga fornecido pelo LoadView fornece uma maneira de testar o aplicativo com a ajuda da sessão quando as sessões continuam aumentando, o que ajuda no teste adequado e se o aplicativo escala automaticamente ou não.

Sessões cumulativas do LoadView

Figura 17. O número de sessões cumulativas

 

Teste a escala automática do Azure: Conclusão

Quando você implementa o Microsoft Azure Autoscale, você não precisa se preocupar em como implementar balanceadores de carga, gerentes de tráfego, etc. O Azure gerencia tudo e garante que a quantidade correta de recursos esteja sendo executado para lidar com a carga de seus aplicativos que seus testes. No entanto, o uso de uma solução como o LoadView garante que o Autoscale esteja funcionando corretamente e que seus usuários não experimentem nenhuma degradação de desempenho à medida que os recursos são adicionados.

Experimente o LoadView por si mesmo e recebeu $20 em créditos de teste de carga para começar.