Testes de Carga - Parte 1 - Infraestrutura

Você sabe quanto peso um bloco de tijolo suporta? Ele suporta aproximadamente 1300 kgf de pressão. Esse valor depende do modelo do tijolo, quantidade de furos que ele possui, também depende do material que ele é feito entre muitas outras características.

Por curiosidade, e sua aplicação, foi projetada para suportar quanto de carga?De que “material” ela é feita? Como foram os testes? Foi feito algum teste?Vai suportar a quantidade de clientes? No contexto de Infraestrutura para Web é possível traçarmos um paralelo com o mundo da Construção Civil, não só por que somos “pião de obra” mesmo 😄, mas existem coisas no nosso mundo que são equivalentes as técnicas utilizadas para construir uma fundação sólida, depois uma parede em seguida levantar um prédio por completo.

Para um profissional de TI que trabalha com infraestrutura e aplicações é preciso saber os tipos e limitações de alguns “tijolinhos da TI”, esse post é justamente para isso, apresentar os pontos importantes que um técnico da área deve levar em consideração ao construir seu “prédio”.

Os tijolos da TI

Seja qual for o tamanho do seu servidor, pode ser um pequeno RaspberryPi ou uma super máquina, os seguintes itens precisam ser observados, isso é o básico do básico: CPU, memória, disco, rede e I/O(4), sempre um ou mais deles estarão entre as razões causadora das restrições do seu sistema (5).

Image: CPU, memória, disco, rede e I/O - Infra as Code

Os alicerces do prédio

Isso eu considero que é o alicerce de um prédio, se sua infraestrutura foi criada dentro de um ambiente de virtualização, você precisa levar em consideração mais alguns tijolos, são eles: Sistema operacional do hospedeiro, restrições impostas pelo gestor de virtualização.

  • Fullvirtualization
  • Paravirtualization
  • Tipos de hypervisor Xen, VMWare, Openstack
  • Isolamento entre VMs
  • Latência entre hypervisor e o storage
  • Métode de acesso das logical unit number (LUN)
  • Limitações do sistema visitante (VMs)
  • Gerenciamento do storage para o sistema visitante
  • Capacidade, velocidade e atividades em paralelo que acontecem no data store
  • Categoria do storage onde a máquina foi criada, é de baixo, médio ou alto desempenho?

Image: Virtualização - Infra as Code

O prédio de quatro andares

Finalmente chegamos ao nosso prédio, construir um prédio de quatro andares na TI seria equivalente a utilizar uma arquitetura como essa, composta pelas seguintes camadas: Front End, Application Server, Banco de Dados e servidores de Cache.

  • Tempo de resposta de uma páginaou objetos de uma página
  • Rede entre o Balanceador de carga e os hosts
  • Configuração do algoritmo de balanceamento
  • Limitações de quantidade de sessões no banco de dados
  • Quantidade de objetos na memória do sistema de cache
  • Algoritmo de renovação de objetos no cache

Image: Arquitetura de quatro níveis - Infra as Code

Visão geral com tudo junto

Fazer um teste de carga em uma aplicação é muito mais do que ter uma URL ou um IP apontar o JMeter e disparar requests por cinco ou dez minutos. Alguns pontos importantes a serem observados antes mesmo de começar a testar qualquer componente da sua infraestrutura, veja:

  • Tamanho da Virtual Machine
  • Carga do sistema
  • Tipo de hardware Nível de RAID
  • Tamanhos de cache
  • Tipos de disco e velocidade de acesso SATA, SSD
  • Utilização de NFS
  • Hypervisor
  • Latência entre componentes internos
  • Capacidade total do sistema
  • Interfaces de rede e largura de banda
  • Afinidade de Hardware
  • Infraestrutura
  • Validar a comunicação entre componentes, validar proxies e firewalls
  • Erros de interface de rede
  • Cache de objetos, testar com e sem cache
  • Tempos de queries no banco, verificar as que possuem mais tempo

