Roadmap - VPS Escala e Mobile
Registrar a ordem prática de execução para sair do monorepo atual e chegar a uma plataforma com:
Leitura pensada para explicar responsabilidades, ordem de execução e trechos reais do código com foco no fluxo da implementação.
Objetivo do guia
Registrar a ordem prática de execução para sair do monorepo atual e chegar a uma plataforma com:
- painel administrativo;
- storefront web;
- backend dedicado;
- base única de dados;
- capacidade de expansão para app mobile.
Premissa operacional
O primeiro ciclo deve caber em uma VPS dedicada, sem depender de serviços pagos obrigatórios.
Ao mesmo tempo, cada parte precisa nascer desacoplada o suficiente para migrar depois para serviços maiores sem reescrever o produto.
Onda 1 - Fechar a base atual do monorepo
Objetivo:
- consolidar o que já existe antes de trocar a persistência.
Entregas:
EcommPaneloperacional.- Blog com publicação e moderação.
- Analytics interno.
- API pública
v1. - Home dinâmica opcional.
- Documentação e runbook claros.
Critério de saída:
- o painel consegue operar conteúdo, tema, blog, analytics e publicação com previsibilidade.
Onda 2 - Subir a plataforma completa na VPS
Objetivo:
- trocar a execução ad hoc por serviços claros, versionáveis e reproduzíveis.
Stack recomendada:
Docker ComposeCaddyouNginxNext.jsparaecommpanelNext.jsparastorefrontFastifyparaapiworkerpara tarefas assíncronasPostgreSQLPgBouncerRedisMinIO
Entregas:
composepara desenvolvimento e VPS.- Volumes persistentes para banco, cache e mídia.
- TLS, gzip/brotli e roteamento por subdomínio.
- Healthchecks por serviço.
- Backup inicial de banco e mídia.
Capacidade de partida esperada
Para uma VPS pequena de entrada, com 1 vCPU e aproximadamente 4 GB RAM, a expectativa correta não é pensar em grande escala logo de saída.
Cenários de leitura:
- páginas estáticas, assets e conteúdo muito cacheável: algumas centenas de conexões abertas podem coexistir bem;
- navegação real de loja com cache razoável: cerca de
100usuários simultâneos ativos é uma meta prudente; - busca, checkout, estoque e administração em cima da mesma máquina: o limite cai rápido e a latência sobe cedo;
500usuários simultâneos só entram como cenário parcialmente cacheado e com baixa pressão de escrita;10 milusuários simultâneos não entram como premissa de arquitetura para essa faixa de VPS.
Essa estimativa existe para orientar expectativa e ordem de investimento, não para substituir benchmark de carga.
Decisão de banco dedicado
O banco do produto não será instalado em cima dos bancos já usados por outros serviços da VPS.
A diretriz é:
- banco novo e dedicado para o ecossistema
EcommPanel+ storefront + futura API; - cache dedicado;
- storage dedicado;
- mesma topologia no local e na VPS.
Na prática, isso significa que uma segunda VPS com a mesma configuração já melhora bastante a entrada em produção quando ela for usada para isolar dados e cache.
Onda 3 - Fundamento de dados e segurança
Objetivo:
- sair do mock operacional e entrar em persistência confiável.
Primeiros domínios a migrar:
userssessionsrolesaudit_logscatalog_productscatalog_skuscatalog_categoriescatalog_collections
Primeiras garantias obrigatórias:
- migration versionada;
- seed inicial;
- RBAC persistido;
- trilha de auditoria;
- sessão expirada por servidor;
- ações críticas com registro rastreável.
Onda 4 - Catálogo, estoque e checkout com concorrência
Objetivo:
- impedir divergência entre sessões e sustentar compra real.
Regras estruturais:
- leitura pública pode usar cache;
- escrita crítica não depende de cache;
- estoque e pedido precisam passar por transação;
- checkout precisa de idempotência;
- reserva de estoque precisa de expiração e reconciliação.
Entregas:
- CRUD administrativo de produto, SKU, categoria e coleção.
- Módulo de mídia por produto.
- Preço e disponibilidade por SKU.
- Carrinho server-side.
- Checkout transacional.
- Pedido com status e histórico.
Onda 5 - Performance de leitura
Objetivo:
- manter painel e storefront rápidos ao mesmo tempo.
Estratégia recomendada:
Painel
no-store;- leitura do dado mais recente;
- foco em consistência operacional.
Storefront e mobile
- read models;
- cache HTTP;
Redis;- invalidação por publish, preço, estoque e promoção.
Busca
Começar com o próprio PostgreSQL e índice textual.
Abrir OpenSearch depois quando filtros, volume e relevância justificarem a nova peça.
Onda 6 - Segurança de produção e operação em VPS
Objetivo:
- reduzir risco antes de escalar horizontalmente.
Medidas recomendadas sem custo obrigatório:
UFWou firewall equivalente.Fail2ban.- rate limiting no proxy e na API.
- cabeçalhos de segurança.
- webhook assinado.
- segredos fora do repositório.
- observabilidade com
Prometheus,GrafanaeLoki. - rotina de backup testada.
Observação importante:
Essas medidas ajudam muito contra abuso de aplicação e tráfego descontrolado, mas não substituem proteção de borda forte para DDoS volumétrico. Quando o tráfego crescer, o próximo passo natural é adicionar uma camada externa de CDN e WAF.
Onda 7 - Módulos comerciais avançados
Objetivo:
- fechar o domínio que sustenta a loja como produto real.
Entradas principais:
- promoções por regra;
- cupons;
- gift cards;
- logística por região;
- preferências do cliente;
- conta do cliente;
- histórico de pedidos e recompra.
Onda 8 - App mobile em Flutter
Objetivo:
- entregar um cliente multiplataforma usando a mesma plataforma do web.
Direção recomendada:
Fluttercomo cliente mobile.- Mesmo backend usado por
EcommPanele storefront. - Mesmo banco de dados.
- Mesmo domínio de autenticação, catálogo, oferta, carrinho e pedido.
O aplicativo não deve depender do código React do web. Ele deve depender da mesma plataforma.
Contratos que precisam permanecer estáveis
Para a expansão funcionar sem retrabalho, estes contratos precisam ser tratados como produto:
- autenticação e sessão;
- catálogo e preço;
- disponibilidade e estoque;
- carrinho e checkout;
- conteúdo editorial;
- analytics e eventos;
- promoções e benefícios.
Critérios para sair da VPS única
Sinais de que a arquitetura precisa ser separada:
- CPU sustentada alta durante picos.
- disputa de I/O entre aplicação e banco.
- backlog crescente em filas.
- latência do banco sob carga concorrente.
- crescimento forte de mídia.
- necessidade real de borda global.
Quando isso acontecer, a migração fica mais simples se já estivermos com:
- serviços separados;
- banco isolável;
- cache isolável;
- storage compatível com
S3; - API estável;
- observabilidade pronta.