Arquitetura de Microsserviços de Alta Performance para Logística e Transporte.
O TripShare é uma solução de backend robusta para aplicativos de transporte (semelhante ao Uber/99), focado em oferecer taxas justas para motoboys. O projeto foi construído utilizando o conceito de Infrastructure as Code (IaC), com microsserviços isolados em containers LXC, orquestração Docker e comunicação via rede interna de baixa latência.
O sistema roda em um ambiente virtualizado Proxmox, onde cada responsabilidade é isolada em seu próprio container (LXC) para segurança e escalabilidade.
graph TD
User([📱 App/Cliente]) -->|HTTPS| CF[Cloudflare Tunnel]
CF -->|Túnel Seguro| Nginx[Gateway Nginx .10]
subgraph "Rede Interna (192.168.0.x)"
Nginx -->|Proxy Reverso| API[Backend Node.js .53]
API -->|Cache & PubSub| Redis[Redis .51]
API -->|SQL/Geo| DB[(PostGIS .50)]
API -->|Rotas/Custo| OSRM[Engine de Mapas .52]
end
| Serviço | Tecnologia | Função | IP Interno (LXC) |
|---|---|---|---|
| Gateway | Nginx + Cloudflare | Proxy Reverso, SSL Offloading e Roteamento | 192.168.0.10 |
| Backend | Node.js (Express) | API REST, Regras de Negócio e Precificação | 192.168.0.53 |
| Database | PostgreSQL + PostGIS | Armazenamento de Usuários e Dados Geoespaciais | 192.168.0.50 |
| Cache | Redis (Alpine) | Gerenciamento de Sessão e Tempo Real | 192.168.0.51 |
| Geo Engine | OSRM (C++) | Cálculo de Rotas e Distâncias (Mapas Offline) | 192.168.0.52 |
- Cálculo de Rotas Offline: Utiliza uma instância própria do OSRM com mapas da região Norte do Brasil, eliminando custos com APIs externas (Google Maps).
- Precificação Dinâmica: Algoritmo que calcula o valor justo da corrida baseada em
(Km * Tarifa) + (Tempo * Tarifa). - Geolocalização: Armazenamento e consulta de coordenadas geográficas (Latitude/Longitude) com precisão via PostGIS.
- Segurança (Hardening):
- Todos os serviços rodam atrás de um Firewall (UFW) com política "Deny All".
- Acesso externo apenas via Cloudflare Tunnel (Portas do roteador fechadas).
- Variáveis de ambiente (
.env) para proteção de credenciais.
- Alta Disponibilidade: Serviços configurados com
PM2eDocker Restart Policiespara recuperação automática.
tripshare/
├── backend/ # Código Fonte da API (Node.js)
│ ├── server.js # Entrypoint e Rotas
│ └── src/ # Lógica de aplicação
├── database/ # Modelagem de Dados
│ └── schema.sql # Estrutura das tabelas (Usuários, Corridas, Geo)
├── infra/ # Infrastructure as Code (Scripts de Provisionamento)
│ ├── install_redis.sh # Script de Hardening + Deploy Redis
│ ├── install_osrm.sh # Script de Compilação de Mapas + OSRM
│ ├── install_backend.sh # Setup de ambiente Node + PM2
│ ├── terraform/ # (Roadmap) Provisionamento Declarativo
│ │ └── main.tf # Plano de migração para Proxmox API
│ └── nginx/ # Configurações do Gateway
│ └── tripshare-api.conf # Regras de Proxy e WebSocket
└── docs/ # Documentação técnica e diagramasO projeto inclui um plano de migração (/infra/terraform/main.tf) para substituir os scripts de criação manuais por Terraform, visando gerenciar o estado da infraestrutura Proxmox de forma declarativa e versionada.
Este projeto foi desenhado para ser agnóstico, mas os scripts de automação em infra/ são otimizados para Debian/Ubuntu em LXC.
- Servidor Proxmox ou Máquina Linux (Ubuntu 22.04+).
- Docker e Docker Compose instalados.
Para executar a criação automática da infraestrutura, o Terraform deve ser instalado no Shell do servidor Proxmox.
1. Instalar dependências e Chave GPG:
apt-get update && apt-get install -y gnupg software-properties-common curl
wget -O- [https://apt.releases.hashicorp.com/gpg](https://apt.releases.hashicorp.com/gpg) | \
gpg --dearmor | \
tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null2. Adicionar Repositório Oficial: Utilizamos o repositório bookworm (Debian 12) para garantir compatibilidade, mesmo se o Proxmox estiver em versões de teste (Trixie).
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
[https://apt.releases.hashicorp.com](https://apt.releases.hashicorp.com) bookworm main" | \
tee /etc/apt/sources.list.d/hashicorp.list3. Instalar Terraform:
apt update && apt-get install terraform -yComo corrigir:
- Remova o arquivo de lista corrompido:
rm /etc/apt/sources.list.d/hashicorp.list- Adicione o repositório manualmente fixando a versão estável:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] [https://apt.releases.hashicorp.com](https://apt.releases.hashicorp.com) bookworm main" | tee /etc/apt/sources.list.d/hashicorp.list3.Atualize e instale novamente:
apt update && apt install terraform -yCada serviço possui seu script de "Auto Deploy". Exemplo para subir o Banco de Dados:
# Exemplo de provisionamento
cd infra
chmod +x install_redis.sh
./install_redis.shGET /
Verifica se a API e os microsserviços estão online.
POST /api/simular-corrida
Calcula o preço e rota sem salvar no banco.
{
"origem": "-48.4806,-1.4500",
"destino": "-48.4598,-1.4397"
}POST /api/solicitar-corrida
Registra o pedido, persiste no PostgreSQL e inicia o fluxo.
{
"id_passageiro": 1,
"origem": "-48.4806,-1.4500",
"destino": "-48.4598,-1.4397"
}- Infraestrutura Base (LXC/Docker)
- Gateway e SSL (Nginx/Cloudflare)
- Banco de Dados Geoespacial
- Engine de Rotas (OSRM)
- Autenticação JWT
- Comunicação em Tempo Real (Socket.io + Redis Pub/Sub)
- App Mobile (React Native)
- Migração da Infraestrutura para Terraform (Provisionamento Declarativo)
Developed with 💜 by Davidson