Plataforma serverless Next.js

Migrar de
Vercel para HeroCtl

Vercel Pro a US$20 por dev mais bandwidth mais functions vira fatura imprevisível em USD.

Tempo: 1-3 semanas pra app Next.js típica. Mais perto de 3 semanas se usou KV+Postgres+Blob; perto de 1 se foi só Next.js puro.R$1.000 a R$2.000 por mês — R$12.000 a R$24.000 por ano.
Aplicação Next.js em Vercel, time crescendo, fatura mensal escalando sem teto claro: bandwidth, function invocations, image optimization, KV reads, Postgres rows. Um pico de tráfego ou um ataque DDoS e a próxima fatura assusta.
TL;DR

Vercel é insuperável pra deploy de Next.js em 30 segundos — git push e tá no ar. O preço dessa conveniência é cobrança por uso em quase tudo: US$20 por seat de Pro, bandwidth medido, function invocations medidas, image optimization medida. Aplicação que cresce esbarra em fatura mensal de US$300-800 fácil. Pior: lock-in nas primitivas Vercel KV, Postgres e Blob — você troca seu Redis e Postgres por SDKs proprietários. Migrar pra HeroCtl leva 1-3 semanas dependendo do quanto você usou de Vercel-only. Next.js roda em standalone output dentro de container, KV vira Redis, Postgres vira Postgres, Blob vira S3-compatível. Economia típica é de R$1.000-2.000/mês em USD evaporado.

Por que sair

  • Custo em USD imprevisível — bandwidth, functions, KV reads cobrados por evento
  • Lock-in em primitivas: Vercel KV, Postgres, Blob têm SDK proprietário
  • Ataque DDoS vira boleto: cada request bloqueado contou como invocação
  • Image optimization paga por transformação processada — bot que vasculha tudo dói

O que você ganha

  • Custo por servidor, não por request — pico de tráfego não vira surpresa na fatura
  • Redis e Postgres padrão, sem SDK proprietário travando você
  • DDoS limitado pelo seu próprio rate-limit, não pelo limite do cartão de crédito
  • Image optimization rodando localmente, sem markup
Plano de migração

7 passos, sem mistério

  1. 01

    Configurar Next.js standalone output

    1 dia

    Adicione output: "standalone" no next.config.js. Build local pra confirmar que .next/standalone gera. Esse é o ponto de partida do Dockerfile.

  2. 02

    Substituir Vercel KV por Redis

    2-3 dias

    Troque @vercel/kv pelos clientes Redis padrão (ioredis ou redis). Suba um Redis no cluster destino. Migre as chaves via DUMP/RESTORE ou re-população.

  3. 03

    Substituir Vercel Postgres

    1-2 dias

    Se usou @vercel/postgres, migre pra pg ou Drizzle/Prisma com connection string padrão. Postgres normal no cluster.

  4. 04

    Substituir Vercel Blob por S3-compatível

    2-3 dias

    Troque @vercel/blob por SDK S3 (@aws-sdk/client-s3) apontando pra MinIO ou Cloudflare R2. Migre arquivos com rclone.

  5. 05

    Estratégia de image optimization

    1-2 dias

    next/image precisa de optimizer. Use sharp local (já vem com Next standalone) ou aceite servir imagens não-otimizadas e use um CDN na frente.

  6. 06

    ISR e cache de página

    2 dias

    ISR funciona em standalone mas precisa de filesystem persistente ou storage compartilhado entre réplicas. Decida: 1 réplica com volume, ou Redis-backed cache.

  7. 07

    DNS, monitoramento e cutover

    1-2 dias

    TTL pra 60s, valide em domínio shadow, troca de A record, monitore 4xx/5xx por 48h. Cancele Vercel só após 7 dias estáveis.

Quanto tempo no total

1-3 semanas pra app Next.js típica. Mais perto de 3 semanas se usou KV+Postgres+Blob; perto de 1 se foi só Next.js puro.

Quanto economiza

R$1.000 a R$2.000 por mês — R$12.000 a R$24.000 por ano.

Vercel Pro: 4 seats × US$20US$80/mês ≈ R$400
Bandwidth (1 TB)US$40/mês ≈ R$200
Function invocationsUS$60/mês ≈ R$300
KV + Postgres + BlobUS$100/mês ≈ R$500
Image optimizationUS$30/mês ≈ R$150
Total Vercel típicoUS$310/mês ≈ R$1.550
Cluster destino (3 VPS 4GB)R$240/mês
Economia mensalR$1.310/mês

Antes vs Depois

Critério Vercel HeroCtl
Modelo de custoPor requestPor servidor
MoedaUSDBRL
Custo mensal típicoUS$310R$240
Pico de tráfegoVira boletoAbsorve até saturar CPU
Cache key-valueVercel KV (proprietário)Redis padrão
BancoVercel Postgres (proprietário)Postgres padrão
Blob storageVercel Blob (proprietário)S3-compatível
Lock-inAlto (SDKs Vercel)Baixo (imagens Docker)
Riscos e como mitigar

Onde costuma doer

Edge functions usadas em middleware têm semântica diferente em standalone

Mitigação Mapeie cada middleware. Maioria roda igual em Node runtime; algumas (geo IP) precisam de header equivalente vindo do roteador.

ISR com revalidação por tag depende de cache compartilhado

Mitigação Use Redis-backed cache (next-cache-redis) ou pin a 1 réplica por enquanto e escale só com cache externo.

Bandwidth de imagens cresce sem image optimization

Mitigação CDN na frente (Cloudflare grátis) cacha imagens e absorve a diferença. Ou ative sharp + cache de disco no container.

Webhook do Stripe/etc apontava pro domínio Vercel

Mitigação Liste todos os webhooks externos antes do cutover. Atualize cada um nas primeiras horas do cutover.

Comece pelo Community

Cluster com alta disponibilidade real, gratuito permanente, sem feature gates. A migração de Vercel costuma se pagar em 1-2 ciclos de fatura.

Outras migrações: Heroku·Coolify·AWS