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: |
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 |
- **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, documentos e imagens |
- **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. |
Aqui vou explicar **como fizemos**, **por que isso melhora o desempenho**, e **como configurar** de maneira prática na AWS. |
<h4>Por que usar Load Balancer + Redis na AWS</h4> |
- ** - - - |
Além disso: |
- Usamos |
--- |
- |
- |
- |
- |
- |
- Sistema rodando o |
Toda a infraestrutura foi provisionada e configurada dentro da |
--- |
- No console da AWS, vá em |
- |
- Configure o Security Group liberando a porta |
Em cada instância EC2 (Ubuntu 22.04), instale o Redis PHP extension: |
```bash |
sudo apt update |
sudo apt install php-redis |
sudo systemctl restart apache2 |
``` |
Ajustar o PHP para usar o Redis |
No php.ini da sua instância EC2: |
No `php.ini` da sua instância EC2: |
```ini |
session.save_handler = redis |
session.save_path = "tcp://ENDPOINT_DO_REDIS:6379" |
``` |
4. Configurar o Load Balancer (ALB AWS) |
sudo systemctl restart apache2 ``` ### 4. Configurar o Load Balancer (ALB AWS) - Escolha o tipo |
- Configure listeners para HTTP ou HTTPS. |
- No Target Group, associe suas instâncias EC2. |
5. Configurar o Bucket S3 para arquivos temporários |
- 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. |
- No console da AWS, vá em |
- Configure instâncias com Multi-AZ para alta disponibilidade. |
- Defina segurança de acesso permitindo apenas conexões internas (via VPC e VPN). |
--- |
No arquivo |
```ini |
[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 ( |
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. |
|
Além da alta disponibilidade, a segurança também foi uma prioridade nesta configuração na AWS: |
- Apenas via |
- A |
- Nenhuma conexão direta exposta ao público. |
- |
- As instâncias EC2 |
- O acesso externo é feito |
- Com essa arquitetura, é possível |
- Exemplo: duas instâncias durante o expediente e apenas uma no período da noite. |
- Reduzindo custos conforme a demanda do sistema. |
--- |
Com a infraestrutura completa na AWS, obtivemos: |
- Melhor |
- Mais |
- Capacidade para muito mais conexões simultâneas |
- |
- |
- |
- |
- |
--- |
Se você deseja |
Mesmo para sistemas de pequeno ou médio porte, essa arquitetura já se paga em segurança, velocidade e preparo para o crescimento. |
--- |
<h4>Implementação real no sistema MS Gestor, utilizando: </h4> |
- 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. |
> **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. |
- ## Próximo Passo |