Nesta solução temos uma aplicação web escrita em PHP distribuída em 4 nodes contendo PHP-FPM e Nginx. Para realizar o balanceamento de carga das requisições utilizamos o HAProxy configurado para trabalhar em camada 7, utilizando algoritmo de roundrobin, realizando health checks periódicos para avaliar a saúde dos nodes e realizar a terminação SSL. Neste ambiente foi incluído o Memcached para realizar cache de dados da aplicação e assim evitar consultas desnecessárias ao banco de dados, melhorando o tempo de resposta da aplicação e desonerar o banco. Outro uso para o memcached nessa arquitetura é mecanismo de armazenamento de sessão centralizado, evitando a necessidade de criar configurações do tipo “sticky session” no balanceador, o que por sua vez evita condições de “hotspot” onde determinados nodes da aplicação ficam sobrecarregados e outros não.
O uso de filas permite uma forma eficiente de comunicaçãoara serem executadas de forma assíncrona por workers especializados, sem a necessidade do usuário ficar aguardando pela finalização da tarefa. Após a infraestrutura provisionada podemos realizar testes de carga na aplicação através do JMeter e avaliar se a quantidade de nodes são suficientes para a demanda esperada. entre microsserviços e também permite o offloading de tarefas complexas para serem executadas de forma assíncrona por workers especializados, sem a necessidade do usuário ficar aguardando pela finalização da tarefa.
Após a infraestrutura provisionada podemos realizar testes de carga na aplicação através do JMeter e avaliar se a quantidade de nodes são suficientes para a demanda esperada.