Do básico ao expert · Edição mercado de trabalho · 2026

Vercel: do primeiro deploy à arquitetura em produção

Uma trilha completa e prática para dominar a plataforma que roda boa parte da web moderna — escrita para quem quer usar esse conhecimento em entrevistas, no dia a dia do trabalho e na evolução de carreira.

20 módulos Exercícios práticos Perguntas de entrevista Atualizada · 2026
BásicoDeploy, CLI, domínios, env vars
▲▲Intermediáriovercel.json, Next.js, Functions, Edge
▲▲▲AvançadoCache, storage, segurança, CI/CD
▲▲▲▲ExpertFluid, monorepos, IA, arquitetura
Antes de começar

Como usar esta apostila

Cada módulo segue a mesma estrutura: objetivo, conteúdo com exemplos reais, uma caixa "No mercado" explicando como aquilo aparece em vagas e entrevistas, e um exercício prático. No final há um banco de perguntas de entrevista com respostas.

💡 Pré-requisitos

JavaScript/TypeScript básico, noção de Git e terminal. Conhecer React/Next.js ajuda muito nos módulos 7 em diante, mas não é obrigatório para os primeiros.

Módulo 1 Básico

O que é a Vercel

Objetivo: entender o que a plataforma faz, de onde veio e por que ela aparece em tantas vagas.

A Vercel é uma plataforma de nuvem focada em aplicações web. Ela cuida de tudo que acontece depois que você escreve o código: build, deploy, CDN global, funções serverless, cache, domínios, HTTPS, observabilidade e segurança. A empresa foi fundada por Guillermo Rauch em 2015 (como ZEIT, renomeada Vercel em 2020) e é a criadora do Next.js, o framework React mais usado do mercado.

O problema que ela resolve

Sem uma plataforma assim, colocar um app profissional no ar exige montar e manter: servidor ou cluster, pipeline de CI/CD, CDN, certificados SSL, escalabilidade automática, ambientes de homologação e rollback. A Vercel entrega isso com um git push. O conceito central é a Framework-defined Infrastructure: a plataforma lê o seu código (Next.js, Nuxt, SvelteKit, Astro, Remix, Vite etc.) e provisiona sozinha a infraestrutura ideal — páginas estáticas viram arquivos na CDN, rotas dinâmicas viram funções serverless, middleware roda na borda.

Os três pilares

Planos

PlanoPreçoPara quem
HobbyGrátisProjetos pessoais e não comerciais. Perfeito para portfólio e estudo.
Pro~US$ 20/mês por membro + usoFreelancers, times e empresas. Inclui crédito mensal de uso.
EnterpriseSob consultaSLA, compliance, suporte dedicado, isolamento e segurança avançada.
💼 No mercado

"Deploy na Vercel" aparece em vagas de front-end e full-stack como sinônimo de "sabe colocar um projeto Next.js em produção do jeito certo". Em entrevistas, saber explicar o que a Vercel abstrai (CI/CD, CDN, serverless, SSL) mostra maturidade de engenharia — você entende a infra mesmo sem administrá-la manualmente. Startups e agências valorizam muito porque reduz custo de DevOps.

✅ Exercício

Crie uma conta gratuita (Hobby) em vercel.com usando seu GitHub. Explore o dashboard e localize: Projects, Domains, Storage, Observability e Settings. Não faça deploy ainda — só mapeie o território.

Módulo 2 Básico

Primeiro deploy e o fluxo Git

Objetivo: colocar um projeto no ar e entender previews, produção e rollback — o coração do workflow.

Deploy pelo Git (o jeito profissional)

  1. Suba seu projeto para um repositório (GitHub, GitLab ou Bitbucket).
  2. No dashboard, clique em Add New → Project e importe o repositório.
  3. A Vercel detecta o framework e preenche build command e output automaticamente. Confirme e clique em Deploy.
  4. Em ~1 minuto você recebe uma URL seu-projeto.vercel.app com HTTPS.

Os três tipos de deployment

TipoQuando aconteceURL
ProductionPush/merge na branch de produção (geralmente main)Seu domínio final
PreviewPush em qualquer outra branch ou PR abertoURL única e compartilhável por commit
Local/CLIComando vercel no terminalURL de preview

Preview Deployments são o superpoder do fluxo: cada Pull Request ganha um ambiente idêntico ao de produção, com link postado automaticamente no PR. Designer, QA e PM testam antes do merge. Com Comments ativado, stakeholders comentam direto na tela do preview.

Rollback instantâneo

Todo deploy fica imutável no histórico. Se produção quebrar: Project → Deployments → escolha um deploy anterior → Instant Rollback. A troca é de segundos, porque nada é rebuildado — a Vercel só reaponta o domínio para o deploy antigo.

💡 Configurações de build que você vai mexer
  • Framework Preset: detectado automaticamente; force se necessário.
  • Root Directory: essencial em monorepos (módulo 15).
  • Build Command / Output Directory: sobrescreva para setups fora do padrão.
  • Node.js Version: fixe a mesma versão do seu ambiente local.
💼 No mercado

O fluxo "PR → preview → aprovação → merge → produção" é exatamente o processo de times maduros. Em entrevistas comportamentais, cite como você usou preview deployments para acelerar code review e QA — é uma resposta forte para "como você garante qualidade antes do deploy?". Saber fazer rollback em segundos também responde bem a perguntas sobre incidentes.

