in dev

Load Test com Azure Websites e AutoScale

O Windows Azure oferece diversos tipos de ofertas de recursos: IaaS, PaaS e SaaS (apresentação MVTech Day). Entre os recursos de plataform as a service está o Azure Websites, o qual oferece toda uma infraestrutura de Web Server(IIS) configurado e pronto para o uso. Entre suas principais vantagens estão:

  • Flexibilidade de gerenciamento
  • Facilidade de implantação (integra com ferramentas como Git, Github, CodePlex, TFS e DropBox)
  • Dimensionamento Automático
  • Seguro
  • Integração com o Visual Studio
  • Plataforma aberta
  • Monitoramento

Azure Websites e AutoScale

O Azure Website oferece um recurso (em versão preview) que consiste em aumentar ou diminuir o numero de instancias que estão respondendo por um Website, tendo esse processo definido com base em algumas configurações como: numero mínimo e máximo de instancias, horários de agendamento, e valores limites de máximo e mínimo  de uso de CPU.

Este recurso é extremamente útil em cenários em que o volume de acessos varia de acordo com o horário ou com a demanda como por exemplo em um site de uma floricultura, em eventos especiais como dia das mães e dia dos namorados. Com o AutoScale, o Azure facilita e automatiza o consumo de recursos computacionais de uma forma realmente elástica.

Configurando

Para habilitar o AutoScale é preciso que o Website esteja configurado, na aba Escala no modo do site “Padrão”.

image

Logo abaixo desta configuração está o item chamado Capacidade, é nele onde podemos configura o tamanho da instancia que responderá pelo nosso Website, o numero mínimo e máximo de instancias que poderão ser utilizadas, e a configuração de trigger de CPU, que fará a ação de colocar mais instancias ou diminuir, quando a CPU estiver entre 60% e 80%.

image

Cenário

Para este post vou criar um Website, e fazer deploy de uma aplicação ASP.NET MVC5 com uma action principal que causa um consumo considerável de CPU. Para testar esta aplicação criei um Load Test no Visual Studio fazendo uma requisição para esta action, o teste foi distribuído para executar por 30 minutos, com 20 usuários adicionados a cada 10 segundos, mantendo um limite de 200 usuários.

Resultados:

Durante o teste o website não apresentou nenhum erro ou teve um grande aumento no tempo de resposta. O tempo de resposta esteve entre 0,15s e 0,56s (media 0,44). Retornado cerca de 420 requests/segundo.

A operação de autoscale ocorreu com sucesso, iniciando com 1 instancia, e em poucos minutos o site já estava sendo entregue por 2 instancias e terminou com 3 instancias respondendo pelo site. Após o teste as 2 instancias a mais foram desalocadas com sucesso. Todas as situações de autoscale foram logadas com sucesso.

Abaixo estão os dados do teste

auto scalling

Site  Standard (Smal, 1 core, memory 1,75Ghz) autoscale 1 – 5 instances

dash completed

CPU

Max: 111,5s

Med:   50,57s

Request

Max: 28739

Med: 12625,35

Network Out

Max : 105,69 MB

Med: 45,92 MB

Total: 2,69 GB

Network In

Max : 23,95 MB

Med : 10,46 MB

Total: 627,34 GB

Load Test

page response time.JPG

Carga de Usuários

Min:20

Max:200

Paginas/Segundo

Min:94,1

Max:478

Tempo médio de resposta

Min:0,15s

Max:0,56s

Med:0,43s

Conclusão

Este recurso é sem dúvida muito importante em cenários de sazonalidade e aumento de acessos, com ele é possível pagar somente pela infraestrutura necessária para atender os usuários daquele momento, e garantir que a aplicação escale de maneira automatizada para atender os usuários.

Espero que este post seja útil, estou a disposição para dúvidas, criticas e sugestões

abs

Rodolfo