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.
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.
- Iniciante: siga na ordem, do módulo 1 ao 9, fazendo todos os exercícios. Isso já cobre o que a maioria das vagas júnior/pleno de front-end espera.
- Já usa Vercel: vá direto aos módulos 10–18. É onde ficam os diferenciais para pleno/sênior.
- Preparando entrevista: leia as caixas "No mercado" de todos os módulos e o módulo 20 inteiro.
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.
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
- Workflow de deploy: cada push gera um deploy; cada Pull Request ganha uma URL de preview; a branch principal vira produção.
- Rede global (Edge Network): CDN com pontos de presença no mundo todo (incluindo Brasil — região
gru1, São Paulo), servindo conteúdo perto do usuário. - Compute serverless: Vercel Functions com o modelo Fluid Compute (você paga por CPU ativa, não por tempo parado — módulo 16).
Planos
| Plano | Preço | Para quem |
|---|---|---|
| Hobby | Grátis | Projetos pessoais e não comerciais. Perfeito para portfólio e estudo. |
| Pro | ~US$ 20/mês por membro + uso | Freelancers, times e empresas. Inclui crédito mensal de uso. |
| Enterprise | Sob consulta | SLA, compliance, suporte dedicado, isolamento e segurança avançada. |
"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.
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.
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)
- Suba seu projeto para um repositório (GitHub, GitLab ou Bitbucket).
- No dashboard, clique em Add New → Project e importe o repositório.
- A Vercel detecta o framework e preenche build command e output automaticamente. Confirme e clique em Deploy.
- Em ~1 minuto você recebe uma URL
seu-projeto.vercel.appcom HTTPS.
Os três tipos de deployment
| Tipo | Quando acontece | URL |
|---|---|---|
| Production | Push/merge na branch de produção (geralmente main) | Seu domínio final |
| Preview | Push em qualquer outra branch ou PR aberto | URL única e compartilhável por commit |
| Local/CLI | Comando vercel no terminal | URL 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.
- 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.
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.
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.
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
| Comando | O que faz |
|---|---|
vercel | Cria um deploy de preview da pasta atual |
vercel --prod | Deploy direto para produção |
vercel dev | Ambiente local emulando funções, rewrites e env vars |
vercel env pull .env.local | Baixa as variáveis de ambiente para um arquivo local |
vercel logs <url> | Logs em tempo real de um deployment |
vercel ls | Lista deployments do projeto |
vercel inspect <url> | Detalhes de um deployment (rotas, funções, build) |
vercel rollback / vercel promote | Reverter produção / promover um deploy a produção |
vercel build | Builda localmente gerando a pasta .vercel/output (Build Output API) — base do CI/CD avançado |
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.
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.
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.
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…):
- Domínio raiz (
meusite.com.br): registroAapontando para76.76.21.21. - Subdomínio (
www,app,blog): registroCNAMEparacname.vercel-dns.com. - Alternativa: delegar os nameservers para a Vercel e gerenciar todo o DNS por lá (necessário para wildcard
*.meusite.com).
O certificado SSL é automático e renovado sozinho (Let's Encrypt). Você nunca gerencia certificado na mão.
Boas práticas
- Defina um domínio canônico: configure
www → apex(ou o contrário) como redirect 308 na própria tela de Domains. - Aponte domínios diferentes para branches diferentes (ex.:
staging.meusite.com→ branchstaging). - Propagação de DNS pode levar de minutos a horas — verifique com
digou whatsmydns.net antes de achar que algo quebrou.
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".
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.
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
- Servidor vs. navegador: no Next.js, só variáveis com prefixo
NEXT_PUBLIC_chegam ao browser. Todo o resto fica no servidor. Jamais coloque uma chave secreta com esse prefixo. - Sensitive: marque segredos como "Sensitive" — nem o dashboard mostra o valor depois de salvo.
- Variáveis são injetadas no build e no runtime; ao alterar uma variável usada no build, faça redeploy para ela valer.
- Rotacione chaves vazadas imediatamente e use tokens com escopo mínimo.
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.
"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).
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.
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:
{
"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
- Redirect vs. Rewrite: redirect muda a URL no navegador (301/302/307/308) — use para SEO e migrações. Rewrite serve outro conteúdo mantendo a URL — use para proxy de APIs, multi-tenant e A/B tests.
permanent: truegera 308 (preserva método HTTP) e é cacheado agressivamente pelos navegadores — cuidado ao usar antes de ter certeza.- Cron Jobs: a Vercel chama a rota no horário (sintaxe cron, UTC). Proteja a rota validando o header
AuthorizationcomCRON_SECRET. regionsdefine onde as funções executam.gru1(São Paulo) reduz latência para usuários e bancos de dados no Brasil.- Em Next.js, prefira
next.config.jspara redirects/headers quando possível;vercel.jsoné a opção agnóstica de framework.
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.
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.
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égia | No código | Vira na Vercel | Use quando |
|---|---|---|---|
| SSG (estático) | Página sem dados dinâmicos ou com generateStaticParams | HTML na CDN global | Landing pages, docs, blog |
| ISR (incremental) | revalidate = 60 ou revalidateTag() | HTML cacheado que se regenera | E-commerce, CMS, catálogos |
| SSR (dinâmico) | cookies(), headers(), no-store | Vercel Function por request | Dashboards, conteúdo por usuário |
| Streaming/PPR | <Suspense> + partes estáticas | Casca estática + streaming dinâmico | O melhor dos dois mundos |
| Client | "use client" + fetch no browser | JS estático na CDN | Interatividade pura |
Recursos que só funcionam "de graça" na Vercel
- Image Optimization:
next/imageredimensiona, converte para WebP/AVIF e cacheia na borda — impacto direto em Core Web Vitals. - Font Optimization:
next/fonthospeda a fonte junto do site, eliminando request externo e layout shift. - Server Actions e Route Handlers viram funções sem nenhuma configuração.
- Skew Protection: durante um deploy, usuários com a versão antiga do front continuam falando com o backend da mesma versão — elimina erros de "deploy no meio da sessã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.
"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.
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.
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:
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
- Runtimes: Node.js é o padrão; a plataforma também roda Python, Go e Ruby — e desde 2026 suporta frameworks de backend completos como FastAPI, Flask, Express e Hono (módulo 18).
- Limites práticos: duração configurável por função (
maxDuration) — com Fluid Compute, funções podem rodar por até 30 minutos, o que viabiliza workloads de IA e processamento longo. - Streaming: retorne
ReadableStreampara respostas progressivas (essencial para chat com LLMs). waitUntil(): execute trabalho depois de responder (analytics, e-mail, log) sem segurar o usuário:
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 });
}
- 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).
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".
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.
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.tsimport { 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
- Use o
matcherpara limitar onde o middleware roda — rodar em tudo (inclusive assets) custa e atrasa. - Middleware deve ser leve e rápido: checar cookie, reescrever, redirecionar. Consulta pesada a banco aqui é anti-padrão — para dados na borda, use Edge Config (módulo 11).
- Geolocalização vem de graça nos headers:
x-vercel-ip-country,ip-country-region,ip-city— ótima para moeda, idioma e compliance regional. - Casos de uso matadores: gate de autenticação, paywall, redirect por idioma, feature flags, bloqueio de bots, multi-tenant por subdomínio.
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.
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.
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
- Cache do navegador — controlado por
Cache-Control: max-age. - CDN / Edge Cache — controlado por
s-maxageestale-while-revalidate; compartilhado entre todos os usuários da região. - ISR / Data Cache do framework — cache de páginas e de
fetchgerenciado pelo Next.js, com revalidação por tempo ou sob demanda.
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
- Inspecione o header de resposta
x-vercel-cache:HIT(veio da CDN),MISS(executou a função),STALE(serviu velho e revalidou atrás),PRERENDER(estático),BYPASS(sem cache). - Todo deploy novo invalida o cache da CDN automaticamente — você nunca serve versão antiga do site após deploy.
stale-while-revalidateé o padrão-ouro para dados que podem atrasar alguns segundos: latência de cache com frescor quase em tempo real.- Cache é também ferramenta de custo: cada
HITé uma invocação de função que você não pagou.
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.
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.
Storage: Edge Config, Blob e Marketplace
Objetivo: escolher e usar a camada de dados certa para cada problema.
| Produto | O que é | Use para |
|---|---|---|
| Edge Config | Chave-valor ultrarrápido replicado na borda (leitura em ~ms, escrita rara) | Feature flags, listas de bloqueio, redirects dinâmicos, configuração |
| Vercel Blob | Armazenamento de arquivos com URL pública/privada e CDN | Uploads de usuário, imagens, PDFs, vídeos |
| Marketplace: Neon | Postgres serverless (branching de banco!) | Dados relacionais — o padrão para SaaS |
| Marketplace: Upstash | Redis serverless | Cache de aplicação, filas simples, rate limiting, sessões |
| Marketplace: AWS | Aurora, DynamoDB, OpenSearch integrados ao dashboard | Cargas 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 });
}
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.
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.
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.
Observabilidade: analytics, vitals e logs
Objetivo: medir antes de otimizar — e provar impacto com números, como um sênior.
As ferramentas
- Web Analytics: pageviews, visitantes, referrers e custom events, sem cookies e amigável à LGPD. Instala com
@vercel/analyticse um componente. - Speed Insights: Core Web Vitals reais (LCP, CLS, INP) coletados dos seus usuários, por página e por dispositivo — o dado que o Google usa para ranquear.
- Logs de runtime: todo
console.log/errordas funções, filtrável por rota, status e deployment no dashboard. - Log Drains: exportação contínua dos logs para Datadog, Axiom, Grafana, New Relic — obrigatório em empresa com stack de observabilidade centralizada.
- OpenTelemetry: traces distribuídos das funções para acompanhar uma requisição atravessando serviços.
- Monitoring e alertas (planos pagos): queries sobre tráfego/erros e notificação de anomalias.
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
- Alerta ou reclamação → abrir Logs filtrando por
status >= 500. - Identificar a rota e o deployment → conferir se começou após um deploy específico.
- Se sim: Instant Rollback primeiro, investigação depois.
- Reproduzir no preview, corrigir, e acompanhar a taxa de erro cair.
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.
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.
Segurança na plataforma
Objetivo: proteger app, deploys e credenciais — requisitos cada vez mais explícitos em vagas.
Camadas de proteção
- Mitigação de DDoS automática na Edge Network, para todos os planos, sem configuração.
- Vercel Firewall (WAF): regras customizadas por caminho, país, IP, user-agent, ASN — com ações de bloquear, desafiar ou logar; inclui managed rules para ataques conhecidos (SQLi, XSS).
- Rate limiting declarativo no Firewall para proteger rotas caras (login, busca, APIs de IA).
- Bot management / BotID: distingue bots legítimos (Googlebot), agentes de IA e tráfego malicioso — decisivo na era dos crawlers de LLM.
- Deployment Protection: previews protegidos por login Vercel, senha ou IPs confiáveis — evita vazar features não lançadas (recurso que já derrubou surpresa de lançamento de muita empresa).
- RBAC e times: papéis (owner, member, developer, viewer, billing) controlando quem faz deploy, quem vê env vars e quem administra domínio.
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
- Headers de segurança (HSTS, nosniff, frame-options — módulo 6).
- Segredos como Sensitive; zero segredos no client (
NEXT_PUBLIC_auditado). - Rate limit em rotas de autenticação e de custo alto.
- Deployment Protection ligado em previews de produto fechado.
- Rotas de cron e revalidação validando secret no header.
- Papéis de time no privilégio mínimo; 2FA obrigatório.
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.
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.
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.ymlname: 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
- Promote: desacople deploy de release — suba para produção "desligado" e promova quando quiser (
vercel promote). - Feature flags: com Edge Config + Flags SDK, ligue features por porcentagem de usuários, plano ou país — rollout gradual e kill switch sem redeploy.
- Skew Protection elimina a classe de bugs "usuário com front antigo chamando API nova" durante releases.
- Rollback como cultura: reverter primeiro, investigar depois. Na Vercel isso custa segundos, então use.
"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.
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.
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ípicameu-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
- Um projeto Vercel por app: importe o mesmo repositório duas vezes, definindo o Root Directory (
apps/web,apps/app) de cada projeto. - Remote Caching de graça: o cache do Turborepo é compartilhado entre sua máquina, o CI e os builds da Vercel. Se ninguém mexeu no pacote
ui, o build dele é reaproveitado — builds de minutos caem para segundos. - Builds condicionais: com
npx turbo-ignoreno Ignored Build Step, um push que só mudou o site não rebuilda o dashboard. - Mudou um pacote compartilhado? Todos os apps que dependem dele rebuildam — e só eles.
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.
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.
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:
- Concorrência por instância: uma mesma instância atende várias requisições simultâneas, aproveitando o tempo de I/O ocioso.
- Menos cold starts: instâncias reutilizadas + cache de bytecode (o V8 não recompila sua função a cada invocação).
- Active CPU pricing: você paga por milissegundos de CPU ativa + um valor baixo por memória provisionada. Tempo esperando I/O quase não custa — para workloads de IA e APIs (majoritariamente espera), a conta pode cair drasticamente.
- Execuções longas: até 30 minutos, viabilizando geração de vídeo, relatórios pesados e agentes de IA.
waitUntilganha eficiência: o pós-processamento roda na capacidade ociosa da própria instância.
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
- Cache primeiro: todo
HITna CDN é invocação não paga (módulo 10). É a alavanca nº 1. - Estático onde der: SSR desnecessário é o maior gerador de custo evitável.
- Imagens: limite os tamanhos gerados pelo Image Optimization; imagem de terceiros sem controle infla transformações.
- Funções enxutas: menos CPU por request = menos custo; mova trabalho pesado para jobs/queues.
- Proteja rotas caras: rate limit e bot filtering evitam pagar pela CPU de scrapers.
- Spend Management: configure alertas e teto de gastos com pausa automática — apresentar isso num time demonstra senioridade.
"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.
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.
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.tsimport { 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ça | O que faz |
|---|---|
| AI Gateway | Um 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) |
| v0 | Gerador de UI por prompt (v0.app) — de ideia a componente React/Tailwind pronto para colar no projeto |
| Sandbox | MicroVMs isoladas para executar código não confiável — ex.: código gerado por LLM — com segurança |
| Agents / eve | Framework open source da Vercel para agentes em produção: execução durável, subagentes, aprovações e avaliações |
| MCP servers | A plataforma hospeda servidores Model Context Protocol — o padrão para conectar LLMs a ferramentas e dados |
Por que a Vercel é forte para IA
- Streaming nativo nas funções (respostas token a token);
- Fluid Compute cobra pouco pela espera do modelo (inferência é 95% I/O) e permite execuções de minutos;
waitUntilpara gravar histórico/telemetria após responder;- BotID e Firewall para proteger endpoints de IA — os mais visados para abuso de custo.
"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.
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.
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)
- Frameworks de backend: Express, Hono, Fastify, e Python (FastAPI, Flask) rodam nativamente — inclusive serviços backend-only, sem front.
- Queues: filas gerenciadas para processamento assíncrono confiável (e-mails, webhooks, pipelines).
- Cron + workflows duráveis: tarefas agendadas e fluxos de longa duração.
- Container Registry e Sandbox: imagens otimizadas para Fluid, spin-up rápido.
- Multi-região e failover: funções replicadas com tolerância a queda de região.
- Microfrontends: vários projetos servidos sob um domínio (via rewrites ou suporte nativo), permitindo times independentes com deploys independentes.
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
- Conexões persistentes de longa duração (WebSocket dedicado, servidor de jogo) — use um serviço próprio (Fly.io, Railway, ECS) ao lado, ou serviços de realtime gerenciado (Pusher, Ably, Supabase Realtime).
- Processamento contínuo 24/7 de CPU cheia (transcodificação em massa, treinamento de modelos) — workers dedicados custam menos.
- Requisitos rígidos de residência de dados/rede privada que exijam VPC própria — avalie Enterprise (com secure compute) ou hospede o backend na sua nuvem e a borda na Vercel.
A resposta madura raramente é "tudo ou nada": borda + front + APIs na Vercel, e cargas especializadas onde fizerem sentido — conversando via HTTP e filas.
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.
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.
Vercel no mercado de trabalho
Objetivo: transformar tudo o que você aprendeu em entrevista marcada e proposta assinada.
Onde esse conhecimento é pedido
- Front-end pleno/sênior (React/Next.js): a maioria absoluta das vagas Next.js pressupõe deploy e operação na Vercel.
- Full-stack em startups: o stack Vercel + Neon/Supabase + AI SDK domina os MVPs; founding engineers vivem nele.
- Agências e consultorias: muitos projetos simultâneos → previews, domínios e Web Vitals no dia a dia.
- AI Engineer: AI SDK, AI Gateway e streaming aparecem nominalmente nas descrições.
- Freelance internacional: gringos contratando "Next.js developer" esperam entrega ponta a ponta — e a Vercel é a ponta.
Faixas salariais (referência ampla, Brasil, 2026)
| Nível | CLT nacional | Remoto internacional |
|---|---|---|
| Júnior | ~R$ 3–6 mil | raro, 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
- SaaS completo: Next.js + auth + Neon Postgres + Stripe (modo teste) + ISR no conteúdo público + dashboard SSR. Demonstra os módulos 5–11.
- App de IA: chat com AI SDK, streaming, tool calling e rate limiting (módulo 17). É o projeto que mais gera conversa em 2026.
- 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)
- Demo no ar com domínio próprio — link direto no topo do README e do currículo.
- README que vende: print/gif, decisões de arquitetura (por que ISR aqui, por que Edge Config ali), e um diagrama tipo módulo 18.
- Números: nota do Lighthouse, LCP do Speed Insights, tempo de build com/sem remote cache.
- Histórico limpo: commits organizados, zero segredo commitado, CI verde visível.
- No LinkedIn, escreva 2–3 posts curtos sobre o que aprendeu (ex.: "como derrubei meu LCP de 4s para 1,8s") — recrutador tech pesquisa por esses termos.
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.
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.
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
| Termo | Em uma frase |
|---|---|
| Edge Network | A rede global de pontos de presença que recebe toda requisição e serve cache |
| Preview Deployment | Ambiente completo e isolado gerado para cada branch/PR |
| ISR | Páginas estáticas que se regeneram por tempo ou sob demanda |
| Fluid Compute | Execução com concorrência por instância e cobrança por CPU ativa |
| Edge Config | Chave-valor de leitura ultrarrápida na borda, para flags e configuração |
| Skew Protection | Garante que front e backend da mesma versão conversem durante deploys |
| Build Output API | Formato que permite buildar no seu CI e só publicar na Vercel |
| Remote Caching | Cache de build do Turborepo compartilhado entre devs, CI e Vercel |
| OIDC Federation | Credenciais temporárias de nuvem sem armazenar segredos |
| AI Gateway | Endpoint único para múltiplos provedores de LLM, com fallback e métricas |
| x-vercel-cache | Header que revela se a resposta veio do cache (HIT/MISS/STALE) |
| waitUntil | Executa trabalho depois de enviar a resposta ao usuário |
- Explicar o caminho completo de um
git pushaté o usuário; - Escolher e justificar a renderização de qualquer página;
- Ler
x-vercel-cachee ajustar a estratégia de cache; - Montar pipeline com testes bloqueantes e deploy prebuilt;
- Configurar domínio, DNS e redirects de olhos fechados;
- Desenhar a arquitetura de um SaaS apontando limites da plataforma;
- Reduzir uma fatura com dados, não com achismo.