✅ Exercício

Faça deploy de um projeto Next.js (pode ser npx create-next-app). Depois: crie uma branch, mude o título da home, abra um PR e observe a URL de preview. Faça merge e confirme que produção atualizou. Por fim, pratique um Instant Rollback e volte.

Módulo 3 Básico

Vercel CLI

Objetivo: dominar a linha de comando — indispensável para debug, scripts e CI/CD.

npm i -g vercel      # instalar
vercel login         # autenticar
vercel link          # conectar a pasta local a um projeto Vercel

Comandos essenciais

ComandoO que faz
vercelCria um deploy de preview da pasta atual
vercel --prodDeploy direto para produção
vercel devAmbiente local emulando funções, rewrites e env vars
vercel env pull .env.localBaixa as variáveis de ambiente para um arquivo local
vercel logs <url>Logs em tempo real de um deployment
vercel lsLista deployments do projeto
vercel inspect <url>Detalhes de um deployment (rotas, funções, build)
vercel rollback / vercel promoteReverter produção / promover um deploy a produção
vercel buildBuilda localmente gerando a pasta .vercel/output (Build Output API) — base do CI/CD avançado
⚠️ Cuidado clássico

vercel --prod na mão, fora do fluxo de Git, pode publicar código que não passou por review. Em times, produção deve sair só de merge na branch principal ou de pipeline de CI. Use o deploy manual para emergências conscientes.

💼 No mercado

A CLI separa quem "clica no dashboard" de quem automatiza. vercel build + vercel deploy --prebuilt dentro do GitHub Actions (módulo 14) é padrão em empresas que precisam rodar testes antes do deploy — cite isso quando perguntarem sobre pipeline.

✅ Exercício

No projeto do módulo 2: rode vercel link, depois vercel dev e navegue localmente. Crie um deploy de preview com vercel e acompanhe com vercel logs enquanto acessa a URL.

Módulo 4 Básico

Domínios, DNS e HTTPS

Objetivo: sair do .vercel.app e configurar um domínio próprio como um profissional.

Conectando um domínio

Em Project → Settings → Domains, adicione o domínio. A Vercel mostra exatamente os registros a criar no seu provedor (Registro.br, Cloudflare, GoDaddy…):

O certificado SSL é automático e renovado sozinho (Let's Encrypt). Você nunca gerencia certificado na mão.

Boas práticas

💼 No mercado

Configurar domínio + SSL + redirects canônicos é tarefa recorrente em agências e freelas — e muita gente trava nela. Saber explicar a diferença entre registro A, CNAME e delegação de nameserver resolve 90% dos chamados de "site fora do ar depois da troca de domínio".

✅ Exercício

Se tiver um domínio (um .com.br custa ~R$40/ano), conecte-o ao seu portfólio com redirect de www para o raiz. Sem domínio: adicione um subdomínio .vercel.app customizado e configure um segundo domínio de produção apontando para outra branch.

Módulo 5 Básico

Variáveis de ambiente e segredos

Objetivo: gerenciar chaves de API e configurações por ambiente sem nunca vazar um segredo.

Os três ambientes

Cada variável em Settings → Environment Variables pode valer para Production, Preview e/ou Development — e, dentro de Preview, até para uma branch específica. Isso permite, por exemplo, apontar previews para um banco de testes e produção para o banco real.

# fluxo típico no dia a dia
vercel env add DATABASE_URL production   # cria via CLI
vercel env pull .env.local               # sincroniza para rodar local
# .env.local está no .gitignore — nunca comite segredos!

Regras de ouro

⚠️ Erro que reprova em code review

Commitar .env no repositório ou expor SUPABASE_SERVICE_ROLE_KEY/STRIPE_SECRET_KEY com NEXT_PUBLIC_. Recrutadores técnicos olham o GitHub dos candidatos — um segredo commitado no histórico é péssimo sinal.

💼 No mercado

"Como você gerencia segredos entre ambientes?" é pergunta comum de entrevista full-stack. Resposta forte: variáveis por ambiente na Vercel, vercel env pull para desenvolvimento, valores sensíveis marcados como Sensitive, e — nível sênior — OIDC federation para acessar AWS/GCP sem armazenar chave nenhuma (módulo 13).

✅ Exercício

Crie APP_MESSAGE com valores diferentes em Production e Preview. Leia no servidor (process.env.APP_MESSAGE) e exiba na página. Abra um PR e compare a mensagem do preview com a de produção.

Módulo 6 Intermediário

vercel.json a fundo

Objetivo: controlar roteamento, headers, crons e comportamento das funções por configuração declarativa.

O arquivo vercel.json na raiz do projeto configura a plataforma. Os campos mais usados no trabalho real:

vercel.json
{
  "redirects": [
    { "source": "/blog-antigo/:slug", "destination": "/blog/:slug", "permanent": true }
  ],
  "rewrites": [
    { "source": "/api/proxy/:path*", "destination": "https://api.externa.com/:path*" }
  ],
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        { "key": "X-Content-Type-Options", "value": "nosniff" },
        { "key": "X-Frame-Options", "value": "DENY" },
        { "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" }
      ]
    }
  ],
  "crons": [
    { "path": "/api/relatorio-diario", "schedule": "0 9 * * *" }
  ],
  "functions": {
    "api/pesada.ts": { "maxDuration": 300, "memory": 1769 }
  },
  "regions": ["gru1"]
}

