SEO (Search Engine Optimization)
SEO
Otimização para mecanismos de busca — conjunto de técnicas para melhorar o posicionamento orgânico no
Google.
SERP
Search Engine Results Page — a página de resultados do Google.
Keyword (Palavra-chave)
Termo que o usuário digita no Google para buscar algo.
Long Tail
Palavras-chave longas e específicas (ex: "como comprar vale transporte empresa SP") — menor volume, maior
conversão.
Ex.: "tênis" é cabeça; "tênis nike air max masculino preto 42" é cauda longa.
Short Tail (Head Tail)
Palavras-chave curtas e genéricas (ex: "vale transporte") — alto volume, alta concorrência.
Search Intent
Intenção por trás da busca: informacional, navegacional, transacional ou comercial.
Backlink
Link de outro site apontando para o seu — sinal de autoridade para o Google.
Link Building
Estratégia de conseguir backlinks de qualidade.
Outreach
Contato ativo com jornalistas, blogueiros, criadores de conteúdo, podcasters e parceiros para obter menções,
backlinks, guest posts, co-marketing e PR digital. Técnica-chave de link building e construção de autoridade
de domínio.
Link Juice
"Autoridade" transmitida de uma página para outra através de links.
Domain Authority (DA)
Métrica da Moz (0-100) que estima a força de um domínio nos rankings.
Ex.: g1.com.br ~93; site novo começa em 1-10.
Domain Rating (DR)
Métrica equivalente da Ahrefs.
Page Authority (PA)
Autoridade de uma página específica (não do domínio todo).
Crawling
Processo do Googlebot rastreando/lendo as páginas do seu site.
Crawl Budget
Quantidade de URLs que o Googlebot decide rastrear no seu site por dia. Depende da autoridade, velocidade e
saúde técnica. Sites grandes precisam otimizar robots.txt, sitemap e remover duplicatas para não desperdiçar
orçamento.
Ex.: site com 500k URLs e Googlebot rastreando 5k/dia leva 100 dias para ser revisitado por
inteiro.
Indexação
Quando o Google adiciona sua página ao índice dele (pré-requisito para aparecer nos resultados).
Sitemap
Arquivo XML que lista todas as URLs do site para facilitar o crawling.
Robots.txt
Arquivo que diz ao Google quais páginas pode ou não rastrear.
Canonical
Tag que indica qual é a URL "oficial" quando há conteúdo duplicado.
Ex.: ?utm_source=email e a URL limpa apontam o mesmo
<link rel="canonical"> para evitar duplicidade.
Redirect 301
Redirecionamento permanente — o servidor responde HTTP 301 +
Location: nova-url dizendo que a URL antiga foi movida em definitivo. Transfere ~95% da
autoridade de SEO da URL antiga para a nova e é cacheado agressivamente por navegadores e crawlers.
Ex.: otimiza.pro (apex) faz 301 para otimizapro.com — usuário digita o antigo, cai no novo e o Google
consolida o ranking no domínio canônico.
Redirect 302
Redirecionamento temporário — o servidor responde HTTP 302 dizendo "use essa outra URL por
enquanto". Não transfere autoridade de SEO e não é cacheado como permanente.
Ex.: página em manutenção redirecionando para /status por 2h; depois volta ao normal.
Redirect 308
Variante "moderna" do 301 que preserva o método HTTP (POST continua POST após o redirect).
O 301 pode converter POST em GET, o que quebra APIs. Use 308 em contextos de API; 301 no HTML/browser.
Meta Title
Título da página que aparece na aba do navegador e nos resultados do Google.
Meta Description
Descrição que aparece abaixo do título nos resultados do Google.
OG Title
Open Graph Title — título que aparece no card de preview ao compartilhar link em redes sociais.
OG Description
Descrição que aparece no card de preview em redes sociais.
OG Image
Imagem que aparece no card de preview em redes sociais (tamanho ideal: 1200x630px).
H1, H2, H3...
Tags de cabeçalho hierárquico — H1 é o título principal (um por página), H2 subtítulos, etc.
Alt Text
Texto alternativo de imagens — acessibilidade + SEO de imagens.
Schema Markup
Dados estruturados (JSON-LD) que ajudam o Google a entender o conteúdo e exibir rich snippets.
Rich Snippet
Resultado do Google com informações extras (estrelas, FAQ, preço, etc.).
Featured Snippet
"Posição zero" — caixa de resposta direta no topo do Google.
Ex.: pesquisa "o que é CTR" e o Google mostra a resposta em destaque acima do 1º resultado.
Core Web Vitals
Métricas de performance do Google: LCP, INP e CLS.
LCP
Largest Contentful Paint — tempo para carregar o maior elemento visível (ideal < 2.5s).
Ex.: LCP bom é < 2,5s; acima de 4s o Google considera ruim.
INP
Interaction to Next Paint — mede responsividade a interações (ideal < 200ms). Substituiu o FID.
CLS
Cumulative Layout Shift — estabilidade visual; quanto o layout "pula" durante carregamento (ideal < 0.1).
FCP
First Contentful Paint — tempo até o primeiro conteúdo aparecer na tela.
TTFB
Time to First Byte — tempo até o servidor responder a primeira requisição.
SEO On-Page
Otimizações dentro da própria página (título, conteúdo, headers, imagens, URL).
SEO Off-Page
Otimizações fora do site (backlinks, menções, redes sociais).
SEO Técnico
Parte técnica: velocidade, mobile-friendly, sitemap, robots, schema, etc.
Keyword Density
Frequência de uma palavra-chave no texto (evitar keyword stuffing).
Keyword Stuffing
Excesso de palavras-chave — prática penalizada pelo Google.
Anchor Text
Texto clicável de um link — influencia o ranqueamento da página de destino.
Internal Linking
Links entre páginas do próprio site — distribui autoridade e ajuda na navegação.
Orphan Page
Página sem nenhum link interno apontando para ela — difícil de ser encontrada pelo Google.
Noindex
Tag que impede o Google de indexar uma página.
Nofollow
Atributo de link que diz ao Google para não seguir/passar autoridade.
Dofollow
Link normal que passa autoridade (é o padrão).
Black Hat SEO
Técnicas proibidas pelo Google (cloaking, keyword stuffing, link farms).
White Hat SEO
Técnicas legítimas e dentro das diretrizes do Google.
E-E-A-T
Experience, Expertise, Authoritativeness, Trustworthiness — critérios de qualidade do Google.
Google Search Console (GSC)
Ferramenta gratuita do Google para monitorar desempenho de busca, indexação e erros.
Impressões (SEO)
Quantas vezes sua página apareceu nos resultados do Google.
Cliques (SEO)
Quantas vezes clicaram no seu resultado no Google.
CTR (orgânico)
Click-Through Rate — % de cliques em relação às impressões nos resultados do Google.
Ex.: 30 cliques em 1.000 impressões = CTR de 3%; média do Google Ads search é 3-5%.
Posição Média
Posição média do seu resultado no ranking do Google para determinada query.
Google Ads / Mídia Paga
ADS (Ads)
Abreviação de advertisements — anúncios pagos. Termo guarda-chuva para mídia paga em geral (Google
Ads, Meta Ads, LinkedIn Ads, TikTok Ads etc.), em oposição a mídia orgânica.
Produto vazando em SERP
Quando páginas de produto aparecem em resultados de busca para termos indesejados — por correspondência
ampla em Google Ads disparando em queries irrelevantes, excesso de indexação orgânica (canibalização) ou
concorrentes dando lance na sua marca. Sinal de desperdício de verba e necessidade de ajuste de
match type, negative keywords e estrutura de campanha.
Google Ads
Plataforma de anúncios do Google (antigo AdWords).
Campanha
Nível mais alto de organização no Google Ads — define orçamento, local, idioma.
Grupo de Anúncios
Subdivisão da campanha — agrupa anúncios e palavras-chave relacionadas.
Ad (Anúncio)
A peça publicitária em si (texto, imagem ou vídeo).
CPC
Custo por Clique — quanto você paga cada vez que alguém clica no anúncio.
Ex.: gastar R$ 200 e receber 100 cliques = CPC médio de R$ 2,00.
CPM
Custo por Mil impressões — modelo de cobrança por visualizações.
Ex.: R$ 30 de CPM = pagar R$ 30 a cada 1.000 pessoas que veem o anúncio.
CPA
Custo por Aquisição — quanto custa cada conversão.
Ex.: R$ 1.000 em ads geram 5 vendas → CPA de R$ 200; só vale se o ticket for maior que isso.
ROAS
Return on Ad Spend — receita gerada para cada R$1 gasto em ads.
Ex.: investiu R$ 1.000 e faturou R$ 4.000 → ROAS 4x (cada R$ 1 virou R$ 4 em receita).
ROI
Return on Investment — retorno sobre o investimento total.
Ex.: lucro R$ 3.000 sobre R$ 1.000 investido → ROI 300% (diferente de ROAS, que olha receita).
CTR (ads)
Click-Through Rate — % de cliques em relação às impressões do anúncio.
Quality Score
Nota de 1-10 do Google Ads que avalia relevância do anúncio + landing page + CTR esperado.
Ex.: QS 8/10 paga ~30% menos por clique que QS 4/10 na mesma palavra-chave.
Ad Rank
Posição do anúncio = lance x Quality Score.
Lance (Bid)
Quanto você está disposto a pagar por clique/conversão.
Smart Bidding
Estratégias de lance automáticas do Google (Maximize Conversions, Target CPA, etc.).
Ex.: definir tROAS 400% e o Google ajusta lances automaticamente buscando R$ 4 por R$ 1 gasto.
Budget Cap (Teto de Orçamento)
Limite máximo de gasto que você define para uma campanha — pode ser diário (
daily budget) ou de
período (
campaign total budget do Performance Max/Shopping). Quando atingido, o Google para de
exibir anúncios até o próximo ciclo. O
budget cap é o gargalo mais comum de campanhas que performam
bem — ao atingir o teto cedo no dia, você deixa impressões e cliques qualificados na mesa.
Como o Google gasta o Budget Cap:
-
Pode gastar até 2x o budget diário em dias de alta demanda (compensa em dias fracos no
mesmo mês).
- Nunca ultrapassa 30,4 × budget diário no mês (média mensal protegida).
- Em Performance Max com budget de campanha, gasta proporcionalmente até o fim da janela definida.
Sinais de Budget Cap insuficiente:
Search Lost IS (Budget) > 10% → orçamento está limitando impressões
- Conversões concentradas nas primeiras horas do dia (acabou orçamento cedo)
- ROAS alto + volume baixo → sinal clássico de que o cap trava escala
Ex.: campanha com R$ 100/dia, ROAS 600%, Lost IS (Budget) = 42% → elevar para R$ 200/dia
deve capturar mais volume mantendo retorno.
Impression Share (IS)
Parcela de impressões que seus anúncios
efetivamente receberam dividida pelo total de
impressões
elegíveis que você poderia ter recebido. É a métrica-mãe de cobertura de mercado
no Google Ads: responde "de todas as vezes que alguém buscou algo relevante para minha campanha, em quantas
eu apareci?".
Fórmula:
IS = Impressões recebidas ÷ Impressões elegíveis
Variações diagnósticas:
-
Search IS — parcela nos resultados de busca (ideal: 80%+ em marca, 40-60% em genéricos).
-
Search Lost IS (Budget) — % de impressões perdidas por
orçamento insuficiente. Solução: aumentar Budget Cap.
-
Search Lost IS (Rank) — % perdidas por Ad Rank baixo (lance, Quality
Score, extensões). Solução: lance mais alto, melhorar relevância ou landing page.
-
Search Top IS / Abs. Top IS — parcela em que você aparece no topo / absoluto
topo da SERP. Crítico em keywords de marca: abs. top < 80% significa concorrente está roubando
tráfego da sua marca.
-
Click Share — mesma lógica aplicada a cliques em vez de impressões (disponível em Shopping
e Performance Max).
Leitura estratégica:
-
Lost IS (Budget) > Lost IS (Rank) → você perde por dinheiro, escalar orçamento é
alavanca #1.
-
Lost IS (Rank) > Lost IS (Budget) → você perde por leilão, trabalhar Quality Score, copy
e landing é prioridade.
-
Em campanhas de marca,
Abs. Top IS < 90% é bandeira vermelha — concorrente faz bidding
no seu nome.
Ex.: keyword "otimiza vt pro" com Abs. Top IS = 62% + Lost IS (Rank) = 28% →
concorrente está aparecendo acima do nosso anúncio de marca. Ação: elevar lance de marca e adicionar
extensões de sitelink.
Conversão
Ação desejada completada (cadastro, compra, ligação, download).
Pixel de Conversão
Código que rastreia quando uma conversão acontece.
Remarketing / Retargeting
Exibir anúncios para pessoas que já visitaram seu site.
Ex.: visitante abandonou o checkout e nas próximas 48h vê banners do mesmo produto no YouTube e
Display.
Display Network
Rede de sites parceiros do Google onde seus anúncios de banner aparecem.
Search Network
Anúncios que aparecem nos resultados de busca do Google.
Performance Max (PMax)
Tipo de campanha que roda em todos os canais Google automaticamente.
RSA
Responsive Search Ad — anúncio de texto que testa combinações de títulos e descrições.
Extensões de Anúncio (Assets)
Informações extras no anúncio: sitelinks, callouts, telefone, localização.
Sitelinks
Links adicionais abaixo do anúncio principal apontando para páginas específicas.
Palavra-chave Negativa
Termo que impede seu anúncio de aparecer (ex: "grátis" para quem vende).
Correspondência Ampla
Palavra-chave ativa para buscas relacionadas (mais alcance, menos controle).
Correspondência de Frase
Ativa para buscas que contêm a frase (meio termo).
Correspondência Exata
Ativa apenas para buscas muito próximas do termo exato.
Landing Page
Página de destino do anúncio — onde o usuário cai ao clicar.
Squeeze Page
Landing page focada exclusivamente em capturar e-mail/dados.
Blast Radius
O
raio de explosão de uma ação — quantos sistemas, usuários, dados ou serviços são afetados
se algo der errado. Conceito tomado de explosivos militares e adotado por SRE/DevOps para avaliar risco
operacional
antes de executar uma mudança. Toda decisão de engenharia tem um blast radius: a
pergunta certa não é "vai dar certo?", é "se der errado, quem sangra?".
Escala de blast radius (do menor para o maior):
-
Local / reversível — editar um arquivo, criar branch, rodar teste. Você quebra, você
conserta, ninguém vê.
-
Sessão atual — restart do dev server, drop de banco local, perda de stash. Custo:
minutos do seu tempo.
-
Repositório / time — push para branch compartilhada, edit em
main de docs,
merge de PR. Outros desenvolvedores são afetados.
-
Staging / ambiente compartilhado — deploy em staging, seed em banco de QA. Afeta
testers e QA até reverter.
-
Produção —
wrangler deploy, migration aplicada, secret rotacionado.
Clientes reais são afetados em segundos.
-
Produção + dados —
DROP TABLE, git push --force em
main, DELETE FROM ... WHERE errado. Perda permanente, recuperação via backup
(se houver).
-
Multi-sistema / cross-org — DNS de domínio raiz alterado, certificado SSL expirado,
credencial de pagamento revogada. Cliente, parceiros, integrações — todos caem juntos.
Operadores de blast radius (perguntas-checklist):
-
Quem é afetado? — só eu, meu time, todo o time, clientes pagantes, todos os usuários?
-
Por quanto tempo? — segundos (rollback automático), minutos (rollback manual), horas
(recuperar de backup), permanente (sem recuperação)?
-
É reversível? — rollback de 1 comando? Migration reversível? Backup recente disponível?
Ou só "comprar passagem para Maceió"?
-
Existe blast shield? — feature flag, canary deploy, soft launch, rollout % gradual? Ou
é all-or-nothing?
-
Qual o sinal de "deu errado"? — error rate, alarme em logs, ticket de suporte, queda de
receita? Quanto tempo até detectar?
Reduzir blast radius (padrões):
-
Canary deploy — releasing para 1%, depois 10%, depois 100% — bug afeta 1% dos usuários,
não todos.
-
Feature flag — código em produção mas desligado para 99%; liga gradualmente, kill
switch instantâneo.
-
Migrations forward-compatible — schema novo coexiste com código antigo; rollback de
código não exige rollback de schema.
-
Backups + ponto de restauração — Cloudflare D1 tem
Time Travel (até 30
dias), Postgres tem PITR, S3 tem versionamento. Antes de DELETE grande, verificar.
-
Dry-run primeiro —
wrangler deploy --dry-run, terraform plan,
git push --dry-run. Vê o efeito sem causar o efeito.
-
Defense-in-depth — duas camadas (CF Rule + middleware) impedem que falha em uma derrube
tudo.
Sinalizadores de alto blast radius (pause antes de executar):
- Comando contém
--force ou --no-verify.
-
rm -rf, DROP, DELETE sem WHERE,
git reset --hard, git push --force.
- Mudança em DNS raiz (apex), certificado SSL, credencial de pagamento, secret de produção.
- Edit direto em produção sem passar por staging/PR/code review.
-
Sexta-feira 18h — alto blast radius temporal: equipe está saindo, recuperação acontece no fim de semana.
Princípio operacional:
Quanto maior o blast radius, mais alto o custo de errar e mais alta deve ser a barreira de execução:
code review, dois aprovadores, janela de manutenção anunciada,
rollback testado. Engenharia sênior se distingue de júnior pela
consciência do blast radius antes de digitar Enter.
Ex.: na Otimiza.pro, deploy de Worker tem blast radius "produção total imediata" — por isso o pipeline
exige npm run lint, smoke test pós-deploy e Version ID anotado para rollback em < 30s. Já
edit em artigo isolado do blog tem blast radius "1 URL" — pode ir direto.
A/B Test
Teste comparando duas versões para ver qual performa melhor.
Frequency Cap
Limite de vezes que um usuário vê o mesmo anúncio.
Audience (Público)
Segmento de pessoas que você quer atingir com os anúncios.
Lookalike / Similar Audience
Público semelhante aos seus clientes existentes.
Custom Audience
Público personalizado baseado em interesses, URLs visitadas ou termos buscados.
UTM
Parâmetros adicionados à URL para rastrear a origem do tráfego no GA4.
utm_source
De onde veio (google, facebook, newsletter).
utm_medium
Tipo de mídia (cpc, organic, email, social).
utm_campaign
Nome da campanha.
utm_content
Diferencia variações do mesmo anúncio.
utm_term
Palavra-chave usada (geralmente auto-preenchido pelo Google Ads).
Marketing Digital Geral
Lead
Pessoa que demonstrou interesse (deixou contato, preencheu formulário).
MQL
Marketing Qualified Lead — lead qualificado pelo marketing (engajou com conteúdo).
SQL
Sales Qualified Lead — lead qualificado para vendas (pronto para contato comercial).
Lead Scoring
Sistema de pontuação que classifica leads por probabilidade de conversão, combinando dados demográficos
(cargo, empresa) e comportamentais (páginas visitadas, e-mails abertos). Leads acima de um limiar são
entregues ao time de vendas.
Ex.: cargo "Diretor" +30, abriu 3 e-mails +15, visitou /preços +25 → score 70 vai pro SDR.
CPL (Cost Per Lead)
Custo por Lead — quanto foi investido em mídia para gerar cada lead capturado (formulário, ligação, e-book).
Diferente de CPA, que mede venda. CPL baixo com qualidade ruim é pior do que CPL alto com lead qualificado.
Ex.: R$ 2.000 em ads geram 40 leads → CPL de R$ 50.
CAC
Custo de Aquisição de Cliente — quanto custa conquistar um novo cliente.
Ex.: gastou R$ 10.000 em mkt+vendas e fechou 25 clientes → CAC de R$ 400.
LTV (CLV)
Lifetime Value — receita total que um cliente gera ao longo do relacionamento.
Ex.: cliente que paga R$ 200/mês por 18 meses tem LTV de R$ 3.600.
LTV / CAC
Razão entre LTV e CAC que mede saúde da aquisição. Acima de 3:1 é saudável; abaixo de 1:1 significa que cada
cliente dá prejuízo.
Ex.: LTV R$ 3.600 e CAC R$ 400 → razão 9:1 (muito saudável).
Churn
Taxa de cancelamento — % de clientes que cancelam por período.
MRR
Monthly Recurring Revenue — receita recorrente mensal.
ARR
Annual Recurring Revenue — receita recorrente anual.
NPS
Net Promoter Score — métrica de satisfação/lealdade do cliente (-100 a 100).
CRM
Customer Relationship Management — sistema de gestão de relacionamento com clientes.
CTA
Call to Action — elemento que convida o usuário a agir ("Fale conosco", "Saiba mais").
Copy
Texto persuasivo voltado para conversão.
Copywriting
A arte de escrever textos persuasivos para marketing e vendas.
Headline
Título principal de uma página, anúncio ou e-mail.
Above the Fold
Conteúdo visível sem rolar a página — área mais nobre.
Below the Fold
Conteúdo que só aparece ao rolar para baixo.
Hero Section
Seção principal no topo de uma landing page (título + CTA + imagem).
Social Proof
Prova social — depoimentos, logos de clientes, números, selos de confiança.
FOMO
Fear of Missing Out — urgência/escassez usada em marketing.
Inbound Marketing
Estratégia de atrair clientes com conteúdo relevante (blog, SEO, redes sociais).
Outbound Marketing
Estratégia de ir atrás do cliente (cold call, ads, e-mail frio).
Content Marketing
Marketing de conteúdo — criar e distribuir conteúdo para atrair e engajar.
Funil de Vendas
Topo (TOFU), Meio (MOFU) e Fundo (BOFU) — jornada do desconhecido ao cliente.
TOFU
Top of Funnel — conteúdo de descoberta e awareness.
MOFU
Middle of Funnel — conteúdo de consideração e comparação.
BOFU
Bottom of Funnel — conteúdo de decisão e conversão.
Persona
Representação semi-fictícia do cliente ideal.
ICP
Ideal Customer Profile — perfil de empresa ideal (B2B).
B2B
Business to Business — empresa vendendo para empresa.
B2C
Business to Consumer — empresa vendendo para consumidor final.
SaaS
Software as a Service — software vendido como assinatura.
Freemium
Modelo com versão gratuita + planos pagos.
Trial
Período de teste gratuito.
Onboarding
Processo de integração/ativação de um novo cliente ou usuário.
Upsell
Oferecer um plano/produto superior ao cliente atual.
Cross-sell
Oferecer produtos complementares ao cliente.
Retention Rate
Taxa de retenção — % de clientes que permanecem.
Cohort
Grupo de usuários agrupados por período de aquisição.
Engenharia de Prompt & IA
LLM (Large Language Model)
Modelo de linguagem de grande escala treinado com bilhões de parâmetros em enormes volumes de texto, capaz
de gerar, resumir, classificar e raciocinar sobre linguagem natural. Ex.: Claude, GPT, Gemini, Llama.
Token
Unidade mínima que o modelo processa — pode ser palavra, subpalavra ou caractere. O custo de API, o limite
de contexto e a latência são todos medidos em tokens.
Ex.: "Engenharia de Prompt" ocupa ~6 tokens; regra prática: 1 token ≈ 4 caracteres em PT.
Tokenização
Processo de quebrar texto em tokens antes de enviar ao modelo. Cada família (BPE, SentencePiece, Tiktoken)
gera contagens diferentes para o mesmo texto — por isso 1k tokens em Claude ≠ 1k tokens em GPT.
Context Window
Janela máxima de tokens que o modelo consegue ler em uma única chamada (input + output). Exceder o limite
corta o conteúdo mais antigo.
Ex.: Claude Sonnet 200k tokens ≈ 500 páginas de livro em um único prompt.
Embedding
Representação vetorial de um texto (array de ~1.500 números) que captura seu significado semântico. Textos
com sentido próximo ficam próximos no espaço vetorial, viabilizando busca semântica e RAG.
Temperature
Controla aleatoriedade da saída. 0 = determinístico (sempre o mesmo output); 1 = criativo/imprevisível. Para
extração de dados use ~0; para copy criativa, 0.7–0.9.
Ex.: temperature 0 → determinístico para extração; 0.8 → criatividade para copy de anúncio.
Top-p (Nucleus Sampling)
Limita a geração aos tokens cuja probabilidade cumulativa atinge p. Com top-p=0.9, o modelo só sorteia entre
os tokens mais prováveis que somam 90% da massa. Use com temperature (não em conjunto com top-k).
Top-k
Restringe a amostragem aos k tokens mais prováveis a cada passo. Mais restritivo que top-p em contextos de
alta entropia. Geralmente você usa ou top-p ou
top-k, não os dois.
Max Tokens
Limite superior de tokens que o modelo pode gerar na resposta. Serve para controlar custo e evitar respostas
infinitas. Se o modelo atinge o limite antes de encerrar, a resposta é truncada no meio.
Stop Sequence
Lista de strings que, se aparecerem no output, encerram a geração imediatamente. Útil para delimitar
formatos estruturados (ex.: parar no "}" final de um JSON).
Zero-shot
Pedir ao modelo para executar uma tarefa sem fornecer exemplos — só a instrução. Bom quando a tarefa é
simples e o modelo já entende pelo nome ("traduza para inglês", "resuma em 3 linhas").
Few-shot
Fornecer 2–10 exemplos resolvidos dentro do prompt antes da tarefa real. Ensina formato, tom e critérios sem
fine-tuning. Técnica padrão para classificação, extração e formatação consistente.
Chain-of-Thought (CoT)
Instruir o modelo a "pensar passo a passo" antes de responder, explicitando o raciocínio. Aumenta precisão
em tarefas de lógica, matemática e decisões complexas. Frase-gatilho clássica: "Let's think step by step."
ReAct (Reasoning + Acting)
Padrão em que o modelo intercala Thought → Action → Observation → Thought…
chamando ferramentas externas entre passos de raciocínio. Base de agentes autônomos que executam tarefas
multi-etapa (buscar, calcular, decidir).
Self-Consistency
Gerar a mesma resposta várias vezes com temperatura > 0 e escolher a mais frequente (voto majoritário).
Reduz alucinação em tarefas de raciocínio ao custo de N× o preço.
Prompt Chaining
Quebrar uma tarefa complexa em uma sequência de prompts menores, onde o output de um alimenta o próximo.
Mais controlável e debuggável que um único mega-prompt; permite caching e reuso parcial.
System Prompt
Instrução de alto nível, enviada antes do primeiro turno do usuário, que define papel, tom, regras e
restrições do assistente durante toda a conversa. É o "DNA" do comportamento da IA naquela sessão.
Prompt Template
Prompt parametrizado com placeholders ({{cliente}}, {{contexto}}) preenchidos
programaticamente. Base de sistemas em produção: versione, teste A/B e meça desempenho como código.
Role Prompting
Atribuir papel explícito ao modelo ("Você é um SDR sênior especialista em SaaS B2B…") para enviesar tom,
vocabulário e profundidade. Efeito maior em modelos menores; em frontier models tende a ser redundante com
instruções claras.
RAG (Retrieval-Augmented Generation)
Arquitetura que, antes de chamar o LLM, busca documentos relevantes em uma base vetorial e injeta os trechos
no prompt. Reduz alucinação, atualiza conhecimento sem retreinar e permite citar fontes.
Vector Database
Banco otimizado para armazenar embeddings e fazer busca por similaridade (cosseno, dot product). Ex.:
Pinecone, Weaviate, Qdrant, pgvector, Cloudflare Vectorize.
Chunking
Dividir documentos longos em pedaços menores (500–2000 tokens) antes de gerar embeddings. Tamanho do chunk
impacta qualidade do retrieval: muito pequeno perde contexto; muito grande dilui similaridade.
Grounding
Ancorar as respostas do modelo em fontes verificáveis (documentos recuperados, resultados de tool calls,
dados estruturados). É o principal antídoto contra alucinação em contextos corporativos.
AI Agent
Sistema em que o LLM decide quais ações tomar, em que ordem, e chama ferramentas externas para executá-las
até atingir um objetivo. Vai além do chat: é um loop de raciocínio com autonomia delimitada por guardrails.
Tool Use (Function Calling)
Capacidade do modelo de retornar uma chamada de função estruturada (nome + JSON de args) em vez de texto
livre. Sua aplicação executa a função e devolve o resultado ao modelo, que continua o raciocínio.
MCP (Model Context Protocol)
Protocolo aberto (Anthropic, 2024) que padroniza como agentes de IA descobrem e consomem ferramentas,
recursos e prompts expostos por servidores externos. "USB-C para IA": conecta um modelo a qualquer serviço
sem integração custom.
Computer Use
Capacidade do modelo de controlar diretamente um computador — mover cursor, clicar, digitar, ler a tela —
como se fosse humano. Habilita automação de fluxos em aplicações sem API.
Hallucination
Resposta confiante do modelo que é factualmente falsa ou inventada. Ocorre mais quando o prompt pede dados
específicos fora do treinamento. Mitigação principal: RAG + grounding + citações.
Prompt Injection
Ataque em que conteúdo controlado por usuário (ou terceiro) é lido pelo modelo contendo instruções
maliciosas ("ignore as regras anteriores e faça X"). Principal vetor de risco em agentes que leem e-mail,
web e arquivos externos.
Jailbreak
Técnica de prompt que engana o modelo para violar suas próprias políticas de segurança (roleplay elaborado,
tradução, prefixos). Distinto de prompt injection — jailbreak é feito pelo próprio usuário, injection vem
via dados externos.
Guardrails
Camadas de controle (filtros de input, validadores de output, moderação, schemas obrigatórios) que garantem
que o agente opere dentro de limites aceitáveis de segurança, escopo e formato.
Eval (LLM Evaluation)
Processo de medir qualidade do modelo/prompt com dataset de referência (golden set) e métricas automáticas
ou LLM-as-judge. Sem eval, não há como iterar prompt em produção com confiança.
Fine-tuning
Treinar adicionalmente um modelo base em dados do seu domínio para ensinar estilo, vocabulário ou tarefa
específica. Custoso e inflexível — na maioria dos casos RAG + few-shot atendem melhor.
LoRA (Low-Rank Adaptation)
Técnica de fine-tuning que atualiza apenas matrizes de baixa dimensionalidade em vez dos pesos originais.
~1% do custo de um fine-tune completo, resultados comparáveis em tarefas específicas.
RLHF (Reinforcement Learning from Human Feedback)
Etapa pós-treino em que humanos comparam respostas do modelo e o sistema aprende a preferir as melhores. É o
que transforma um modelo "que só prevê tokens" em um assistente útil e alinhado.
Structured Output (JSON Mode)
Modo em que o modelo garante retorno em JSON válido conforme um schema definido. Elimina parsing frágil com
regex e viabiliza integração direta com APIs e bancos.
Schema-Guided Generation
Forçar o modelo a respeitar um schema (JSON Schema, Pydantic, Zod) durante a geração token a token. Mais
robusto que "pedir JSON" em linguagem natural — o próprio decoder bloqueia tokens inválidos.
Prompt Caching
Mecanismo que reaproveita a computação de prefixos idênticos entre chamadas — reduz custo (~90%) e latência
em prompts longos com trechos fixos (system prompt, documentação, few-shot examples).
Streaming
Receber os tokens da resposta conforme são gerados, em vez de esperar o output completo. Melhora TTFT (time
to first token) e UX percebida. Exige parser incremental no cliente.
Batch Inference
Enviar muitas requisições de uma vez para processamento assíncrono (janela de horas) em troca de ~50% de
desconto. Indicado para enriquecimento, rotulagem, classificação em massa — não para tempo real.
Prompt Engineering
Disciplina de projetar instruções para LLMs que produzem resultados confiáveis em escala. Envolve clareza de
objetivo, definição de persona, fornecimento de contexto, exemplos (few-shot), restrições de formato e
iteração baseada em evals. É o que separa "perguntar ao ChatGPT" de construir um sistema de IA em produção.
Ex.: o system prompt do A.N.A. Vendas tem ~3.000 tokens estruturados em 8 blocos versionados — mudou um
bloco, roda eval, mede regressão, só então sobe.
Context Engineering
Termo emergente (2025): engenharia de tudo o que entra no context window — system prompt, RAG retrievals,
histórico, ferramentas, exemplos, dados estruturados. Vai além do prompt: decide o que injetar, em que
ordem, com que orçamento de tokens. Para agentes longos, é o trabalho real — o prompt em si é a menor parte.
Ex.: Andrej Karpathy popularizou o termo em 2025 contrapondo "prompt engineering" (texto) a "context
engineering" (arquitetura).
In-Context Learning (ICL)
Habilidade emergente dos LLMs de aprender uma tarefa a partir de exemplos no próprio prompt, sem atualizar
pesos. É a base teórica do few-shot: o modelo "pega o padrão" de 2-10 exemplos e generaliza. Não é
aprendizado real (nada persiste entre chamadas) — é reconhecimento de padrão dentro do contexto.
Ex.: dar 5 pares "lead bom / lead ruim" antes do 6º para classificar — o modelo replica o critério sem
nunca ter sido treinado nele.
Extended Thinking (Reasoning Tokens)
Modo em que o modelo gera tokens internos de raciocínio antes da resposta final, e esses tokens são contados
e cobrados separadamente (Claude Opus 4.7, o-series da OpenAI). Diferente de Chain-of-Thought clássico
(visível no output): aqui o pensamento pode ser opaco, com orçamento configurável
(thinking_budget). Melhora drasticamente lógica, matemática e código ao custo de latência e
tokens.
Ex.: thinking: { type: "enabled", budget_tokens: 16000 } no SDK Anthropic permite ao Claude
"raciocinar" antes de responder problemas complexos.
Knowledge Cutoff
Data até a qual o modelo viu dados de treinamento. Tudo posterior é desconhecido — o modelo pode inventar
(alucinar) ou admitir que não sabe. Diferente de currentDate injetada em runtime via prompt:
cutoff é fixo do modelo, currentDate é variável do contexto.
Ex.: Claude Opus 4.7 cutoff ≈ janeiro/2026; perguntar sobre eleições de novembro/2026 vai retornar erro
educado ou invenção.
Prefill
Técnica da Anthropic em que você começa o turno do assistente com texto fixo que o modelo deve continuar.
Força formato, idioma ou pula preâmbulos indesejados. O modelo trata o prefill como se fosse a continuação
dele mesmo e nunca o reescreve.
Ex.: prefill assistant: {"score": força saída JSON direto, sem o preâmbulo "Aqui está o
JSON solicitado:".
XML Tags em prompts
Convenção documentada pela Anthropic para estruturar prompts com tags <context>,
<instructions>, <example>, <rules>. Modelos Claude
foram treinados explicitamente para respeitar esses delimitadores — performance sobe vs. usar markdown ou
texto corrido para a mesma estrutura.
Ex.: <context>{{docs}}</context><task>Resuma em 3 bullets</task> é
mais robusto do que "Contexto: ... Tarefa: ...".
Reranker
Segundo estágio de um pipeline RAG: depois que o retrieval traz N candidatos (50-100) por similaridade
vetorial, o reranker (modelo cross-encoder mais caro) reordena com qualidade muito superior e devolve top-k
(5-10) ao LLM. Trade-off clássico: recall barato no retrieval, precisão cara no rerank.
Ex.: Cohere Rerank ou bge-reranker — reduz alucinação porque os trechos que entram no contexto são
realmente os mais relevantes, não só os mais "parecidos".
Hybrid Search
Combinação de busca lexical (BM25 — match de palavras-chave) com busca semântica (embeddings — similaridade
de significado). BM25 acerta nomes próprios, números e jargão raro; semântica acerta paráfrases e sinônimos.
Juntas, recall sobe sem perder precisão. Padrão atual em RAG sério.
Ex.: "tarifa SPTrans janeiro 2026" — BM25 pega pelos números/siglas; vetorial pegaria "preço transporte
público SP início ano" mas perderia o número exato; híbrido captura ambos.
LLM-as-Judge
Padrão de avaliação em que um LLM (geralmente mais forte) pontua respostas de outro LLM contra critérios
definidos. Substitui avaliador humano em larga escala — barato e rápido —, mas tem vieses (gosta de
respostas longas, do próprio estilo). Melhor para rubricas claras e comparações pareadas que para julgamento
absoluto.
Ex.: usar Claude Opus como juiz das saídas do Claude Haiku em testes A/B de prompt — 1.000 amostras
avaliadas em minutos por menos de R$ 5.
Constitutional AI
Método de alinhamento da Anthropic em que o modelo é treinado contra um conjunto explícito de princípios
("constituição"), gerando feedback sobre si mesmo em vez de depender só de humanos rotulando. Reduz
dependência de RLHF puro e torna os valores do modelo auditáveis. É a base do comportamento alinhado da
família Claude.
Ex.: princípios cobrem "evite respostas tóxicas", "priorize honestidade sobre concordar com o usuário",
"não ajude em dano concreto".
TTFT (Time to First Token)
Latência entre enviar a requisição e receber o primeiro token de resposta. Em apps com streaming, é a
métrica de UX que mais importa — usuário percebe "está respondendo". TTFT cresce com tamanho do prompt
(input tokens) e cai drasticamente com prompt caching.
Ex.: TTFT alvo para chat em produção < 1s; sem caching, prompt de 50k tokens dá TTFT ≈ 3-5s —
inaceitável sem otimização.
Cache Hit / Cache Miss (Prompt Caching)
Quando uma porção do prompt (system, ferramentas, few-shot) já está em cache do provider, a chamada conta
como cache hit e custa ~10% do preço normal nesses tokens. Cache miss =
primeira chamada, custa preço cheio mas semeia o cache. A response da API expõe
cache_creation_input_tokens e cache_read_input_tokens — meça para validar economia
real.
Ex.: agente da Otimiza com system prompt de 4k tokens fixos roda 50× por dia — cache hit derruba custo de
R$ 12 → R$ 1,50 por dia.
Desenvolvimento
Frontend
Camada do software que roda no navegador do usuário — interface, interação e experiência visual.
Backend
Camada do servidor — regras de negócio, banco de dados, autenticação e APIs.
Full-Stack
Desenvolvedor/solução que atua tanto no frontend quanto no backend.
SPA
Single Page Application — aplicação que carrega uma única página HTML e troca conteúdo via JS (ex: React).
MPA
Multi Page Application — cada rota é uma página HTML separada entregue pelo servidor.
SSR
Server-Side Rendering — HTML é gerado no servidor a cada requisição (melhor para SEO e first paint).
CSR
Client-Side Rendering — HTML é montado no navegador via JavaScript após o download do bundle.
SSG
Static Site Generation — páginas HTML geradas em build time, servidas como arquivos estáticos.
ISR
Incremental Static Regeneration — páginas estáticas revalidadas periodicamente sem rebuild completo.
Hydration
Processo em que o JavaScript "ativa" o HTML renderizado pelo servidor, tornando-o interativo.
React
Biblioteca JavaScript da Meta para construir interfaces via componentes reutilizáveis.
React Helmet
Biblioteca para gerenciar dinamicamente as tags do <head> em apps React (título, meta, OG, canonical)
— essencial para SEO em SPAs.
Next.js
Framework React full-stack com SSR, SSG, ISR, rotas por arquivo e otimizações automáticas.
Vue.js
Framework JavaScript progressivo para construção de interfaces reativas.
Svelte
Compilador que gera código JavaScript otimizado em build time, sem runtime de framework no bundle.
Astro
Framework focado em conteúdo que envia zero JS por padrão — ideal para blogs e sites institucionais.
Node.js
Runtime JavaScript do lado do servidor construído sobre o V8 do Chrome.
Deno
Runtime JavaScript/TypeScript seguro criado pelo autor original do Node.js.
Bun
Runtime JavaScript ultrarrápido que também funciona como gerenciador de pacotes e bundler.
TypeScript
Superset do JavaScript com tipagem estática — reduz bugs e melhora autocomplete.
npm
Node Package Manager — gerenciador de pacotes padrão do Node.js e maior registry do mundo.
pnpm / Yarn
Gerenciadores de pacote alternativos ao npm — mais rápidos e eficientes em espaço em disco.
Webpack
Bundler que empacota JS, CSS e assets em arquivos otimizados para produção.
Vite
Build tool moderno com dev server instantâneo baseado em ES modules nativos — substituto do Webpack.
Tree Shaking
Eliminação de código morto no bundle — remove exports nunca usados para reduzir tamanho final.
Code Splitting
Divisão do bundle em pedaços menores carregados sob demanda, acelerando o first load.
Polyfill
Código que replica APIs modernas em navegadores antigos que não as implementam nativamente.
Transpilação
Conversão de código moderno (ES2023, TypeScript) em versões compatíveis com navegadores antigos.
REST
Representational State Transfer — padrão de APIs HTTP baseado em recursos (GET, POST, PUT, DELETE).
GraphQL
Linguagem de query para APIs — cliente pede exatamente os campos que precisa, numa única requisição.
JSON
JavaScript Object Notation — formato leve de troca de dados, padrão de APIs web modernas.
JWT
JSON Web Token — formato de token auto-contido usado para autenticação entre cliente e servidor.
OAuth 2.0
Protocolo aberto de autorização que permite acesso delegado (ex: "Entrar com Google").
CORS
Cross-Origin Resource Sharing — mecanismo que controla requisições entre domínios diferentes no navegador.
CSP
Content Security Policy — header HTTP que protege contra XSS definindo fontes permitidas de scripts e
recursos.
XSS
Cross-Site Scripting — vulnerabilidade que permite injetar scripts maliciosos em páginas legítimas.
CSRF
Cross-Site Request Forgery — ataque que força um usuário autenticado a executar ações sem querer.
SQL Injection
Vulnerabilidade que permite injetar comandos SQL maliciosos via campos não sanitizados.
Git
Sistema de controle de versão distribuído — padrão da indústria para rastrear mudanças em código.
GitHub / GitLab
Plataformas de hospedagem Git com PRs, CI/CD, issues, wikis e gestão colaborativa de código.
Pull Request
Proposta de mudança de código submetida para revisão antes de merge na branch principal.
CI/CD
Continuous Integration / Continuous Deployment — automação de build, teste e deploy a cada commit.
Docker
Plataforma de containers que empacota aplicação + dependências em imagem portável e reprodutível.
Kubernetes
Orquestrador de containers que gerencia deploy, escala e resiliência de aplicações distribuídas.
Serverless
Modelo em que o provedor gerencia servidores — você paga só pelo tempo de execução da função.
Edge Computing
Execução de código em servidores distribuídos próximos ao usuário final, reduzindo latência.
wrangler deploy
Comando da CLI oficial da Cloudflare (
wrangler) que empacota o código do Worker, os bindings
(D1, KV, R2, Queues, Durable Objects), os assets estáticos e sobe tudo para a rede edge global da Cloudflare
em uma única operação atômica. É o equivalente a
git push no mundo do Workers: um comando,
publicação mundial em segundos, rollback via Version ID.
O que acontece quando você roda:
-
Lê
wrangler.toml (ou wrangler.jsonc) — pega name, entry point, routes,
bindings, vars, compatibility_date.
-
Executa o build se houver
[build] section (ex.: esbuild,
vite build, npm run build).
-
Faz diff dos assets estáticos (pasta
assets.directory) contra o que já está no edge — só
envia arquivos novos ou modificados.
-
Valida sintaticamente o código (
esbuild interno), checa limites (1 MiB no Free / 10 MiB no
Paid após compressão).
-
Registra a nova versão no Cloudflare, gera
Version ID (UUID) e promove para produção
imediatamente (a menos que use --dry-run ou wrangler versions upload).
- Rede edge propaga em todos os 300+ datacenters — tipicamente < 30 segundos globalmente.
Flags essenciais:
-
--env production — usa o bloco [env.production] do wrangler.toml (routes, vars
e bindings específicos do ambiente).
-
--dry-run — valida e faz bundle sem publicar; útil em CI para PR checks.
-
--outdir dist/ — salva o bundle final em disco (útil para debug de tamanho / source map).
-
--keep-vars — preserva vars existentes que foram definidas via dashboard/API (importante em
contas com secrets gerenciados fora do wrangler.toml).
--minify — minifica o bundle (default em produção).
-
--compatibility-date 2026-04-17 — força uma data de compatibilidade específica (senão lê do
toml).
wrangler.toml mínimo (Worker + Assets + D1):
name = "otimizapro"
main = "worker/index.js"
compatibility_date = "2026-04-17"
[assets]
directory = "."
binding = "ASSETS"
[[d1_databases]]
binding = "DB"
database_name = "otimizapro-crm"
database_id = "0a4a1840-31e5-4845-9684-b65e3da8c0c4"
[[routes]]
pattern = "otimizapro.com/*"
zone_name = "otimizapro.com"
[triggers]
crons = ["*/1 * * * *"]
Pre-checks antes de wrangler deploy em produção:
npm run lint — ESLint limpo. Bug trivial capturado no linter não derruba produção.
npm run format — Prettier aplicado. Evita diff de formatação que polui PRs.
-
wrangler d1 migrations list otimizapro-crm — checar se há migration nova
não aplicada. Deploy com schema dessincronizado quebra em runtime.
wrangler deploy --dry-run — validação sem publicar.
-
git status limpo e branch == master. Deploy de branch errado acontece mais do
que se admite.
Pós-deploy (obrigatórios):
-
Smoke test —
curl -I nas 5 URLs críticas (home, admin, API principal, um
artigo, um formulário) esperando 200/302.
-
Purge de cache se você alterou HTML/CSS/JS que estava no edge cache (
wrangler
não purga automaticamente — é responsabilidade sua).
-
Verificar
wrangler tail por 2-3 minutos procurando exceptions.
-
Anotar o Version ID retornado. Rollback rápido:
wrangler rollback <version-id>.
Rollback (quando deu ruim):
# listar versões recentes
wrangler deployments list
# voltar para versão anterior (propagação < 30s)
wrangler rollback <version-id>
Armadilhas frequentes:
-
Bundle > 1 MiB (Free) / 10 MiB (Paid) → deploy falha. Use
--outdir para inspecionar e
remover deps pesadas (moment.js, lodash completo etc.).
-
Secrets commitados em
wrangler.toml → nunca. Use
wrangler secret put KEY. Secrets no toml vazam em build logs, screenshots, git.
-
compatibility_date desatualizada → APIs antigas do runtime; novas features ignoradas.
Atualize a cada trimestre.
-
Deploy sem
d1 migrations apply prévio → no such column em produção, 500 em
loop.
-
Routes conflitando entre dois Workers no mesmo host (ex.:
otimizapro.com/* em dois workers)
→ comportamento não determinístico, depende da ordem de deploy. Cloudflare rejeita atualmente, mas zonas
antigas podem ter esse fantasma.
-
Esquecer
--env production em ambiente multi-env → deploy de dev vai para produção por
acidente.
Ex.: deploy típico da Otimiza.pro — npm run lint && wrangler deploy sobe Worker +
80k arquivos estáticos + D1 bindings em ~20 segundos. Output confirma Version ID e as 9 rotas cobertas
(otimiza.pro/*, otimizapro.com/*, crm.otimizapro.com/*,
etc.).
Cloudflare Workers
Plataforma serverless edge da Cloudflare — executa JavaScript/WASM em 300+ datacenters globais.
Cloudflare D1
Banco de dados SQL serverless (SQLite) integrado aos Workers da Cloudflare.
KV Store
Banco key-value distribuído, ideal para cache, configurações e sessões (ex: Cloudflare KV, Redis).
R2
Object Storage da Cloudflare compatível com S3 — sem taxa de egress (saída de dados).
Webhook
Callback HTTP disparado automaticamente por um sistema quando um evento ocorre (oposto do polling).
Cron Job
Tarefa agendada que executa automaticamente em intervalos definidos (ex: todo dia às 3h).
Schema (banco de dados)
A
planta baixa do banco: a descrição formal de quais tabelas existem, quais colunas cada
tabela tem, quais tipos de dados elas aceitam, quais relações se conectam e quais restrições
(
constraints) protegem a integridade. Schema é a diferença entre um banco que você
consulta com confiança e uma pasta de arquivos JSON desorganizados.
Elementos de um schema:
- Tabelas — as entidades (leads, deals, campaigns, contacts).
-
Colunas + tipos —
INTEGER, TEXT, REAL,
BLOB, BOOLEAN, TIMESTAMP, JSON. Tipo errado é bug
esperando o bug ficar caro.
-
Primary Key — identificador único da linha, quase sempre
id INTEGER PRIMARY KEY AUTOINCREMENT.
-
Foreign Keys —
lead_id REFERENCES leads(id). Garantem que relação existe;
ON DELETE CASCADE / ON DELETE SET NULL definem o que acontece quando o pai
some.
-
Índices — não são parte do shape dos dados, mas do schema operacional. Índice em coluna
buscada = query 100x mais rápida.
-
Constraints —
NOT NULL, UNIQUE, CHECK. Regras
que o banco impõe antes de aceitar a linha.
-
Views / Triggers — schema dinâmico; views são queries nomeadas, triggers reagem a
mudanças.
Exemplo (schema real Cloudflare D1):
CREATE TABLE leads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT NOT NULL UNIQUE,
name TEXT,
score INTEGER DEFAULT 0 CHECK (score BETWEEN 0 AND 100),
segment_id INTEGER REFERENCES segments(id) ON DELETE SET NULL,
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
);
CREATE INDEX idx_leads_email ON leads(email);
CREATE INDEX idx_leads_score_desc ON leads(score DESC);
CREATE INDEX idx_leads_segment ON leads(segment_id) WHERE segment_id IS NOT NULL;
Schema vs Schemaless:
-
Schema-first (SQL: Postgres, MySQL, SQLite, D1) — estrutura validada no insert; bugs
aparecem cedo, queries são rápidas e previsíveis.
-
Schemaless (Mongo, DynamoDB em modo flexível) — aceita qualquer forma; bugs aparecem em
produção quando a aplicação lê dados inesperados.
-
Schema-on-read (Data Lakes, S3 + parquet) — dado bruto fica salvo, schema aplicado só
na hora da leitura. Flexível para analytics, ruim para OLTP.
Evolução de schema (migrations):
Schema de produção nunca é alterado com ALTER TABLE direto — sempre via
migration versionada (ver termo Migration). Schema-as-code: o estado atual do schema é derivado
da soma das migrations aplicadas.
Schema TypeScript-first (Drizzle):
Ferramentas modernas como Drizzle ORM invertem o fluxo: você define o schema em TypeScript, a ferramenta
gera o SQL + tipagem end-to-end. Mudou o schema? Autocomplete quebra no VS Code antes do bug chegar em
produção.
Ex.: o CRM da Otimiza.pro tem schema distribuído em 97 migrations SQL (functions/db/001-097)
cobrindo leads, contacts, pipeline, deals, accounts, automations, drip campaigns, NPS e analytics. A soma
dessas migrations define o shape completo do banco em produção.
Query
Uma
pergunta formal ao banco de dados. Em SQL, é uma instrução estruturada que especifica
o quê você quer (colunas),
de onde (tabelas + joins),
filtrado por (WHERE),
agrupado (GROUP BY),
ordenado (ORDER BY) e
limitado
(LIMIT). Query bem escrita é rápida, previsível e fácil de ler; query ruim derruba produção.
Os 6 tipos essenciais (CRUD + agregação):
SELECT — lê dados. 80% das queries em apps de leitura intensiva.
INSERT — cria linha.
-
UPDATE — altera linha(s) existentes. Sempre com WHERE — esquecer é como
rm -rf da tabela.
DELETE — remove linha(s). Mesmo conselho: WHERE é obrigatório.
-
UPSERT — "insere se não existe, atualiza se existe" (INSERT ... ON CONFLICT ... DO UPDATE). Operação atômica favorita de sistemas de sincronização.
-
AGGREGATE — COUNT, SUM, AVG, MAX,
MIN com GROUP BY. Coração de dashboards e relatórios.
Anatomia de uma query SELECT:
SELECT
s.name AS segmento,
COUNT(*) AS total_leads,
AVG(l.score) AS score_medio,
MAX(l.created_at) AS ultimo_lead
FROM leads l
JOIN segments s ON s.id = l.segment_id
WHERE l.created_at > unixepoch() - 30*86400
AND l.score >= 50
GROUP BY s.id, s.name
HAVING COUNT(*) > 10
ORDER BY total_leads DESC
LIMIT 20;
Ordem lógica de execução (não é a ordem escrita):
FROM + JOIN — monta o conjunto de trabalho.
WHERE — filtra linhas individuais.
GROUP BY — agrupa em buckets.
HAVING — filtra os buckets (diferente de WHERE: opera pós-agregação).
SELECT — projeta as colunas finais.
ORDER BY — ordena.
LIMIT / OFFSET — recorta a janela.
Saber dessa ordem resolve 70% dos "por que essa query retorna o que retorna?".
Tipos de query além de SQL:
-
GraphQL query — cliente descreve o shape do retorno; servidor resolve campo a campo.
-
Query string de URL —
?q=vt&cidade=sp; params depois do
?.
-
Search query (Google) — a string que o usuário digita na busca. Termos keyword
research, search intent e long-tail são todos sobre isso.
-
Media query (CSS) — regras condicionais por tamanho de tela (
@media (max-width: 640px)).
Performance de query (o que importa):
-
EXPLAIN QUERY PLAN — comando que revela se sua query usa índice ou faz
full-table-scan. Primeira ferramenta de debug.
-
Índices corretos —
WHERE score >= 50 sem índice em score =
varredura linear.
-
N+1 query problem — loop em código que faz 1 query por item. Troca por 1 join ou 1
WHERE IN (...).
-
SELECT * é inimigo — transfere colunas grandes (blobs, JSON) que você não
usa; quebra cache; vaza dados.
-
Parâmetros bound —
WHERE email = ? com parâmetro, nunca concatenação de
string. Segurança (anti-SQL-injection) e performance (plan cache).
Query em código (Workers + D1):
// Cloudflare D1 — bind de parâmetros, anti-injection
const { results } = await env.DB
.prepare('SELECT id, email, score FROM leads WHERE score >= ? LIMIT ?')
.bind(75, 20)
.all();
Ex.: dashboard executivo da Otimiza.pro roda uma SELECT agregada a cada 60s sobre a tabela
leads (≈ 1.8M linhas). Com índices em score e created_at, a query
responde em < 15ms. Sem eles, 2.4s — inviável como refresh.
Migration
Script versionado que altera o schema do banco de dados de forma
reproduzível,
ordenada e idealmente
reversível. Cada migration é um passo histórico —
aplicadas em sequência, levam o banco do estado inicial ao estado atual em qualquer ambiente (dev, staging,
produção). Sem migrations, schema vira "funciona no meu Postgres" — o equivalente de código sem git.
Anatomia de uma migration:
-
Nome numerado (
097_add_pending_enrollment.sql) — ordem lexicográfica =
ordem de execução, sem ambiguidade.
- Up — o que a migration aplica (CREATE TABLE, ALTER, INSERT de seed).
-
Down — o rollback correspondente (DROP, ALTER reverso). Nem toda ferramenta exige, mas
é boa prática.
-
Transacional — executada em
BEGIN...COMMIT para que falha no meio não
deixe o banco em estado parcial.
Exemplo (Cloudflare D1 / SQLite):
-- functions/db/097_add_pending_enrollment.sql
ALTER TABLE drip_enrollments
ADD COLUMN pending_enrollment_at INTEGER;
CREATE INDEX IF NOT EXISTS idx_drip_pending
ON drip_enrollments(pending_enrollment_at)
WHERE pending_enrollment_at IS NOT NULL;
Regras de ouro (migrations em produção):
-
Nunca editar migration já aplicada em produção — crie uma nova que corrige. A migration
aplicada é história, imutável.
-
Forward-compatible primeiro — deploy adiciona coluna/tabela nova antes do
código que a usa; remove só depois de todo código parar de referenciar.
-
Backfill assíncrono para colunas
NOT NULL em tabelas grandes: 1) adiciona
coluna nullable; 2) backfill em lotes via cron; 3) migration final adiciona NOT NULL.
-
Índices com
CONCURRENTLY (Postgres) ou offline (SQLite/D1) — índice
bloqueante em tabela de 50M linhas derruba produção.
-
Testar em dump de produção, não em banco vazio — migration que demora 3s em 1.000
linhas pode demorar 40 min em 10M.
-
Sem
DROP COLUMN irrecuperável sem backup explícito. Renomeie para
_deprecated_colname antes.
Ferramentas por stack:
-
Cloudflare D1 — migrations SQL em pastas numeradas, aplicadas via
wrangler d1 migrations apply.
- Drizzle —
drizzle-kit generate deriva SQL do schema TypeScript.
-
Prisma —
prisma migrate gera migration.sql + mantém histórico
em _prisma_migrations.
-
Postgres puro —
sqitch, flyway, goose ou
dbmate.
-
Django —
python manage.py makemigrations +
migrate (autogerada a partir dos models).
Armadilhas frequentes:
-
Gaps na numeração (
095, 097, pulou 096) → dois devs fizeram merge
paralelo. Renumere antes de commitar.
-
Migration idempotente (
IF NOT EXISTS) é amiga de ambiente de dev, mas esconde bugs em
produção onde deveria falhar se já aplicada.
-
ALTER TABLE ... DROP COLUMN em SQLite antigo (< 3.35) não existe — precisa recriar a
tabela. D1 atual suporta.
-
Seeds dentro de migration: não. Seeds vão em script separado, porque são dados, não
schema.
Ex.: CRM da Otimiza.pro tem 97 migrations sequenciais em functions/db/, numeradas 001-097
sem gaps. Cada deploy roda wrangler d1 migrations apply otimizapro-crm — quem criar a 098 tem
que garantir forward-compat com o código em produção durante a janela de deploy.
ORM
Object-Relational Mapping — camada que traduz objetos de código em queries SQL (ex: Prisma, Sequelize).
Middleware (regex)
Camada de código que intercepta requisições
entre o cliente e o handler final — roda antes
(ou depois) de cada rota para executar lógica transversal: autenticação, logging, rate-limit, CORS, A/B
test, redirect, rewrite. Em Next.js, Cloudflare Workers, Express e Hono, o middleware é o ponto onde
regex aparece: você define o
matcher do middleware com uma expressão regular que decide em
quais URLs ele executa — evitando processar assets estáticos e rotas que não precisam da lógica.
Anatomia (Next.js):
export const config = {
matcher: [
// regex negativo: rodar em TUDO exceto assets e API
'/((?!_next/static|_next/image|favicon.ico|api/).*)',
],
};
Por que regex importa:
-
Middleware roda em cada requisição — matcher mal escrito vira gargalo de performance
(ex.: processar
.png, .css, .js à toa).
-
Regex lookahead negativo
(?!...) é padrão para excluir rotas: "tudo que
não começa com X".
-
Em Cloudflare Workers, o matcher equivalente é o
routes no
wrangler.toml usando padrões glob — mas dentro do Worker você ainda usa regex no
URL.pathname.
Padrões regex frequentes em middleware:
^/admin(/.*)?$ — /admin e qualquer subrota (protege área logada).
-
\\.(jpe?g|png|gif|webp|avif|css|js|woff2?|svg)$ — assets estáticos (geralmente
excluir).
-
^/api/(?!public/) — APIs privadas (/api/* exceto /api/public/*).
^/(pt|en|es)(/|$) — captura locale para i18n antes de rotear.
Armadilhas:
- Esquecer de escapar
. em regex de extensão → casa com qualquer caractere.
-
Matcher amplo (
/.*) sem exclusões → middleware roda em 100% das assets, consome CPU time da
edge (custo real no Cloudflare Workers).
- Ordem de middlewares importa: auth antes de rate-limit antes de logging.
Ex.: Otimiza.pro usa middleware no Worker para 1) bloquear bots via regex de User-Agent, 2) redirecionar
www → apex, 3) proteger /admin/* com ADMIN_API_KEY. Matcher:
^/(?!assets|_static).*.
Drizzle ORM
ORM TypeScript-first focado em
type-safety,
SQL-like syntax e
edge compatibility. Ao contrário do Prisma (que gera client pesado e usa engine binário), o
Drizzle é uma biblioteca leve que compila para SQL bruto previsível e roda em runtimes serverless/edge como
Cloudflare Workers, Vercel Edge, Bun e Deno — sem cold start causado por engine externo.
Posicionamento no ecossistema:
-
vs Prisma — Drizzle é mais próximo de SQL cru, sem runtime pesado; ideal para edge.
Prisma é mais abstrato e DX-friendly, mas com engine binário que não roda em todos runtimes.
-
vs Kysely — Kysely é puro query builder; Drizzle adiciona schema declarativo,
migrations versionadas e relational queries.
-
vs SQL cru — Drizzle mantém SQL legível, mas ganha tipagem automática a partir do
schema (autocomplete + erro em compile-time para colunas inexistentes).
Stacks suportadas:
- PostgreSQL (node-postgres, Neon, Supabase, Vercel Postgres)
- MySQL / PlanetScale
- SQLite (better-sqlite3, Cloudflare D1, Turso, Bun SQLite)
Exemplo (schema + query):
// schema.ts
export const leads = sqliteTable('leads', {
id: integer('id').primaryKey(),
email: text('email').notNull().unique(),
score: integer('score').default(0),
createdAt: integer('created_at', { mode: 'timestamp' }),
});
// query
const hotLeads = await db.select()
.from(leads)
.where(gt(leads.score, 75))
.orderBy(desc(leads.createdAt))
.limit(20);
Por que importa na stack Otimiza.pro:
- Roda nativo em Cloudflare Workers + D1 (nossa stack) — zero cold start de engine.
drizzle-kit gera migrations SQL reversíveis a partir do schema TypeScript.
-
Tipagem end-to-end: o retorno de
.select() é tipado pelo schema — pega bug em CI antes de
chegar ao usuário.
- Bundle pequeno (~10kb gzipped) — importante em Workers com limite de 1MB no plano Paid.
Ex.: migrar de db.prepare(...).bind(...) (D1 cru) para Drizzle reduz boilerplate, elimina
SQL injection por design e ganha autocomplete de colunas no VS Code.
Linter
Ferramenta que analisa código estaticamente em busca de erros, bugs e violações de estilo (ex: ESLint).
Prettier
Formatador de código opinativo que padroniza espaços, quebras e aspas automaticamente.
Unit Test
Teste automatizado que valida uma função/componente isolado do resto do sistema.
E2E Test
End-to-End Test — teste que simula o fluxo completo do usuário no navegador (ex: Playwright, Cypress).
Mock
Objeto simulado que substitui dependências reais (API, banco) durante testes automatizados.
Regex
Expressão regular — padrão para busca e manipulação de strings (ex: validar e-mail, CEP, CPF).
Promise
Objeto JavaScript que representa uma operação assíncrona que pode ser resolvida ou rejeitada no futuro.
Async/Await
Sintaxe moderna para trabalhar com Promises de forma mais legível, parecida com código síncrono.
WebSocket
Protocolo de comunicação bidirecional persistente entre cliente e servidor, usado em chats e real-time.
Feature Flag
Interruptor que liga/desliga funcionalidades em produção sem precisar fazer novo deploy.
A/B Test
Experimento que mostra duas versões (A e B) para públicos diferentes e mede qual performa melhor.
Monorepo
Estratégia de armazenar múltiplos projetos/pacotes relacionados num único repositório Git.
Semver
Semantic Versioning — padrão MAJOR.MINOR.PATCH (ex: 2.4.1) para versionar releases de software.
Tailwind CSS
Framework CSS utility-first — estiliza componentes com classes utilitárias direto no HTML, sem CSS
customizado.
Playwright
Framework de testes E2E da Microsoft que automatiza Chrome, Firefox e Safari num único script.
WCAG / a11y
Web Content Accessibility Guidelines — diretrizes de acessibilidade web. a11y é abreviação de
"accessibility" (a + 11 letras + y).
i18n / l10n
Internationalization (i18n) e Localization (l10n) — preparar e adaptar software para múltiplos idiomas e
regiões.
Microservices
Arquitetura onde a aplicação é dividida em serviços pequenos e independentes que se comunicam via API.
Event-Driven
Arquitetura onde componentes reagem a eventos assíncronos (pub/sub), desacoplando produtores de
consumidores.
Message Queue
Sistema de fila (ex: RabbitMQ, SQS) que enfileira mensagens entre serviços para processamento assíncrono.
Redis
Banco in-memory ultrarrápido usado para cache, sessões, filas e pub/sub em tempo real.
PostgreSQL
Banco de dados relacional open-source robusto, com suporte a JSON, full-text search e extensões.
MongoDB
Banco NoSQL orientado a documentos JSON — flexível para dados sem schema fixo.
Supabase
Alternativa open-source ao Firebase: PostgreSQL + auth + storage + realtime + edge functions.
Vercel
Plataforma de deploy para frontends e full-stack (Next.js, Svelte, Astro) com CDN global e serverless
functions.
Netlify
Plataforma de deploy para sites estáticos e Jamstack com CI/CD, forms, identity e edge functions.
Jamstack
Arquitetura web baseada em JavaScript, APIs e Markup pré-renderizado — sites rápidos, seguros e escaláveis.
Headless CMS
CMS que fornece conteúdo via API sem frontend acoplado (ex: Strapi, Sanity, Contentful).
Composable Architecture
Abordagem onde a stack é montada com serviços best-of-breed independentes via APIs, em vez de um monolito.
WASM
WebAssembly — formato binário de baixo nível que roda código C/Rust/Go no navegador ou edge com performance
quase nativa.
Logging (estruturado)
Registro de eventos da aplicação em formato parseável (JSON) com campos padronizados (level,
timestamp, trace_id, user_id). Muito mais útil para busca/alertas do
que logs em texto corrido.
Tracing (Distributed Tracing)
Rastreamento de uma única requisição conforme ela atravessa múltiplos serviços, mostrando onde o tempo é
gasto. Cada passo é um span; juntos formam um trace. Padrões: OpenTelemetry, W3C Trace
Context.
Metrics
Séries temporais numéricas (latência p50/p95/p99, throughput, taxa de erro) agregadas em janelas de tempo.
Base para dashboards e alertas. Ferramentas: Prometheus, Grafana, Datadog.
Observability
Capacidade de entender o que está acontecendo dentro de um sistema a partir das saídas externas. Os "três
pilares": logs, metrics e traces.
SLO / SLA / SLI
SLI (Service Level Indicator): métrica medida (ex.: 99,92% de disponibilidade).
SLO (Objective): meta interna (99,9%). SLA (Agreement): contrato externo
com cliente, geralmente mais folgado que o SLO e com penalidade se descumprido.
HMAC
Hash-based Message Authentication Code — assinatura criptográfica combinando hash (SHA-256) + chave secreta
compartilhada. Usada para verificar autenticidade e integridade de webhooks e tokens sem precisar de TLS
mútuo.
Rate Limiting
Limitar o número de requisições que um cliente pode fazer em uma janela de tempo. Protege contra abuso e
loops bugados. Quando o limite é atingido, servidor responde HTTP 429.
Ex.: API permite 100 req/min por IP; a 101ª recebe HTTP 429 Too Many Requests.
DDoS (Distributed Denial of Service)
Ataque coordenado de milhares de máquinas para saturar o alvo com tráfego e tirar o serviço do ar. Mitigação
depende de CDN com detecção (Cloudflare, AWS Shield), rate limiting e anycast para dissipar a carga.
TLS / SSL
Protocolo que criptografa a comunicação entre cliente e servidor (HTTPS). SSL é o nome antigo; TLS 1.2/1.3
são as versões modernas. Certificados emitidos por CAs (Let's Encrypt, DigiCert) comprovam identidade do
servidor.
mTLS (Mutual TLS)
TLS em que ambos os lados apresentam certificado — não só o servidor, mas também o cliente.
Padrão para comunicação service-to-service em arquiteturas Zero Trust.
Zero Trust
Modelo de segurança em que nenhuma requisição é confiável por padrão, mesmo vinda de dentro da rede
corporativa. Autenticação e autorização forte em cada chamada. Oposto do modelo "perímetro confiável"
clássico.
OWASP Top 10
Lista atualizada a cada ~3 anos pela OWASP com as 10 vulnerabilidades mais críticas em aplicações web
(Broken Access Control, Injection, Cryptographic Failures, etc.). Referência-padrão para checklist de
segurança.
gRPC
Protocolo RPC binário sobre HTTP/2 criado pelo Google, usando Protocol Buffers para serializar mensagens.
Muito mais rápido que REST/JSON em comunicação interna service-to-service; não é navegador-friendly sem
gateway.
OpenAPI / Swagger
Especificação YAML/JSON que descreve endpoints, parâmetros e schemas de uma API REST de forma
machine-readable. Gera docs interativas (Swagger UI) e SDKs clientes automaticamente.
Webhook Signature
Assinatura HMAC enviada em header (X-Signature) pelo emissor do webhook para o receptor
verificar que a requisição é autêntica. Sem ela, qualquer um pode falsificar eventos no seu endpoint.
Idempotency Key
Chave única enviada pelo cliente (header Idempotency-Key) que garante que operações repetidas
(retries, double-click) produzam o mesmo resultado sem duplicação.
Ex.: usuário clica "Pagar" 3x; o servidor processa só a 1ª e devolve a mesma resposta nas outras 2.
SOLID
Cinco princípios de design OO: Single Responsibility, Open/Closed,
Liskov Substitution, Interface Segregation, Dependency
Inversion. Base de código manutenível e testável em linguagens tipadas.
DRY / KISS / YAGNI
Princípios práticos: DRY (Don't Repeat Yourself) — não duplique lógica.
KISS (Keep It Simple) — prefira solução simples. YAGNI (You Aren't Gonna
Need It) — não antecipe features que "talvez" sejam necessárias.
Design Patterns (Gang of Four)
23 padrões clássicos catalogados pelos "GoF" em 1994, divididos em criacionais (Singleton, Factory),
estruturais (Adapter, Decorator) e comportamentais (Observer, Strategy). Vocabulário universal de
arquitetura OO.
Circuit Breaker
Padrão que detecta falhas repetidas em uma dependência (ex.: serviço externo fora do ar) e para de chamar
por um tempo, devolvendo erro imediato. Evita cascata de timeouts e acelera recuperação.
Retry & Exponential Backoff
Estratégia de tentar novamente uma operação falha com intervalos crescentes (1s, 2s, 4s, 8s…) + jitter
aleatório. Cobre falhas transitórias sem sobrecarregar o serviço que já está sofrendo.
Race Condition / Deadlock / Mutex
Race condition: resultado depende da ordem de execução de threads concorrentes (bug
intermitente). Deadlock: dois processos esperando um ao outro eternamente.
Mutex: primitiva de lock que garante exclusão mútua em acesso a recurso compartilhado.
CDN (Content Delivery Network)
Rede de servidores distribuídos geograficamente que armazenam cópias de assets estáticos (HTML, CSS, JS,
imagens, vídeo) próximas ao usuário final. Reduz latência (origem fica longe; edge fica perto), descarrega o
servidor original e absorve picos de tráfego. Cloudflare, Akamai, Fastly e CloudFront são os principais. Sem
CDN, sites globais ficam lentos para metade do mundo.
Ex.: otimizapro.com serve 80k assets via Cloudflare CDN em 300+ datacenters — TTFB médio
< 50ms em qualquer país.
HTTP Cache (Cache-Control, ETag, TTL)
Mecanismo do protocolo HTTP em que servidor e navegador acordam por quanto tempo um recurso pode ser
reaproveitado sem refetch. Cache-Control: max-age=86400 diz "guarda 1 dia"; ETag é
hash do conteúdo para revalidação condicional (If-None-Match). CDNs também respeitam esses
headers para decidir o que pôr no edge. Header mal configurado = ou cache demais (versão antiga grudada) ou
cache de menos (origem sobrecarregada).
Ex.: Cache-Control: public, max-age=31536000, immutable em
/assets/app-a8b2c.js (com hash no nome) — cacheado para sempre, novo hash quando muda.
Purge de cache
Ação de invalidar o conteúdo armazenado em CDN/edge para forçar nova busca da origem. Granularidade: por URL
específica (cirúrgico), por tag/hostname (grupo), ou purge everything (toda a zona — caro e raro).
Necessário após deploys que alteram HTML/CSS/JS já cacheado, ou quando uma versão errada vazou. Workers e
Pages não purgam automaticamente: é responsabilidade sua.
Ex.: depois de wrangler deploy que alterou index.html, rodar
powershell -File "#Capacidades/Cloudflare/cloudflare.ps1" -Action cache:purge para que
visitantes vejam a nova versão imediatamente.
Cloudflare Queues
Serviço de filas gerenciado da Cloudflare integrado nativamente aos Workers — producer escreve mensagem,
consumer (outro Worker) processa em batch com retry automático e dead-letter queue. Resolve cargas
assíncronas (envio de email em massa, enriquecimento, jobs pesados) sem depender de infra externa tipo SQS
ou RabbitMQ.
Ex.: A.N.A. enfileira leads para enriquecimento em Queue; consumer processa 50 por vez, retry exponencial
em falha, DLQ após 5 tentativas.
Durable Objects
Primitiva da Cloudflare para Workers stateful — cada instância tem armazenamento próprio
(storage transacional) e roda em um único datacenter por vez, garantindo consistência forte. Bom para chats,
contadores globais, locks distribuídos e coordenação em tempo real. É o que falta no modelo serverless puro
(que é stateless).
Ex.: presença em tempo real no CRM (quem está editando qual deal) cabe em 1 Durable Object por workspace
— broadcasts WebSocket via hibernation API, sem servidor sempre ligado.
Cloudflare Vectorize
Banco vetorial gerenciado da Cloudflare integrado aos Workers — armazena embeddings (até 1536 dimensões),
indexa em HNSW e responde queries de similaridade em latência de edge. Alternativa nativa a Pinecone/Qdrant
quando o stack todo já é Cloudflare. Cobra por dimensão × vetor armazenado + queries.
Ex.: RAG do A.N.A. pode migrar embeddings dos 322 artigos do blog para Vectorize — query em < 30ms
direto do Worker, sem hop para serviço externo.
Service Binding (Workers)
Mecanismo de Cloudflare Workers para que um Worker chame outro sem passar pela internet:
invocação direta via runtime, sub-millisecond, sem custo de egress, sem CORS. Configurado em
wrangler.toml. Útil para arquiteturas multi-worker que compartilham infra, mas cria acoplamento
— projetos standalone podem proibir por design.
Ex.: o Worker aprenda poderia consumir leads do CRM via service binding para
otimizapro, mas a regra arquitetural do Glossary System veta isso justamente para mantê-lo
independente.
Cold Start / Warm Start
Cold start: primeira requisição após inatividade, quando o runtime precisa subir o processo
(carregar bundle, instanciar conexões). Warm start: requisições subsequentes, com tudo
pré-aquecido. Cold start crônico mata UX em serverless mal projetado. Cloudflare Workers minimizam isso com
V8 isolates (~5ms); Lambda Node.js pode demorar 200-2000ms.
Ex.: ORMs com engine binário (Prisma legacy) sofrem cold start em Workers; Drizzle (TS puro) é
praticamente zero — razão técnica por trás da escolha do ecossistema.
DNS Records (A, AAAA, CNAME, MX, TXT)
Tipos de registro do DNS: A aponta nome → IPv4; AAAA → IPv6;
CNAME aponta nome → outro nome (alias); MX define servidor de e-mail;
TXT carrega texto livre (SPF, DKIM, verificações de domínio). TTL controla quanto tempo
resolvers cacheiam — TTL alto = propagação lenta de mudanças.
Ex.: nr1.otimizapro.com CNAME → otimiza-nr1.workers.dev (proxiado pela Cloudflare);
_dmarc.otimiza.pro TXT → "v=DMARC1; p=reject; ...".
TLS Certificate (Let's Encrypt, SAN, Wildcard)
Certificado digital que comprova identidade do servidor e habilita HTTPS. Let's Encrypt é a
CA gratuita dominante (renovação automática a cada 90 dias via protocolo ACME).
SAN (Subject Alternative Name) permite múltiplos domínios no mesmo cert;
wildcard
(*.otimiza.pro) cobre todos os subdomínios de um nível. Cert expirado = erro de browser + perda
total de tráfego HTTPS.
Ex.: Cloudflare gerencia cert wildcard automaticamente para zonas proxied — você nunca toca, mas se
desabilitar proxy laranja, precisa cuidar do cert no origin.
SSE (Server-Sent Events)
Protocolo HTTP de streaming unidirecional servidor → cliente, mais simples que WebSocket. Mantém conexão
aberta com Content-Type: text/event-stream; cliente lê chunks via EventSource API
do browser. Suportado nativamente em todos os browsers. Padrão para streaming de tokens de LLM em chat
(Claude/OpenAI usam SSE), notificações server-push e progresso de jobs longos.
Ex.: o chat A.N.A. consome SSE do Worker — a cada token recebido do Claude, faz append no DOM. UX de
"digitando" sem polling nem WebSocket.
N+1 Query Problem
Anti-pattern em que código faz 1 query para buscar N itens e depois 1 query adicional
por item para popular relações — total N+1 queries em vez de 1 join (ou 1
WHERE IN). Killer silencioso de performance: roda em 50ms com 10 itens, em 5s com 1.000.
Ex.: listar 100 leads e pegar nome do segmento de cada um via
leads.find().forEach(l => segments.findById(l.segment_id)) → 101 queries; substituir por
JOIN segments ON segments.id = leads.segment_id → 1 query.
Database Index (B-tree, partial, covering)
Estrutura auxiliar que acelera buscas em colunas — o trade-off é escrita mais lenta + espaço em disco.
B-tree é o default (ordenado, range queries). Partial index indexa só
linhas que satisfazem WHERE (WHERE deleted_at IS NULL — economia massiva).
Covering index inclui todas as colunas que a query lê, evitando salto para a tabela. Saber
qual usar = diferença entre 2ms e 2s.
Ex.: CREATE INDEX idx_leads_score_active ON leads(score DESC) WHERE deleted_at IS NULL —
partial + ordenado, perfeito para "top leads ativos por score".
Transaction (ACID)
Unidade lógica de trabalho no banco que ou aplica todas as mudanças ou
nenhuma (rollback). ACID = Atomicidade (tudo ou nada),
Consistência (regras preservadas), Isolamento (queries concorrentes não
interferem), Durabilidade (commit sobrevive a crash). Sem transação, débito de uma conta
sem crédito na outra é bug à espera de acontecer.
Ex.:
BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance
+ 100 WHERE id = 2; COMMIT;
— se a segunda UPDATE falha, a primeira faz rollback.
OpenTelemetry (OTel)
Padrão open-source unificado para coletar logs, metrics e traces de aplicações — vendor-neutral (você
instrumenta uma vez, exporta para Datadog, Honeycomb, Grafana, Jaeger). Substitui agentes proprietários (New
Relic, AppDynamics) e fragmentação por linguagem. SDK em Node, Python, Go, Java; protocolo de transporte
OTLP.
Ex.: instrumentar Worker com @opentelemetry/sdk-node + exportar OTLP para Honeycomb — vê
trace de "request → handler → DB → LLM call" com tempo em cada span.
Source Map
Arquivo .map gerado pelo bundler que mapeia código minificado em produção → código original
(TS, JSX) para debug. Sem source map, stack trace em prod aponta para linha 1 coluna 47.000 de um bundle
ilegível. Sentry, Datadog e DevTools do browser usam para mostrar erro no código real.
Ex.: wrangler deploy --outdir dist gera dist/worker.js +
dist/worker.js.map — subir o .map para Sentry permite stack trace humano em
erros de prod.
HMR (Hot Module Replacement)
Recurso de dev servers (Vite, Webpack Dev Server, Next.js dev) que substitui módulos individuais em runtime
sem recarregar a página inteira nem perder estado da aplicação. Diferente de "hot reload" simples (que
recarrega): HMR preserva estado React/Vue, scroll, formulários. Tornou dev em SPA tolerável.
Ex.: alterar uma cor no Tailwind em app.tsx durante npm run dev no Vite —
visual atualiza em < 100ms sem perder o login que você estava testando.
OIDC (OpenID Connect)
Camada de autenticação construída sobre OAuth 2.0 (que é autorização). OAuth diz "este
token pode acessar X"; OIDC diz "este usuário é a pessoa Y" via ID Token JWT padronizado com claims
sub, email, name. É o padrão moderno do "Entrar com
Google/Microsoft/GitHub".
Ex.: integrar Microsoft Entra ao Otimizapro Admin — Entra emite ID Token (OIDC) + Access Token (OAuth); a
app valida o ID Token para saber quem é o usuário.
Refresh Token vs Access Token
Access Token: curta duração (15-60 min), enviado em cada requisição autenticada — se vazar,
estrago dura pouco. Refresh Token: longa duração (dias/meses), usado
só para obter novo Access Token quando o atual expira. Refresh fica em armazenamento mais
protegido (HttpOnly cookie), Access em memória.
Ex.: A.N.A. no browser: Access em memória (15 min) → expirou? envia Refresh (HttpOnly cookie) ao
/auth/refresh → recebe novo Access; usuário nunca vê tela de login.
Cookie Attributes (SameSite, HttpOnly, Secure)
Atributos que controlam quando e como cookies são enviados — defesa primária contra CSRF e roubo de sessão
via XSS. HttpOnly: JS não enxerga (defesa XSS). Secure: só envia via
HTTPS. SameSite: Strict (nunca cross-site), Lax (default moderno,
navegação top-level ok), None (cross-site explícito, exige Secure). Cookie de auth
sem HttpOnly + Secure + SameSite=Lax é vulnerabilidade na cara.
Ex.: Set-Cookie: session=abc...; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600 —
defesa básica em qualquer auth com cookie.
Redes Sociais