... | @@ -220,105 +220,141 @@ A arquitetura do backend foi projetada com os seguintes objetivos: |
... | @@ -220,105 +220,141 @@ A arquitetura do backend foi projetada com os seguintes objetivos: |
|
- **Robustez** → O uso de DTOs com validação automática na camada de Controller garante a integridade dos dados na entrada da API, prevenindo a propagação de dados inválidos para as camadas internas.
|
|
- **Robustez** → O uso de DTOs com validação automática na camada de Controller garante a integridade dos dados na entrada da API, prevenindo a propagação de dados inválidos para as camadas internas.
|
|
|
|
|
|
|
|
|
|
# Arquitetura AWS - AI Produtor
|
|
# Arquitetura AWS
|
|
|
|
|
|
## Visão Geral
|
|
## Visão Geral
|
|
|
|

|
|
|
|
Esta arquitetura descreve a infraestrutura da aplicação **AI Produtor**, construída inteiramente sobre a **AWS (Amazon Web Services)**.
|
|
|
|
Ela é composta por uma camada de **frontend** (site hospedado no Amplify), uma camada de **backend** (API sem servidor com AWS Lambda) e um **pipeline CI/CD automatizado** via GitLab Runner e Docker.
|
|
|
|
|
|
A aplicação AI Produtor é hospedada na AWS utilizando uma arquitetura moderna e escalável que combina serviços gerenciados para garantir alta disponibilidade, segurança e desempenho. A infraestrutura segue o modelo serverless onde possível, reduzindo custos operacionais e simplificando a manutenção.
|
|
O objetivo é garantir **escalabilidade**, **segurança**, **baixo custo operacional** e **entrega contínua**.
|
|
|
|
|
|
## Diagrama de Deploy
|
|
---
|
|
|
|
|
|