Conceitos-chave

💼 No mercado

Migrações de site com centenas de redirects, headers de segurança exigidos por pentest e crons de rotina (limpeza, relatórios, sincronização) são demandas semanais em empresas. Chegar numa entrevista sabendo a diferença 301/308 e rewrite/redirect já te coloca acima da média.

✅ Exercício

Adicione ao seu projeto: (1) um redirect permanente de /antiga para /; (2) os três headers de segurança do exemplo; (3) um cron que chama uma rota a cada 10 minutos e registra console.log(new Date()) — confira nos logs.

Módulo 7 Intermediário

Next.js na Vercel: renderização e infraestrutura

Objetivo: entender como cada estratégia de renderização vira infraestrutura — o assunto favorito das entrevistas.

A Vercel transforma seu código Next.js em infraestrutura automaticamente. Saber o que vira o quê é o conhecimento mais cobrado em entrevistas de front-end moderno:

EstratégiaNo códigoVira na VercelUse quando
SSG (estático)Página sem dados dinâmicos ou com generateStaticParamsHTML na CDN globalLanding pages, docs, blog
ISR (incremental)revalidate = 60 ou revalidateTag()HTML cacheado que se regeneraE-commerce, CMS, catálogos
SSR (dinâmico)cookies(), headers(), no-storeVercel Function por requestDashboards, conteúdo por usuário
Streaming/PPR<Suspense> + partes estáticasCasca estática + streaming dinâmicoO melhor dos dois mundos
Client"use client" + fetch no browserJS estático na CDNInteratividade pura

Recursos que só funcionam "de graça" na Vercel

💡 Regra mental para escolher renderização

Comece estático. Se o dado muda, ISR. Se o dado é por usuário, SSR (ou casca estática + parte dinâmica em Suspense). SSR "em tudo por garantia" é o erro de arquitetura mais comum — custa mais e é mais lento que servir da CDN.

💼 No mercado

"Explique SSR vs. SSG vs. ISR e quando usar cada um" é praticamente garantida em entrevistas React/Next.js. Responda com o trade-off de infraestrutura (CDN vs. função, custo, latência, frescor do dado), não só com a definição — é isso que diferencia pleno de júnior.

✅ Exercício

Crie três rotas: /estatica (SSG), /isr com revalidate = 30 exibindo new Date(), e /ssr com no-store. Faça deploy, recarregue cada uma e explique (em voz alta, como numa entrevista) por que os horários se comportam diferente.

Módulo 8 Intermediário

Vercel Functions

Objetivo: escrever, configurar e depurar o backend serverless que atende suas rotas dinâmicas e APIs.

Como criar

Em Next.js (App Router), qualquer route.ts é uma função. Em projetos sem framework, arquivos na pasta api/ viram endpoints:

app/api/ola/route.ts
export async function GET(request: Request) {
  const { searchParams } = new URL(request.url);
  const nome = searchParams.get("nome") ?? "mundo";
  return Response.json({ mensagem: `Olá, ${nome}!` });
}

export async function POST(request: Request) {
  const body = await request.json();
  // validar, gravar no banco, chamar API externa...
  return Response.json({ ok: true }, { status: 201 });
}

O que você precisa saber

import { waitUntil } from "@vercel/functions";

export async function POST(req: Request) {
  const pedido = await criarPedido(await req.json());
  waitUntil(enviarEmailDeConfirmacao(pedido)); // roda após a resposta
  return Response.json(pedido, { status: 201 });
}
⚠️ Armadilhas clássicas de serverless
  • Estado em memória não persiste entre invocações — use banco, Redis ou Blob.
  • Conexões de banco: use pooling (Neon/Supabase pooled connection, Prisma Accelerate) — abrir conexão direta por invocação derruba Postgres.
  • Sistema de arquivos é somente leitura, exceto /tmp (efêmero).
💼 No mercado

Debugar "function timeout" e "too many connections" é rito de passagem de todo dev full-stack em serverless. Saber diagnosticar com vercel logs, ajustar maxDuration, usar pooling e mover trabalho para waitUntil são histórias excelentes para a pergunta "conte um problema difícil que você resolveu".

✅ Exercício

Crie POST /api/contato que valida um JSON {nome, email, mensagem}, responde 201 imediatamente e usa waitUntil para logar a mensagem 3 segundos depois (simulando envio de e-mail). Verifique nos logs que o log aparece após a resposta.

Módulo 9 Intermediário

Edge Network, Middleware e geolocalização

Objetivo: interceptar requisições na borda da rede para auth, redirecionamentos, A/B tests e personalização por região.

A Edge Network é a camada global da Vercel: recebe toda requisição no ponto de presença mais próximo do usuário, serve cache e aplica firewall antes de qualquer código seu rodar. O Middleware é o código que você executa nessa camada, antes da rota:

middleware.ts
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