Image: Infraestrutura e componentes internos - Infra as Code

Conclusões

Conseguimos levantar nosso prédio de quatro andares. Já podemos chamar os futuros moradores? Ainda não, faltam algumas coisas ainda, falta a parte hidráulica, elétrica, acabamentos e o teste final. Em outras palavras, falta ainda falarmos sobre configurações de sistema operacionais, otimização de configuração de rede, e o teste final.

Neste post não tratamos dos testes de carga, tratamos apenas da parte física da infraestrutura, seus componentes mais relevantes, pontos que podem gerar falhas e o básico da comunicação entre os elementos que fazem parte da aplicação. Foram apresentados itens importantes que devem ser levados em consideração em um teste de carga, eles podem ser o motivo ou um dos motivos das futuras falhas na sua aplicação.

Ahh!! Resolvi dividir o assunto em três partes: Infraestrutura, Configuração e Testes. Acho que dessa forma os assuntos ficam separados e formam um encadeamento de pensamentos sobre o assunto….aguardem os próximos postss 😄

Abraços!

Vida longa e próspera a todos!!

Referências

  1. https://www.youtube.com/watch?v=OtnAK0Pu5so
  2. http://www.iaeng.org/publication/IMECS2016/IMECS2016_pp94-99.pdf
  3. https://www.researchgate.net/profile/Paulo_Maciel/publication/322467288_A_MODELING_STRATEGY_FOR_CLOUD_INFRASTRUCTURE_PLANNING_CONSIDERING_PERFORMANCE_AND_COST_REQUIREMENTS/links/5ae70ea70f7e9b9793c7e613/A-MODELING-STRATEGY-FOR-CLOUD-INFRASTRUCTURE-PLANNING-CONSIDERING-PERFORMANCE-AND-COST-REQUIREMENTS.pdf
  4. https://www.usenix.org/legacy/publications/library/proceedings/usenix05/tech/general/full_papers/short_papers/cherkasova/cherkasova.pdf
  5. https://www.researchgate.net/profile/Prashant_Desai13/publication/306248698_A_Survey_of_Performance_Comparison_between_Virtual_Machines_and_Containers/links/57b45c0808aede8a665a4bf0.pdf
  6. https://www.researchgate.net/profile/Prashant_Desai13/publication/306248698_A_Survey_of_Performance_Comparison_between_Virtual_Machines_and_Containers/links/57b45c0808aede8a665a4bf0.pdf
  7. https://www.researchgate.net/profile/Blaise_Yenke/publication/287157635_Virtual_Machine_Performance_upon_Intensive_Computations/links/5c406f88458515a4c72c3970/Virtual-Machine-Performance-upon-Intensive-Computations.pdf
  8. https://www.diva-portal.org/smash/get/diva2:861239/FULLTEXT02
  9. https://www.usenix.org/legacy/events/expcs07/papers/6-matthews.pdf
  10. https://www.researchgate.net/profile/Freddy_Tapia_Leon/publication/327918047_Performance_Analysis_of_Monolithic_and_Micro_Service_Architectures_-_Containers_Technology_Proceedings_of_the_7th_International_Conference_on_Software_Process_Improvement_CIMPS_2018/links/5ebc214d92851c11a8675db6/Performance-Analysis-of-Monolithic-and-Micro-Service-Architectures-Containers-Technology-Proceedings-of-the-7th-International-Conference-on-Software-Process-Improvement-CIMPS-2018.pdf


Eu adoraria ouvir suas outras histórias e situações semelhantes ao que acabei de escrever neste post, você pode me encontrar em @infraascode_br ou linkedin.com/in/leonardoml/ .

Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!


--- --- IMPORTANTE --- ---
As opiniões aqui expressas são pessoais e de responsabilidade única e exclusiva do autor, elas não refletem necessariamente a posição das empresas que eu trabalho(ei) e/ou presto(ei) serviço.