|
|
## Fluxo de Requisições
|
|
|
|
|
|
## Serviços AWS Utilizados
|
|
### 1. Cliente
|
|
|
|
Usuários acessam a aplicação via:
|
|
|
|
- **https://ai-produtor.com/** → Frontend (interface web)
|
|
|
|
- **https://api.ai-produtor.com/** → Backend (API REST)
|
|
|
|
|
|
### 1. AWS Amplify (Hospedagem do Frontend)
|
|
---
|
|
|
|
|
|
**Função**: Hospedagem e deploy contínuo da aplicação Next.js
|
|
### 2. Amazon Route 53
|
|
|
|
O **Amazon Route 53** atua como o serviço DNS, responsável por rotear o tráfego:
|
|
|
|
- **Frontend** → AWS Amplify
|
|
|
|
- **Backend (API)** → Amazon API Gateway
|
|
|
|
|
|
**Configuração**:
|
|
Funções principais:
|
|
- Deploy automático a partir do repositório GitLab
|
|
- Gerencia domínios e subdomínios.
|
|
- Branch main → ambiente de produção
|
|
- Redireciona requisições de forma segura e escalável.
|
|
- Branchs de desenvolvimento → ambientes preview
|
|
- Suporta SSL/TLS e monitoramento de integridade.
|
|
|
|
|
|
**Vantagens**:
|
|
---
|
|
- CI/CD integrado sem configuração adicional
|
|
|
|
- SSL automático com HTTPS
|
|
|
|
- Cache inteligente e CDN integrado
|
|
|
|
- Escalabilidade automática
|
|
|
|
|
|
|
|
### 2. Amazon Route 53 (Serviço de DNS)
|
|
### 3. AWS Amplify
|
|
|
|
O **AWS Amplify** hospeda o **frontend** da aplicação (ex: React, Vue, Angular).
|
|
|
|
Fornece:
|
|
|
|
- Deploy automático integrado ao GitLab.
|
|
|
|
- CDN global para alta performance.
|
|
|
|
- HTTPS e SSL automáticos.
|
|
|
|
- Rollback de versões e CI/CD simplificado.
|
|
|
|
|
|
**Função**: Gerenciamento de domínios e roteamento de tráfego
|
|
---
|
|
|
|
|
|
**Configuração**:
|
|
### 4. Amazon API Gateway
|
|
- Domínio principal: `ai-produtor.com`
|
|
O **Amazon API Gateway** é a porta de entrada para o backend, hospedando os endpoints da API.
|
|
- Subdomínio API: `api.ai-produtor.com`
|
|
|
|
- Records A apontando para Amplify e API Gateway
|
|
|
|
|
|
|
|
**Vantagens**:
|
|
Funções:
|
|
- Alta disponibilidade e confiabilidade
|
|
- Controle de acesso (IAM, JWT, Cognito, etc.).
|
|
- Health checking e failover automático
|
|
- Limitação de requisições (throttling).
|
|
- Integração com certificados SSL
|
|
- Conversão e roteamento de payloads.
|
|
|
|
- Integração direta com **AWS Lambda**.
|
|
|
|
|
|
### 3. Amazon API Gateway (Gerenciamento de API)
|
|
---
|
|
|
|
|
|
**Função**: Entry point para todas as requisições do backend
|
|
### 5. AWS Lambda
|
|
|
|
O **AWS Lambda** executa o código backend sob demanda, sem necessidade de gerenciar servidores.
|
|
|
|
|
|
**Configuração**:
|
|
Responsabilidades:
|
|
- REST API com recursos organizados por domínio
|
|
- Processamento de requisições recebidas pelo API Gateway.
|
|
- Configuração de CORS para o domínio do Amplify
|
|
- Consultas a dados no **Amazon RDS**.
|
|
- Throttling e rate limiting
|
|
- Acesso a segredos armazenados no **AWS Secrets Manager**.
|
|
- Logging detalhado com CloudWatch
|
|
- Execução escalável e pagamento por uso.
|
|
|
|
|
|
**Endpoints Principais**:
|
|
---
|
|
- `POST /auth/login`
|
|
|
|
- `GET /producers`
|
|
|
|
- `POST /areas`
|
|
|
|
- `GET /harvests`
|
|
|
|
|
|
|
|
### 4. AWS Lambda (Execução do Backend)
|
|
### 6. AWS Secrets Manager
|
|
|
|
Serviço responsável por armazenar com segurança:
|
|
|
|
- Credenciais do banco de dados.
|
|
|
|
- Tokens e chaves sensíveis.
|
|
|
|
- Senhas e variáveis de ambiente.
|
|
|
|
|
|
**Função**: Execução da aplicação NestJS em ambiente serverless
|
|
Benefícios:
|
|
|
|
- Evita exposição de segredos no código.
|
|
|
|
- Rotaciona automaticamente credenciais.
|
|
|
|
- Integração nativa com Lambda e RDS.
|
|
|
|
|
|
**Configuração**:
|
|
---
|
|
- Runtime: Node.js 18.x
|
|
|
|
- Memory: 1024MB (ajustável conforme necessidade)
|
|
### 7. Amazon RDS
|
|
- Timeout: 30 segundos
|
|
O **Amazon Relational Database Service (RDS)** hospeda o banco de dados relacional da aplicação.
|
|
- VPC configuration para acesso ao RDS
|
|
Pode ser **PostgreSQL**, **MySQL** ou outro motor compatível.
|
|
|
|
|
|
**Integração**:
|
|
Características:
|
|
- Cada rota do API Gateway invoca uma função Lambda
|
|
- Backup automatizado.
|
|
- Arquitetura de monólito serverless (single Lambda)
|
|
- Alta disponibilidade e escalabilidade.
|
|
- Cold start mitigation strategies
|
|
- Segurança via VPC e grupos de segurança.
|
|
|
|
|
|
### 5. Amazon RDS (Banco de Dados)
|
|
---
|
|
|
|
|
|
**Função**: Armazenamento persistente dos dados da aplicação
|
|
### 8. CI/CD – Amazon EC2 + Docker + GitLab Runner
|
|
|
|
Pipeline de deploy automatizado, responsável pela entrega contínua do backend.
|
|
|
|
|
|
**Configuração**:
|
|
- O **GitLab Runner** roda em uma instância **Amazon EC2**.
|
|
- Engine: PostgreSQL 15+
|
|
- Usa **Docker** para construir e empacotar as imagens da aplicação.
|
|
- Extensão: PostGIS para dados geoespaciais
|
|
- Envia as imagens para o **AWS Elastic Container Service (ECS)**.
|
|
- Instance: db.t3.micro (development) / db.t3.small (production)
|
|
- Automatiza build, testes e deploy a cada commit no repositório.
|
|
- Storage: 20GB GP2 inicial (auto-scaling habilitado)
|
|
|
|
|
|
---
|
|
|
|
|
|
**Recursos de Segurança**:
|
|
### 9. AWS Elastic Container Service (ECS)
|
|
- Execução dentro de VPC privada
|
|
O **ECS** orquestra os containers do backend.
|
|
- Backup automático diário
|
|
|
|
- Multi-AZ para alta disponibilidade (production)
|
|
|
|
|
|
|
|
### 6. AWS Secrets Manager (Gerenciamento de Credenciais)
|
|
Funções:
|
|
|
|
- Gerenciamento de containers via Docker.
|
|
|
|
- Escalonamento automático.
|
|
|
|
- Integração com Load Balancer e CloudWatch.
|
|
|
|
- Deploy automatizado via GitLab Runner.
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Segurança e Boas Práticas
|
|
|
|
|
|
|
|
- Todo o tráfego é HTTPS via **Route 53 + Amplify**.
|
|
|
|
- Segredos são armazenados apenas no **Secrets Manager**.
|
|
|
|
- **Lambda** utiliza políticas IAM com menor privilégio possível.
|
|
|
|
- Containers no ECS rodam em sub-redes privadas.
|
|
|
|
- Logs e métricas são enviados para **CloudWatch**.
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Fluxo Completo
|
|
|
|
|
|
|
|
| Etapa | Origem | Destino | Descrição |
|
|
|
|
|-------|--------|----------|-----------|
|
|
|
|
| 1 | Cliente | Route 53 | Usuário acessa domínio principal ou API |
|
|
|
|
| 2 | Route 53 | AWS Amplify | Entrega do frontend web |
|
|
|
|
| 3 | Route 53 | API Gateway | Redireciona requisições para backend |
|
|
|
|
| 4 | API Gateway | Lambda | Executa lógica de negócio |
|
|
|
|
| 5 | Lambda | Secrets Manager | Obtém credenciais seguras |
|
|
|
|
| 6 | Lambda | RDS | Acessa dados da aplicação |
|
|
|
|
| 7 | GitLab Runner (EC2 + Docker) | ECS | Build e deploy automatizado |
|
|
|
|
| 8 | ECS | Lambda/API | Mantém serviços backend disponíveis |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
**Função**: Armazenamento seguro de informações sensíveis
|
|
## Conclusão
|
|
|
|
|
|
**Itens Gerenciados**:
|
|
Esta arquitetura combina **simplicidade operacional**, **alta disponibilidade** e **segurança corporativa**, aproveitando o ecossistema AWS para suportar o crescimento contínuo do projeto AI Produtor.
|
|
- Credenciais do banco de dados RDS
|
|
|
|
- Chaves de API de serviços externos
|
|
|
|
- Tokens JWT secrets
|
|
|
|
- Configurações sensíveis da aplicação
|
|
|
|
|
|
|
|
**Vantagens**:
|
|
|
|
- Rotação automática de credenciais
|
|
|
|
- Controle de acesso via IAM
|
|
|
|
- Versionamento de secrets
|
|
|
|
- Auditoria de acesso |
|
|
|
\ No newline at end of file |
|
|