export function middleware(request: NextRequest) {
  // 1. Proteção de rota
  const sessao = request.cookies.get("sessao");
  if (!sessao && request.nextUrl.pathname.startsWith("/app")) {
    return NextResponse.redirect(new URL("/login", request.url));
  }

  // 2. Personalização por país (header injetado pela Vercel)
  const pais = request.headers.get("x-vercel-ip-country") ?? "BR";
  const resposta = NextResponse.next();
  resposta.headers.set("x-pais", pais);

  // 3. A/B test simples via cookie + rewrite
  const grupo = request.cookies.get("ab")?.value ?? (Math.random() < 0.5 ? "a" : "b");
  if (request.nextUrl.pathname === "/promo") {
    const r = NextResponse.rewrite(new URL(`/promo/${grupo}`, request.url));
    r.cookies.set("ab", grupo);
    return r;
  }
  return resposta;
}

export const config = { matcher: ["/app/:path*", "/promo"] };

Pontos importantes

💼 No mercado

Times de produto usam middleware para experimentos A/B e rollout gradual sem tocar no app inteiro; times de segurança, para gate de auth centralizado. "Onde você colocaria a verificação de autenticação num app Next.js?" é pergunta de entrevista — a resposta madura envolve middleware para o gate + verificação de sessão no servidor.

✅ Exercício

Implemente o middleware acima adaptado: proteja /dashboard exigindo um cookie sessao e crie /login que seta esse cookie ao clicar num botão. Depois exiba o país detectado na home.

Módulo 10 Avançado

Caching avançado e ISR na prática

Objetivo: dominar as camadas de cache — a habilidade que mais separa sênior de pleno em performance e custo.

As camadas de cache na Vercel

  1. Cache do navegador — controlado por Cache-Control: max-age.
  2. CDN / Edge Cache — controlado por s-maxage e stale-while-revalidate; compartilhado entre todos os usuários da região.
  3. ISR / Data Cache do framework — cache de páginas e de fetch gerenciado pelo Next.js, com revalidação por tempo ou sob demanda.
Cache na CDN via headers (qualquer framework)
export async function GET() {
  const dados = await buscarCotacoes();
  return Response.json(dados, {
    headers: {
      // navegador não guarda; CDN guarda 60s e serve versão
      // "velha" por até 5min enquanto revalida em background
      "Cache-Control": "public, max-age=0, s-maxage=60, stale-while-revalidate=300"
    }
  });
}
ISR sob demanda (Next.js App Router)
// pagina: cacheia o fetch e etiqueta
const posts = await fetch("https://cms.com/posts", {
  next: { tags: ["posts"], revalidate: 3600 }
}).then(r => r.json());

// app/api/revalidar/route.ts — chamado pelo webhook do CMS
import { revalidateTag } from "next/cache";
export async function POST(req: Request) {
  if (req.headers.get("x-secret") !== process.env.REVALIDATE_SECRET)
    return new Response("nope", { status: 401 });
  revalidateTag("posts");
  return Response.json({ revalidado: true });
}

Depurando cache como gente grande

💼 No mercado

Perguntas do tipo "o site está lento/caro, o que você faz?" esperam exatamente este raciocínio: medir, identificar rotas com MISS constante, aplicar s-maxage/ISR e mover o que der para estático. Cite o header x-vercel-cache numa entrevista e o entrevistador saberá que você já operou isso de verdade.

✅ Exercício

Crie uma rota de API com o header do primeiro exemplo. Usando as DevTools, acesse várias vezes e observe x-vercel-cache mudar de MISS para HIT e, após 60s, STALE. Depois monte o par página com tag + rota de revalidação e dispare a atualização sob demanda.

Módulo 11 Avançado

Storage: Edge Config, Blob e Marketplace

Objetivo: escolher e usar a camada de dados certa para cada problema.

ProdutoO que éUse para
Edge ConfigChave-valor ultrarrápido replicado na borda (leitura em ~ms, escrita rara)Feature flags, listas de bloqueio, redirects dinâmicos, configuração
Vercel BlobArmazenamento de arquivos com URL pública/privada e CDNUploads de usuário, imagens, PDFs, vídeos
Marketplace: NeonPostgres serverless (branching de banco!)Dados relacionais — o padrão para SaaS
Marketplace: UpstashRedis serverlessCache de aplicação, filas simples, rate limiting, sessões
Marketplace: AWSAurora, DynamoDB, OpenSearch integrados ao dashboardCargas enterprise sem sair do fluxo Vercel

Desde 2024/2025 a Vercel migrou seus bancos próprios para o Marketplace: você provisiona Neon, Upstash e até serviços AWS direto do dashboard, com billing unificado e variáveis de ambiente injetadas automaticamente no projeto.

Exemplo: feature flag com Edge Config (leitura no middleware)
import { get } from "@vercel/edge-config";

export async function middleware(request: NextRequest) {
  const manutencao = await get("modo_manutencao"); // ~1ms na borda
  if (manutencao && !request.nextUrl.pathname.startsWith("/manutencao")) {
    return NextResponse.rewrite(new URL("/manutencao", request.url));
  }
  return NextResponse.next();
}
Exemplo: upload com Vercel Blob
import { put } from "@vercel/blob";

export async function POST(request: Request) {
  const form = await request.formData();
  const arquivo = form.get("arquivo") as File;
  const blob = await put(`uploads/${arquivo.name}`, arquivo, {
    access: "public",
    addRandomSuffix: true
  });
  return Response.json({ url: blob.url });
}
💡 Neon branching muda o jogo

