Criando aplicação escalável — Parte 2
Fala pessoal! Tudo bem com vocês? Seguindo a nossa jornada da criação de uma aplicação escalável, nessa segunda parte venho contar para vocês como foi o início dos testes, para quem não leu a primeira parte clique aqui.
No Primeiro momento tentei rodar o ‘software’ de teste de carga K6 com aplicação na minha máquina pessoal, iniciei com 1000 usuários fazendo acessos simultâneos e obtive somente 2% de sucesso, quando tentei rodar com 2000 usuários começou a gerar um erro de “socket: too many open files”, para fim de comparação nesse teste vou manter 1000 tanto na minha máquina quanto no servidor do Heroku. Criei uma conta no Heroku, cujas configurações não são robustas, mas com o passar dos testes talvez posso mudar de plano para fazer um teste melhor.
Configurações da máquina no Heroku:
Memória Ram | 2 GB |
N. de processadores | 2 |
Configurações do computador onde irei rodar o ‘software’ de teste de carga:
Mémoria Ram | 8 GB |
SSD | 480 GB |
CPU | 8 núcleos |
Procesador | Core i5 8Gen |
S.operacional | Ubuntu 20.1 |
Resultados dos testes efetuados com a aplicação rodando na minha máquina
Agora vamos analisar o relatório do teste na máquina local:
Criei um assert para verificar a quantidade de requisições que iria retornar com o status 200, nesse caso de 2525 requisições somente 2% retornou com o status de sucesso, tivemos 97% que falharam e a média de requisição por segundo foi de 42,80/s. O k6 iniciou o teste com o mínimo de 154 usuários virtuais e no máximo de 1000.
Resultados dos testes efetuados com a aplicação rodando no servidor do Heroku
Analisando os resultados do Heroku:
O teste foi similar ao teste anterior, nesse caso das 2643 requisições que o k6 fez a URL todos retornaram com o status 200, não tivemos falha como aconteceu no meu computador, a média de requisição por segundo foi de 56,69/s já percebemos que tivemos uma melhora, o K6 inciou os testes com um mínimo de 39 usuários virtuais e o máximo de 1000 usuários virtuais.
Tentei aumentar para 2000 usuários virtuais, mas recebi o erro “failed to load system roots and no roots provided”, não sei se esse erro é devido ao meu plano que é gratuito, vou tentar verificar para que no próximo teste eu consigo aumentar o número de usuários virtuais
Finalizando
Já percebemos a diferença entre dois servidores, nessa segunda parte conseguimos fazer nosso primeiro teste do nosso objetivo de 900 requisições por segundo, conseguimos nesse primeiro momento fazer no máximo 56 requisições por segundo.
O próximo passo será estudar sobre a escalabilidade horizontal e vertical, nesse primeiro teste podemos perceber que o nosso servidor ainda é muito fraco talvez seja melhor aumentar a memória para isso terei que mudar o plano do Heroku, tentarei estudar um pouco mais sobre esse serviço, ainda não estou certo que fazer, mas vamos continuando e aprendendo juntos nessa longa jornada…
Caso você ficou curioso em saber sobre as métricas do k6 mais profundamente, segue o link da documentação: https://k6.io/docs/using-k6/metrics/