Configurar Load Balancer + Redis na AWS com o Adianti Framework Se você utiliza o Adianti Framework e deseja escalar o seu sistema para suportar mais usuários ou melhorar o desempenho, uma excelente solução é configurar múltiplas instâncias (servidores) rodando na AWS, usando: - Load Balancer (ALB da AWS) para distribuir os acessos - Redis (ElastiCache AWS) para gerenciar as sessões de usuários de forma compartilhada - S3 para armazenar arquivos ...
MR
Configurar Load Balancer + Redis na AWS com o Adianti Framework  
Se você utiliza o Adianti Framework e deseja escalar o seu sistema para suportar mais usuários ou melhorar o desempenho, uma excelente solução é configurar múltiplas instâncias (servidores) rodando na AWS, usando:

- Load Balancer (ALB da AWS) para distribuir os acessos
- Redis (ElastiCache AWS) para gerenciar as sessões de usuários de forma compartilhada
- S3 para armazenar arquivos temporários e documentos
- RDS Aurora MySQL para o banco de dados

Recentemente implementei essa arquitetura para meu sistema rodando na AWS, e notei uma melhora clara no desempenho. Principalmente no tempo de resposta e na estabilidade durante acessos simultâneos.

Aqui vou explicar como fizemos, por que isso melhora o desempenho, e como configurar de maneira prática na AWS.


Por que usar Load Balancer + Redis na AWS



- Load Balancer (ALB) da AWS distribui automaticamente as requisições entre duas ou mais instâncias EC2 (servidores).
- Redis (ElastiCache AWS) armazena as sessões dos usuários de forma centralizada e compartilhada.
- S3 AWS permite armazenar arquivos temporários e documentos, sem depender do disco das instâncias.
- RDS Aurora MySQL provê alta disponibilidade e escalabilidade para o banco de dados.

Além disso:
- Usamos instâncias EC2 ARM (AWS t4g ou m7g), que além de terem ótimo desempenho, ainda são mais econômicas que instâncias x86 tradicionais.


Estrutura Montada (na AWS)



- 2 Instâncias EC2 AWS (Ubuntu 22.04, PHP 8.2, Apache)
- Redis ElastiCache AWS (modo Tradicional, não Serverless)
- Application Load Balancer AWS (ALB)
- Bucket S3 AWS para armazenamento de arquivos temporários
- RDS Aurora MySQL AWS para banco de dados
- Sistema rodando o Adianti Framework 7.5.1 (ou superior)

Toda a infraestrutura foi provisionada e configurada dentro da Amazon Web Services (AWS).


Passo a Passo de Configuração



1. Criar o Redis (ElastiCache AWS)

- No console da AWS, vá em ElastiCache > Redis e crie um cluster.
- Importante: escolha o modo Tradicional (não Serverless).
- Configure o Security Group liberando a porta 6379 para as suas instâncias EC2.

2. Preparar as instâncias EC2 AWS

Em cada instância EC2 (Ubuntu 22.04), instale o Redis PHP extension:

Ajustar o PHP para usar o Redis

No php.ini da sua instância EC2:

session.save_handler = redis
session.save_path = "tcp://ENDPOINT_DO_REDIS:6379"

4. Configurar o Load Balancer (ALB AWS)

- No console da AWS, vá em EC2 > Load Balancers > Criar Load Balancer.
- Escolha o tipo Application Load Balancer (ALB).
- Configure listeners para HTTP ou HTTPS.
- No Target Group, associe suas instâncias EC2.

5. Configurar o Bucket S3 para arquivos temporários

- No console da AWS, crie um Bucket S3 para armazenar arquivos gerados temporariamente pelo sistema (PDFs, documentos, imagens).
- Garanta que as permissões estejam configuradas corretamente.
- Integre o sistema Adianti para salvar e ler diretamente do S3 ao invés de gravar em disco local.

6. Banco de Dados RDS Aurora MySQL

- No console da AWS, vá em RDS > Criar Banco de Dados e selecione o Aurora MySQL.
- Configure instâncias com Multi-AZ para alta disponibilidade.
- Defina segurança de acesso permitindo apenas conexões internas (via VPC e VPN).


Ajustes no Adianti Framework



No arquivo app/config/application.ini do seu projeto:

[general]
session_name = MSGESTOR

No caso de uso do S3, ajuste também o local de salvamento/armazenamento de arquivos no código PHP conforme necessidade (usando SDK AWS S3).

Nenhuma outra modificação grande é necessária no Adianti, pois ele já trabalha normalmente com sessões PHP e banco de dados MySQL compatível.


Segurança da Infraestrutura



Além da alta disponibilidade, a segurança também foi uma prioridade nesta configuração na AWS:

Acesso web:

- Apenas via HTTPS (porta 443) com certificado SSL válido.
- A porta 80 (HTTP) está bloqueada para evitar acessos inseguros.

Acesso administrativo (manutenção de banco e servidor):

- Nenhuma conexão direta exposta ao público.
- SSH (acesso ao terminal) e acesso ao banco de dados só podem ser feitos através de uma VPN privada (OpenVPN) configurada na AWS.

Instâncias EC2 sem IP público fixo:

- As instâncias EC2 não possuem IP público fixo.
- O acesso externo é feito exclusivamente através do Load Balancer e VPN.

Escalabilidade dinâmica:

- Com essa arquitetura, é possível ligar e desligar instâncias de acordo com o horário de trabalho.
- Exemplo: duas instâncias durante o expediente e apenas uma no período da noite.
- Reduzindo custos conforme a demanda do sistema.


Resultados Observados



Com a infraestrutura completa na AWS, obtivemos:

- Melhor tempo de resposta nas telas
- Mais estabilidade e menos travamentos em horários de pico
- Capacidade para muito mais conexões simultâneas
- Facilidade para escalar adicionando ou removendo instâncias EC2
- Economia de custos com instâncias ARM e escalabilidade inteligente
- Segurança reforçada com acesso apenas VPN + HTTPS
- Arquivos protegidos e armazenados no S3
- Banco de dados confiável no RDS Aurora MySQL


Conclusão



Se você deseja escalar seu sistema Adianti Framework com estabilidade, segurança, performance e ótimo custo-benefício, montar essa estrutura na AWS usando Load Balancer + Redis + RDS + S3 é uma solução extremamente eficaz.

Mesmo para sistemas de pequeno ou médio porte, essa arquitetura já se paga em segurança, velocidade e preparo para o crescimento.

Implementação real no sistema MS Gestor, utilizando:


- Adianti Framework 7.5.1
- PHP 8.2
- Redis (ElastiCache AWS)
- Load Balancer (ALB AWS)
- RDS Aurora MySQL AWS
- Armazenamento de arquivos no S3 AWS
- Instâncias EC2 ARM (m7g.medium AWS)

Infraestrutura 100% em AWS, focada em alta disponibilidade, segurança, escalabilidade e performance.


- Nosso próximo objetivo é realizar testes de compatibilidade e desempenho com o Adianti Framework 8.1, para aproveitar as novas melhorias e recursos da nova versão.
Editado 02/05/2025 (há 6 dias) - Clique para ver alterações

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (0)