O Neon cria branches de banco de dados — combinado com preview deployments, cada PR pode ter uma cópia isolada do banco de produção. Testar migração destrutiva sem medo é argumento fortíssimo em entrevista.

💼 No mercado

O stack "Next.js + Vercel + Neon/Supabase + Upstash + Blob" é hoje o caminho mais rápido para MVP em startups — e vaga de "full-stack Next.js" quase sempre subentende ele. Saber justificar qual storage para qual problema (relacional vs. KV vs. arquivo vs. config de borda) é pergunta clássica de system design.

✅ Exercício

Provisione um Edge Config, crie a flag modo_manutencao e implemente o middleware acima. Alterne a flag pelo dashboard e veja o site inteiro entrar/sair de manutenção sem redeploy.

Módulo 12 Avançado

Observabilidade: analytics, vitals e logs

Objetivo: medir antes de otimizar — e provar impacto com números, como um sênior.

As ferramentas

app/layout.tsx
import { Analytics } from "@vercel/analytics/react";
import { SpeedInsights } from "@vercel/speed-insights/next";

export default function RootLayout({ children }) {
  return (
    <html lang="pt-BR">
      <body>
        {children}
        <Analytics />
        <SpeedInsights />
      </body>
    </html>
  );
}

Fluxo de investigação de um erro em produção

  1. Alerta ou reclamação → abrir Logs filtrando por status >= 500.
  2. Identificar a rota e o deployment → conferir se começou após um deploy específico.
  3. Se sim: Instant Rollback primeiro, investigação depois.
  4. Reproduzir no preview, corrigir, e acompanhar a taxa de erro cair.
💼 No mercado

Melhoria de Core Web Vitals é resultado mensurável para o currículo: "reduzi o LCP de 4,2s para 1,8s (Speed Insights), com impacto em conversão" vale mais do que qualquer lista de tecnologias. Em entrevistas de sênior, a pergunta "como você monitora produção?" espera exatamente logs + vitals + alertas + processo de incidente.

✅ Exercício

Ative Analytics e Speed Insights no seu portfólio. Crie um custom event (track("clique_cv")) no botão de download do currículo. Depois force um erro 500 numa rota e pratique o fluxo de investigação nos logs.

Módulo 13 Avançado

Segurança na plataforma

Objetivo: proteger app, deploys e credenciais — requisitos cada vez mais explícitos em vagas.

Camadas de proteção

Segredos sem segredos: OIDC Federation

Em vez de guardar AWS_ACCESS_KEY_ID como variável de ambiente, a função Vercel apresenta um token OIDC de curta duração ao provedor (AWS/GCP/Azure), que o troca por credenciais temporárias. Nada de chave de longa duração para vazar — é a resposta "nível staff" para gestão de credenciais.

Checklist de segurança de projeto

  1. Headers de segurança (HSTS, nosniff, frame-options — módulo 6).
  2. Segredos como Sensitive; zero segredos no client (NEXT_PUBLIC_ auditado).
  3. Rate limit em rotas de autenticação e de custo alto.
  4. Deployment Protection ligado em previews de produto fechado.
  5. Rotas de cron e revalidação validando secret no header.
  6. Papéis de time no privilégio mínimo; 2FA obrigatório.
💼 No mercado

Pentests e auditorias (SOC 2, LGPD) chegam para toda empresa que cresce — e o dev que sabe apontar "isso o WAF resolve com managed rules + rate limit, isso exige header, isso é OIDC" encurta semanas de trabalho. Segurança é dos temas que mais aceleram promoção a sênior.

✅ Exercício

No Firewall do seu projeto, crie uma regra de rate limit para /api/contato (ex.: 5 req/min por IP) e teste estourando o limite. Depois ative Deployment Protection nos previews e confirme que a URL passou a exigir autenticação.

Módulo 14 Avançado

CI/CD profissional

Objetivo: montar pipelines com testes bloqueantes, deploys controlados e releases graduais.

O fluxo nativo (suficiente para muita empresa)

Git conectado já é um CI/CD: build por push, preview por PR, produção por merge. Refinamentos nativos: Checks (integrações que bloqueiam o deploy se testes/Lighthouse falharem), Deploy Hooks (URLs que disparam rebuild — perfeitas para webhook de CMS), Ignored Build Step (pular builds quando nada relevante mudou) e proteção de branch no próprio Git.

Pipeline com GitHub Actions (controle total)

Quando o time exige testes, lint e migrações antes de qualquer deploy, o padrão é buildar no CI e enviar o resultado pronto:

.github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npm test                      # testes bloqueiam o deploy
      - run: npm i -g vercel
      - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
      - run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
      - run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}

O trio pull → build → deploy --prebuilt usa a Build Output API: o build acontece no seu CI e a Vercel só recebe o artefato — mesmo pipeline para preview (sem --prod).

Release avançado

💼 No mercado

"Descreva seu pipeline ideal" é pergunta certa em entrevista pleno/sênior. Resposta completa: PR → lint+testes no CI → preview na Vercel → aprovação → merge → build no CI → deploy --prebuilt → rollout gradual por flag → monitoramento → rollback instantâneo se necessário. Decorou esse parágrafo, levou a vaga.

✅ Exercício

Implemente o workflow acima num repositório com um teste simples (Vitest/Jest). Gere o VERCEL_TOKEN nas configurações da conta, adicione como secret no GitHub e prove que um teste quebrado impede o deploy.

