Diagrama de Implantação - ES2-UFPI/EsqueceramAI GitHub Wiki

3. Diagrama de Implantação

3.1 Implantação física

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
Loading

3.2 Mapeamento dos nós

Nó do Usuário

Executa a aplicação cliente em um navegador e utiliza recursos como interface, câmera, upload de fotos e conexão com a internet.

Nó de Aplicação

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.

Nó de Banco de Dados

Executa o PostgreSQL e armazena os dados estruturados do sistema.

Serviços Firebase

  • Firebase Storage: armazenamento de imagens;
  • Firebase Cloud Messaging: envio de notificações.

3.3 Comunicação entre os nós

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

3.4 Escalabilidade e disponibilidade

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.


⚠️ **GitHub.com Fallback** ⚠️