infracloud/vps/nc1/architecture.md

4.1 KiB

Arquitetura do Sistema NC1

Este documento detalha a topologia dos serviços, fluxo de rede e componentes da infraestrutura.

Diagrama de Arquitetura

O diagrama abaixo ilustra a comunicação entre o proxy reverso (Traefik), serviços de aplicação, bancos de dados e ferramentas de suporte.

flowchart LR
    %% Nós Externos
    Internet((Internet)) -->|HTTPS/443| T[Traefik Proxy]
    
    %% Core Infrastructure
    subgraph Support ["Infraestrutura de Suporte"]
        direction TB
        VW[Vaultwarden]
        FG[Forgejo Git]
        PG[(PostgreSQL)]
        RD[(Redis)]
    end
    
    %% Core Services
    subgraph Core ["Core Platform"]
        CIG[Identity Gateway]
        CPP[Platform Projects]
        CDB[Core Dashboard]
    end
    
    %% SaveInMed Ecosystem
    subgraph SaveInMed ["Ecosistema SaveInMed"]
        SIMB[Backend API]
        SIMM[Marketplace]
    end
    
    %% Q1 Connect Ecosystem
    subgraph Q1 ["Q1 Connect"]
        direction TB
        subgraph Q1Apps ["Apps"]
            Q1FOOD[Food Backend]
            Q1VEST[Vestuário/Store]
            Q1ABE[Agenda Backend]
            Q1AFE[Agenda Frontend]
        end
        subgraph Q1Management ["Gestão"]
            Q1BE[Total Backend]
            Q1DB[Total Dashboard]
        end
    end
    
    %% Sextando Ecosystem
    subgraph Sextando ["Sextando"]
        SXBE[Backend API]
        SXFE[Frontend Web]
    end
    
    %% Invent Ecosystem
    subgraph Invent ["Invent Finance"]
        INVBE[Backend API]
        INVFE[Frontend App]
    end

    %% Virtual Fashion Ecosystem
    subgraph VFashion ["Virtual Fashion"]
        VFBE[Backend API]
        VFFE[Frontend Web]
        VFMIN[MinIO Storage]
    end

    %% Invoice Ninja Ecosystem
    subgraph InvoiceNinja ["Invoice Ninja"]
        INAPP[App FPM]
        INWEB[Web Nginx]
        INDB[(MariaDB)]
    end

    %% Rotas do Traefik
    T --> VW
    T --> FG
    T --> CIG
    T --> CPP
    T --> CDB
    T --> SIMB
    T --> SIMM
    T --> INVBE
    T --> INVFE
    T --> Q1BE
    T --> Q1DB
    T --> Q1FOOD
    T --> Q1VEST
    T --> Q1ABE
    T --> Q1AFE
    T --> SXBE
    T --> SXBE
    T --> SXFE
    T --> VFBE
    T --> VFFE
    T --> VFMIN
    T --> INWEB

    %% Conexões de Banco de Dados (Link Styles)
    linkStyle default stroke-width:2px,fill:none,stroke:gray;

    %% Dependências de Dados
    CIG -.-> PG
    CPP -.-> PG
    INVBE -.-> PG
    Q1BE -.-> PG
    Q1FOOD -.-> PG
    Q1VEST -.-> PG
    Q1ABE -.-> PG
    SXBE -.-> PG
    SIMB === PG
    SIMB === PG
    SIMB === RD
    VFBE -.-> PG
    INAPP === INDB

Descrição dos Componentes

🌐 Gateway & Proxy

  • Traefik: Ponto de entrada único (Entrypoint). Gerencia certificados SSL (Let's Encrypt), roteamento de host e load balancing. Escuta nas portas 80 (Redirect) e 443 (HTTPS).

🔐 Segurança & Identidade

  • Core Identity Gateway: Responsável pela autenticação centralizada e gestão de tokens.
  • Vaultwarden: Gerenciador de senhas para a equipe (compatível com Bitwarden).

🏥 SaveInMed

Plataforma principal de gestão médica e marketplace.

  • Backend API: Serviço core, utiliza Redis para cache de sessões/dados e PostgreSQL para persistência.
  • Marketplace: Interface de vendas e catálogo.

🛍️ Q1 Connect

Suíte de aplicativos de comércio e agendamento.

  • Total: Backend administrativo e Dashboard.
  • Setoriais: APIs específicas para Food, Vestuário/Store e Agenda.

🛒 Sextando & Vestuário

Plataformas de e-commerce. Backend em Go, Frontend em Node.js/React.

💰 Invent Finance

Sistema financeiro com separação clara entre Backend e Frontend.

👗 Virtual Fashion

Plataforma de moda virtual.

  • Backend/Frontend: Node.js/Next.js.
  • Armazenamento: MinIO para assets 3D/Imagens.

🧾 Invoice Ninja

Sistema de faturamento e gestão.

  • Stack: PHP (App), Nginx (Web), MariaDB (Banco Dedicado).

Infraestrutura de Dados

  • PostgreSQL: Instância única compartilhada entre todos os serviços (exceto Vaultwarden que pode ter seu próprio banco ou schema).
  • Redis: Sistema de cache em memória, utilizado intensivamente pelo SaveInMed para alta performance.