Módulo 15 Expert

Monorepos e Turborepo

Objetivo: organizar múltiplos apps e pacotes num só repositório com builds rápidos — o padrão de empresas médias e grandes.

Num monorepo, site institucional, app, docs e pacotes compartilhados (UI, config, tipos) vivem juntos. O Turborepo (mantido pela Vercel) orquestra as tarefas com cache e paralelismo:

estrutura típica
meu-monorepo/
├── apps/
│   ├── web/        → projeto Vercel 1 (site)
│   └── app/        → projeto Vercel 2 (dashboard)
├── packages/
│   ├── ui/         → design system compartilhado
│   └── config/     → eslint, tsconfig, tailwind
└── turbo.json
turbo.json
{
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": [".next/**", "!.next/cache/**"]
    },
    "test": { "dependsOn": ["build"] },
    "lint": {}
  }
}

Como a Vercel encaixa

💼 No mercado

Monorepo com Turborepo é o setup de empresas como as que você quer entrar — e "experiência com monorepos" aparece literalmente em vagas de sênior. Saber explicar remote caching (hash dos inputs → artefato reutilizado) e o truque do turbo-ignore demonstra vivência real, não tutorial.

✅ Exercício

Crie um monorepo com npx create-turbo@latest (vem com dois apps Next.js e um pacote de UI). Conecte os dois apps como projetos separados na Vercel com Root Directory correto e turbo-ignore. Mude só um app e confirme que o outro não rebuildou.

Módulo 16 Expert

Fluid Compute e engenharia de custos

Objetivo: entender o modelo de execução moderno da Vercel e otimizar a fatura como responsabilidade de engenharia.

O que é Fluid Compute

O serverless clássico (estilo Lambda) seguia "1 requisição = 1 instância": cold start frequente e desperdício — você pagava a instância inteira enquanto ela esperava o banco ou uma API de IA responder. O Fluid Compute (padrão desde 2025, sobre microVMs próprias da Vercel) muda o modelo:

⚠️ Consequência de arquitetura

Com concorrência, estado global no módulo é compartilhado entre requisições simultâneas. Variável global mutável por request é bug de corrida esperando para acontecer — mantenha estado por requisição dentro do handler.

Playbook de otimização de custos

  1. Cache primeiro: todo HIT na CDN é invocação não paga (módulo 10). É a alavanca nº 1.
  2. Estático onde der: SSR desnecessário é o maior gerador de custo evitável.
  3. Imagens: limite os tamanhos gerados pelo Image Optimization; imagem de terceiros sem controle infla transformações.
  4. Funções enxutas: menos CPU por request = menos custo; mova trabalho pesado para jobs/queues.
  5. Proteja rotas caras: rate limit e bot filtering evitam pagar pela CPU de scrapers.
  6. Spend Management: configure alertas e teto de gastos com pausa automática — apresentar isso num time demonstra senioridade.
💼 No mercado

"A fatura da Vercel explodiu, o que você faz?" virou pergunta real de entrevista. Resposta: analisar o dashboard de uso (qual SKU cresceu — edge requests? CPU? imagens?), correlacionar com rotas via Observability, aplicar o playbook acima e instituir teto de gastos. Engenheiro que fala de custo como métrica técnica se destaca imediatamente.

✅ Exercício

Crie uma rota que faz await fetch para uma API externa lenta e observe no dashboard de uso a diferença entre duração total e CPU ativa. Depois adicione s-maxage=60 e meça a queda de invocações.

Módulo 17 Expert

IA na Vercel: AI SDK, Gateway, v0 e agentes

Objetivo: dominar o stack de IA da plataforma — a área que mais abre vagas em 2026.

AI SDK

O Vercel AI SDK é a biblioteca TypeScript mais usada para apps de IA: interface única para dezenas de modelos (OpenAI, Anthropic, Google…), streaming pronto, saída estruturada e tool calling.

app/api/chat/route.ts
import { streamText } from "ai";

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = streamText({
    model: "anthropic/claude-sonnet-4-6", // resolvido pelo AI Gateway
    system: "Você é um assistente de suporte da loja.",
    messages
  });
  return result.toUIMessageStreamResponse(); // streaming p/ useChat()
}

As peças do stack

PeçaO que faz
AI GatewayUm endpoint para todos os provedores: troca de modelo por string, fallback automático, métricas e custo unificado, sem markup nos tokens (inclusive com sua própria chave)
v0Gerador de UI por prompt (v0.app) — de ideia a componente React/Tailwind pronto para colar no projeto
SandboxMicroVMs isoladas para executar código não confiável — ex.: código gerado por LLM — com segurança
Agents / eveFramework open source da Vercel para agentes em produção: execução durável, subagentes, aprovações e avaliações
MCP serversA plataforma hospeda servidores Model Context Protocol — o padrão para conectar LLMs a ferramentas e dados

Por que a Vercel é forte para IA

💼 No mercado

"AI Engineer" e "Full-stack com IA" são as vagas que mais crescem, e o AI SDK aparece nominalmente em muitas delas. Um chat com streaming + tool calling + rate limiting no portfólio responde na prática a entrevista inteira. Bônus: use o v0 para protótipos e cite ganho de velocidade — times adoram.

✅ Exercício

Construa um chat com useChat() + a rota acima, streaming visível e uma tool (ex.: consultar previsão do tempo). Proteja com rate limit do Firewall. Este projeto vai direto para o portfólio do módulo 19.

Módulo 18 Expert

Backends completos e arquitetura enterprise

Objetivo: enxergar a Vercel além do front — e saber decidir quando usá-la ou não.

Vercel como plataforma de backend (2026)

Arquitetura de referência de um SaaS

Usuário
  │
  ▼
Edge Network ──► Firewall/WAF + Bot filtering + Rate limit
  │
  ├─ Cache HIT ──► resposta da CDN (maioria do tráfego)
  ▼
Middleware (auth gate, geo, flags via Edge Config)
  │
  ├─ Páginas: estático + ISR + streaming (Next.js)
  ├─ APIs: Vercel Functions (Fluid, região gru1)
  │     ├─► Neon Postgres (pooled)
  │     ├─► Upstash Redis (cache/rate limit)
  │     └─► Blob (arquivos)  ·  AI Gateway (LLMs)
  └─ Assíncrono: Queues + Cron + waitUntil
Observabilidade: Logs → Drain (Datadog) · Speed Insights · Alertas

Quando a Vercel NÃO é a resposta

A resposta madura raramente é "tudo ou nada": borda + front + APIs na Vercel, e cargas especializadas onde fizerem sentido — conversando via HTTP e filas.

💼 No mercado

Em entrevista de system design, desenhe a arquitetura de referência acima e — crucial — aponte espontaneamente os limites da plataforma. Saber dizer "isso eu não colocaria na Vercel, e eis o porquê" transmite o critério que se espera de um sênior/staff.

✅ Exercício

Desenhe (papel ou Excalidraw) a arquitetura de um app de delivery: catálogo, pedido, pagamento (webhook), notificação e painel do restaurante. Marque o que fica em cada camada da Vercel, o que vai para fila e o que ficaria fora — e defenda cada escolha em voz alta.


Módulo 19 Carreira

Vercel no mercado de trabalho

Objetivo: transformar tudo o que você aprendeu em entrevista marcada e proposta assinada.

Onde esse conhecimento é pedido

Faixas salariais (referência ampla, Brasil, 2026)

NívelCLT nacionalRemoto internacional
Júnior~R$ 3–6 milraro, mas existe em agências
Pleno~R$ 7–13 mil~US$ 2–4 mil/mês
Sênior~R$ 14–25 mil+~US$ 4–8 mil/mês+

Valores variam muito por região, empresa e negociação — use como ordem de grandeza, não como promessa. O ponto: o domínio de deploy/infra descrito nesta apostila é justamente um dos fatores que puxam do meio da faixa para o topo.

Os 3 projetos de portfólio que abrem portas

  1. SaaS completo: Next.js + auth + Neon Postgres + Stripe (modo teste) + ISR no conteúdo público + dashboard SSR. Demonstra os módulos 5–11.
  2. App de IA: chat com AI SDK, streaming, tool calling e rate limiting (módulo 17). É o projeto que mais gera conversa em 2026.
  3. Monorepo com site + app + design system e Turborepo com remote caching (módulo 15). Fala a língua das empresas maiores.

Como apresentar (isso importa tanto quanto o código)

💡 Existe certificação?

A Vercel não mantém uma certificação oficial tradicional — o mercado valida por projeto no ar + conversa técnica. Os cursos gratuitos de Next.js (nextjs.org/learn) e a documentação oficial são o material de referência; esta apostila organiza a trilha e o vocabulário de entrevista.

✅ Exercício final de carreira

Escolha UM dos três projetos e defina um escopo de 2–3 semanas. Publique com domínio, analytics, README caprichado e um post no LinkedIn. Depois volte ao módulo 20 e simule a entrevista.

Módulo 20 Carreira

Banco de perguntas de entrevista + glossário

Clique em cada pergunta para ver a resposta-modelo. Treine respondendo em voz alta antes de abrir.

Qual a diferença entre preview e production deployment?

Todo push gera um deployment imutável. Pushes na branch de produção atualizam o domínio principal; qualquer outra branch/PR gera uma URL de preview isolada, com a mesma infraestrutura de produção. Isso permite validar visual, funcional e performance antes do merge — e produção pode ser revertida em segundos apontando o domínio para um deployment anterior (Instant Rollback).

Explique SSG, SSR e ISR e o trade-off de cada um.

SSG gera HTML no build e serve da CDN: máxima velocidade e custo mínimo, mas dado congelado até o próximo build. SSR renderiza a cada requisição numa função: dado sempre fresco e por usuário, porém mais latência e custo. ISR fica no meio: serve estático da CDN e regenera em background por tempo (revalidate) ou sob demanda (revalidateTag) — ideal para catálogos e CMS. Regra: começo estático, ISR se o dado muda, SSR só quando é por usuário.

O que roda no Edge Middleware e o que NÃO deve rodar lá?

Middleware roda na borda antes da rota: checagem de cookie/sessão, redirects, rewrites, A/B test, geolocalização, feature flag via Edge Config. Não deve fazer trabalho pesado nem consultas lentas a banco — cada milissegundo ali soma em todas as requisições. Dado necessário na borda vai para Edge Config (leitura de ~1ms).

O que é Fluid Compute e por que muda o custo?

É o modelo de execução da Vercel em que uma instância atende múltiplas requisições concorrentes e o preço é por CPU ativa, não por tempo total. Como APIs e apps de IA passam a maior parte do tempo esperando I/O, essa espera quase não custa. Também reduz cold starts (reuso de instância + cache de bytecode) e permite funções de até 30 minutos. Consequência de código: estado global do módulo é compartilhado entre requisições — evite mutação global.

Como você depuraria uma página lenta em produção na Vercel?

1) Speed Insights para ver qual métrica sofre (LCP? INP?) e em qual página/dispositivo. 2) Header x-vercel-cache: se é MISS constante, a rota está executando função quando podia ser cache — aplicar s-maxage/ISR. 3) Se a função é lenta, logs e tracing para achar a query/chamada externa; considerar região gru1 junto do banco. 4) Imagens e fontes otimizadas via next/image e next/font. Medir de novo e reportar o antes/depois.

Como gerenciar segredos entre ambientes com segurança?

Variáveis por ambiente (Production/Preview/Development) no dashboard, sincronizadas localmente com vercel env pull; valores sensíveis marcados como Sensitive; nada de segredo com NEXT_PUBLIC_; secrets de cron/webhook validados por header. Nível avançado: OIDC federation para obter credenciais temporárias de AWS/GCP sem armazenar chave de longa duração.

Descreva um pipeline de CI/CD profissional com Vercel.

PR abre → CI roda lint e testes → preview deployment com Checks bloqueando merge se algo falha → aprovação em cima do preview → merge → CI builda com vercel build e publica com vercel deploy --prebuilt --prod → rollout gradual por feature flag (Edge Config) com Skew Protection → monitoramento de erros → Instant Rollback se necessário.

Monorepo: como a Vercel lida e o que é remote caching?

Cada app do monorepo vira um projeto Vercel com seu Root Directory; turbo-ignore pula builds de apps não afetados pelo commit. O Turborepo calcula um hash dos inputs de cada tarefa e guarda o artefato num cache remoto compartilhado entre devs, CI e Vercel — se o hash bate, o build é restaurado em segundos em vez de reexecutado.

Quando você NÃO usaria a Vercel?

WebSockets persistentes/servidores stateful de longa duração, processamento contínuo de CPU cheia e requisitos de rede privada/residência muito rígidos fora do plano Enterprise. Nesses casos, mantenho front e APIs na Vercel e coloco a carga especializada num serviço dedicado, integrando por HTTP/filas. Mostrar esse critério vale mais do que defender a ferramenta cegamente.

A fatura da Vercel dobrou. Por onde começa?

Dashboard de uso para identificar o SKU que cresceu (edge requests, CPU, imagens, bandwidth); correlacionar com rotas na Observability; então atacar: cache/ISR para reduzir invocações, limitar tamanhos do Image Optimization, rate limit e bot filtering em rotas caras, revisar SSR desnecessário; por fim, Spend Management com alerta e teto. Custo é métrica de engenharia.

Como proteger um endpoint de IA em produção?

Rate limiting no Firewall (por IP/usuário), BotID para filtrar tráfego automatizado, autenticação obrigatória, validação de tamanho de entrada, limite de tokens por resposta, e monitoramento de custo por rota via AI Gateway. Endpoint de IA sem proteção é convite para abuso financeiro.

O que acontece exatamente quando você faz git push para a main?

O Git provider notifica a Vercel → ela clona o commit, restaura caches, roda o build do framework → gera o Build Output (estáticos + funções + configuração) → distribui os estáticos pela CDN e provisiona as funções → executa checks → troca atomicamente o alias de produção para o novo deployment (com Skew Protection segurando a versão antiga para sessões ativas) e invalida o cache da CDN. O deployment anterior permanece disponível para rollback.

Glossário rápido

TermoEm uma frase
Edge NetworkA rede global de pontos de presença que recebe toda requisição e serve cache
Preview DeploymentAmbiente completo e isolado gerado para cada branch/PR
ISRPáginas estáticas que se regeneram por tempo ou sob demanda
Fluid ComputeExecução com concorrência por instância e cobrança por CPU ativa
Edge ConfigChave-valor de leitura ultrarrápida na borda, para flags e configuração
Skew ProtectionGarante que front e backend da mesma versão conversem durante deploys
Build Output APIFormato que permite buildar no seu CI e só publicar na Vercel
Remote CachingCache de build do Turborepo compartilhado entre devs, CI e Vercel
OIDC FederationCredenciais temporárias de nuvem sem armazenar segredos
AI GatewayEndpoint único para múltiplos provedores de LLM, com fallback e métricas
x-vercel-cacheHeader que revela se a resposta veio do cache (HIT/MISS/STALE)
waitUntilExecuta trabalho depois de enviar a resposta ao usuário
✅ Checklist final — você domina Vercel quando consegue…
  1. Explicar o caminho completo de um git push até o usuário;
  2. Escolher e justificar a renderização de qualquer página;
  3. Ler x-vercel-cache e ajustar a estratégia de cache;
  4. Montar pipeline com testes bloqueantes e deploy prebuilt;
  5. Configurar domínio, DNS e redirects de olhos fechados;
  6. Desenhar a arquitetura de um SaaS apontando limites da plataforma;
  7. Reduzir uma fatura com dados, não com achismo.