Diagrama de Implantação - ES2-UFPI/EsqueceramAI GitHub Wiki
A implantação separa o dispositivo do usuário, o servidor da aplicação, o banco de dados e os serviços externos.
flowchart LR
subgraph CLIENTE["Nó do Usuário"]
BROWSER["Navegador Web"]
FRONT["Frontend<br/>HTML + CSS + JavaScript"]
CAMERA["Câmera / Upload de Foto"]
BROWSER --> FRONT
FRONT --> CAMERA
end
subgraph CLOUD["Ambiente de Nuvem"]
subgraph APPNODE["Nó de Aplicação"]
SERVER["Servidor Backend"]
FLASK["Python + Flask"]
API["API REST"]
SERVICES["Módulos de Negócio"]
SERVER --> FLASK
FLASK --> API
API --> SERVICES
end
subgraph DBNODE["Nó de Banco de Dados"]
PG[("PostgreSQL")]
end
subgraph FBNODE["Serviços Firebase"]
STORAGE["Firebase Storage"]
FCM["Firebase Cloud Messaging"]
end
end
FRONT -->|"HTTPS / REST / JSON ou multipart"| API
SERVICES -->|"Acesso aos dados"| PG
SERVICES -->|"Upload / referência da imagem"| STORAGE
SERVICES -->|"Evento de notificação"| FCM
FCM -->|"Push Notification"| BROWSER
Executa a aplicação cliente em um navegador e utiliza recursos como interface, câmera, upload de fotos e conexão com a internet.
Executa o backend em Python/Flask e é responsável por expor a API, autenticar usuários, processar regras de negócio, executar o Match, controlar estados e integrar serviços externos.
Executa o PostgreSQL e armazena os dados estruturados do sistema.
- Firebase Storage: armazenamento de imagens;
- Firebase Cloud Messaging: envio de notificações.
Navegador
↓ HTTPS / REST / JSON ou multipart
Backend Flask
↓
Services
↓
Repositories
↓
PostgreSQL
Para imagens:
Navegador → Backend → Firebase Storage
Para notificações:
Backend → Firebase Cloud Messaging → Navegador
A separação entre cliente, backend, banco e serviços externos permite evoluir cada parte de forma independente.
Caso o número de usuários cresça, o backend poderá ser executado em mais de uma instância atrás de um balanceador de carga. O PostgreSQL poderá ser dimensionado conforme a necessidade, enquanto o Firebase permanece responsável pelas funcionalidades especializadas.
Para o escopo atual, não é necessário adotar microsserviços. O monólito modular reduz a complexidade de implantação e é suficiente para o projeto acadêmico.