Capa do Ebook gratuito Performance Front-End: Otimizando Core Web Vitals sem Mistério

Performance Front-End: Otimizando Core Web Vitals sem Mistério

Novo curso

19 páginas

Métricas, metas e acompanhamento contínuo: baseline, regressões e evolução

Capítulo 18

Tempo estimado de leitura: 13 minutos

+ Exercício

Por que métricas e metas são diferentes de “otimizar uma vez”

Performance front-end não é um projeto com fim definido: é um sistema que precisa de acompanhamento contínuo. Mudanças de produto, novos componentes, testes A/B, bibliotecas, tags de marketing e até alterações de infraestrutura podem melhorar ou piorar a experiência sem que ninguém perceba imediatamente. Por isso, este capítulo foca em como transformar performance em um processo: definir um baseline (linha de base), estabelecer metas objetivas, detectar regressões cedo e acompanhar evolução com disciplina.

O objetivo aqui não é repetir como medir Core Web Vitals ou como diagnosticar gargalos específicos. A proposta é organizar o “ciclo de vida” das métricas: o que acompanhar, como definir limites, como automatizar alertas e como criar um fluxo de decisão quando algo piora.

Conceitos essenciais: baseline, metas, regressão e evolução

Baseline (linha de base)

Baseline é o retrato confiável do desempenho atual, medido de forma consistente e representativa. Ele serve como referência para responder perguntas como: “estamos melhorando?”, “o que mudou após o deploy?” e “qual é o impacto de uma nova feature?”. Um baseline útil tem três características:

  • Representatividade: cobre páginas e fluxos que importam (ex.: home, listagem, detalhe, checkout, login), não apenas uma URL isolada.

  • Segmentação: separa por dispositivo (mobile/desktop), tipo de rede e, quando fizer sentido, por região. Um único número médio pode esconder problemas graves.

    Continue em nosso aplicativo

    Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

    ou continue lendo abaixo...
    Download App

    Baixar o aplicativo

  • Estabilidade: é calculado com janela de tempo e amostragem suficientes para reduzir ruído (variações naturais do tráfego e do ambiente).

Metas (targets) e orçamentos (budgets)

Metas são valores desejados para métricas de experiência (por exemplo, percentis de LCP/INP/CLS). Orçamentos são limites operacionais para “insumos” que influenciam performance, como peso total de JS, quantidade de requests, tamanho de fontes, número de third-parties, ou tempo máximo de execução de scripts em uma rota.

Uma forma prática de pensar: metas dizem “como o usuário deve sentir”; orçamentos dizem “o que o time pode gastar” para chegar lá.

Regressão

Regressão é uma piora significativa em relação ao baseline, detectada após uma mudança (deploy, feature flag, alteração de dependência, nova campanha). O ponto crítico é “significativa”: pequenas oscilações são normais. Regressão é quando a piora ultrapassa um limiar definido e exige ação.

Evolução

Evolução é a melhoria sustentada ao longo do tempo, comprovada por tendências e não por um “pico” pontual. Ela aparece quando o baseline é atualizado de forma controlada e quando as metas são revisadas conforme o produto amadurece.

Escolhendo o conjunto de métricas: experiência, saúde técnica e negócio

Um acompanhamento robusto combina três camadas. Isso evita o erro comum de olhar apenas para uma métrica e perder a causa ou o impacto.

1) Métricas de experiência (o que o usuário percebe)

  • Core Web Vitals acompanhadas por percentis (p75 é um padrão comum para experiência “típica” em campo).

  • Métricas complementares úteis para contexto, como TTFB e FCP, desde que não virem “alvos” isolados sem relação com a experiência.

2) Métricas de saúde técnica (o que o sistema está fazendo)

  • Erros de JavaScript (taxa e top erros por rota). Erros podem degradar interações e gerar retrabalho de renderização.

  • Uso de CPU e tempo de execução em rotas críticas (por exemplo, tempo total de execução de scripts por navegação).

  • Indicadores de payload: tamanho total transferido, tamanho de JS/CSS por rota, número de requests, quantidade de third-parties.

3) Métricas de negócio (por que isso importa)

  • Conversão por segmento (mobile vs desktop, rede lenta vs rápida).

  • Engajamento (bounce, páginas por sessão, tempo até ação-chave).

  • Receita e funil em fluxos críticos (checkout, cadastro, lead).

Essa combinação permite responder: “piorou a experiência”, “por qual causa técnica” e “qual impacto no funil”.

Definindo baseline na prática (passo a passo)

Passo 1: selecione páginas e fluxos que representem o produto

Crie uma lista curta (comece com 5 a 10) de rotas críticas e rotas de alto tráfego. Evite tentar cobrir tudo de início. Um exemplo de recorte:

  • Home

  • Listagem (categoria ou busca)

  • Detalhe (produto/artigo)

  • Login/cadastro

  • Checkout (ou formulário principal)

Passo 2: defina segmentos fixos para comparação

Sem segmentação, o baseline muda “sozinho” quando o mix de tráfego muda. Defina segmentos mínimos:

  • Mobile e desktop

  • Rede (quando disponível): 4G/3G ou “rápida/lenta”

  • Região (se o produto for sensível a latência)

Passo 3: escolha a janela de tempo do baseline

Para reduzir ruído, use uma janela que capture variações de dia da semana e campanhas. Uma prática comum:

  • Baseline inicial: 14 a 28 dias (se houver tráfego suficiente).

  • Acompanhamento contínuo: janelas móveis de 7 e 28 dias para ver curto e médio prazo.

Passo 4: defina quais estatísticas serão “oficiais”

Evite médias simples para métricas de experiência. Prefira percentis e distribuição. Um conjunto prático:

  • p75 por rota e por segmento (indicador principal)

  • p95 para capturar cauda longa (útil para detectar problemas em dispositivos mais fracos)

  • Distribuição por faixas (bom/precisa melhorar/ruim) para comunicação com stakeholders

Passo 5: documente o baseline e “congele” a referência

Registre os valores do baseline em um local versionado (repositório, wiki interna ou dashboard com anotação). Inclua:

  • Data de início/fim da janela

  • Rotas e segmentos

  • Valores p75/p95

  • Observações de contexto (ex.: campanha grande, mudança de CDN, migração)

Isso evita discussões do tipo “mas antes era melhor” sem evidência comparável.

Como definir metas realistas e acionáveis

Metas por rota, não apenas globais

Uma meta única para o site inteiro costuma falhar porque rotas têm complexidades diferentes. Defina metas por grupo:

  • Rotas de entrada (home, landing): metas mais agressivas, pois impactam aquisição.

  • Rotas de navegação (listagem, busca): foco em consistência e interações rápidas.

  • Rotas transacionais (checkout): tolerância menor a instabilidade e travamentos; metas rígidas para interações.

Metas como “degraus” (milestones)

Se o baseline atual está distante do ideal, metas muito ambiciosas viram frustração. Use degraus trimestrais ou por ciclo de release. Exemplo de estrutura:

  • Meta 1: reduzir p75 em X% sem mudanças estruturais grandes

  • Meta 2: atingir faixa “boa” em rotas críticas após refactors planejados

  • Meta 3: consolidar e evitar regressões com budgets e gates

Metas com tolerância e critérios de sucesso

Defina o que é “passou” e o que é “alerta”. Exemplo de critério:

  • Sucesso: p75 melhora ou se mantém dentro de ±2% do baseline

  • Alerta: piora entre 2% e 5% por 2 dias consecutivos

  • Regressão: piora > 5% ou mudança de faixa (bom → precisa melhorar) em rota crítica

Os percentuais variam conforme o ruído do seu produto. O importante é existir um acordo explícito.

Performance budgets: transformando metas em limites de engenharia

Budgets evitam que o produto “gaste” performance aos poucos. Eles funcionam bem quando são simples, mensuráveis e aplicados no pipeline.

Exemplos de budgets úteis

  • JS por rota: limite de KB transferidos e/ou KB comprimidos (gzip/brotli) para o bundle inicial.

  • Número de requests críticos: limite para recursos necessários antes da primeira interação relevante.

  • Third-parties: limite de quantidade e lista permitida (allowlist) por rota.

  • Tempo de execução: limite de tempo total de tasks no carregamento (quando você tiver esse dado em laboratório).

Budgets por “camada”

Uma prática que reduz conflitos é separar budgets por responsabilidade:

  • Produto: número de componentes acima da dobra, widgets opcionais, variações de layout

  • Front-end: tamanho de bundles, dependências, CSS/JS por rota

  • Marketing/Analytics: tags, pixels, scripts externos e suas condições de carregamento

Isso facilita negociação: em vez de “performance piorou”, você aponta qual budget foi ultrapassado e por quem.

Detecção de regressões: do deploy ao alerta

Regressão precisa ser detectada cedo, idealmente antes de atingir grande parte dos usuários. Para isso, combine sinais de laboratório (pré-release) e de campo (pós-release).

Estratégia 1: gates no CI para impedir regressões óbvias

Use testes automatizados para bloquear PRs ou builds que ultrapassem budgets. O gate não precisa ser perfeito; ele precisa ser consistente e rápido.

Exemplo de configuração conceitual de budgets em JSON (o formato exato depende da ferramenta):

{  "budgets": [    { "path": "/", "resourceSizes": { "script": 180, "stylesheet": 60 }, "requests": 60 },    { "path": "/produto/*", "resourceSizes": { "script": 220 }, "requests": 75 }  ],  "thresholds": { "warn": 0.03, "fail": 0.07 }}

Interpretação: para cada rota, há limites de tamanho por tipo de recurso e número de requests. Além disso, define-se tolerância de variação (warn/fail) para evitar falhas por ruído pequeno.

Estratégia 2: comparação por commit/PR com “diff” de performance

Além de um “pass/fail”, é útil mostrar o delta: quanto aumentou o JS, quantos requests a mais, qual rota foi impactada. Isso reduz o tempo de investigação.

Checklist do que um bom relatório de PR deve trazer:

  • Rotas testadas e ambiente

  • Delta de tamanho de bundles por rota

  • Delta de requests e recursos críticos

  • Top mudanças (ex.: nova dependência, novo chunk)

Estratégia 3: monitoramento pós-deploy com alertas por rota

Em produção, configure alertas para mudanças relevantes em percentis e distribuição. Boas práticas:

  • Alertas por segmento: regressões podem afetar apenas mobile ou rede lenta.

  • Alertas com janela mínima: evite alertar com poucas amostras; defina um mínimo de sessões/visitas.

  • Alertas com deduplicação: um incidente deve gerar um alerta, não centenas.

Um modelo simples de regra: “se p75 piorar mais que 5% em relação à média dos últimos 14 dias, por 2 horas, em rota crítica e com pelo menos N amostras, abrir incidente”.

Investigação rápida de regressões: playbook operacional

Quando um alerta dispara, o tempo até identificar a causa é o que separa um processo saudável de um caos recorrente. Um playbook reduz improviso.

Passo a passo do playbook

1) Confirme se é regressão real (e não ruído)

  • Verifique se há amostra suficiente no segmento afetado.

  • Compare com a janela anterior equivalente (ex.: mesmo dia da semana).

  • Veja se a regressão aparece em mais de uma rota ou apenas em uma.

2) Correlacione com mudanças recentes

  • Liste deploys, rollouts de feature flags e mudanças de configuração nas últimas horas/dias.

  • Verifique se houve inclusão/alteração de third-party, tags ou experimentos.

  • Considere mudanças de tráfego (campanhas) que podem alterar o mix de dispositivos.

3) Isole o escopo

  • É apenas mobile? Apenas uma região? Apenas usuários logados? Apenas uma rota?

  • O problema ocorre em navegação inicial, transições internas, ou ambos?

4) Escolha a ação: rollback, mitigação ou correção

  • Rollback: quando a regressão é grande e claramente ligada ao último deploy.

  • Mitigação: desativar feature flag, reduzir rollout, remover temporariamente third-party.

  • Correção: quando há causa conhecida e patch rápido (ex.: ajuste de carregamento condicional).

5) Registre o incidente com aprendizado

Registre: causa raiz, impacto, tempo de detecção, tempo de mitigação e qual budget/controle falhou. Isso alimenta melhorias no processo (novos gates, budgets mais adequados, testes adicionais).

Acompanhamento de evolução: dashboards, cadência e anotações

Dashboards que ajudam (e os que atrapalham)

Dashboards eficazes são poucos e orientados a decisão. Um conjunto enxuto:

  • Visão executiva: distribuição (bom/precisa melhorar/ruim) e tendência 28 dias para rotas críticas.

  • Visão de engenharia: p75/p95 por rota e segmento, com breakdown por versão/release quando possível.

  • Visão de budgets: evolução de peso de JS/CSS, requests e third-parties por rota.

Evite dashboards com dezenas de gráficos sem dono. Se ninguém toma decisão a partir de um gráfico, ele vira ruído.

Cadência de revisão

  • Diária (rápida): checar alertas e regressões pós-deploy em rotas críticas.

  • Semanal: revisar tendências, identificar rotas que pioraram gradualmente e priorizar correções.

  • Mensal/trimestral: revisar metas, atualizar baseline e renegociar budgets conforme roadmap.

Anotações (annotations) para explicar mudanças

Uma prática simples que aumenta muito a clareza: anotar no dashboard eventos relevantes, como:

  • Deploy grande

  • Início de campanha

  • Ativação de experimento

  • Entrada de novo third-party

  • Migração de infraestrutura

Sem anotações, o time perde tempo tentando “adivinhar” por que a curva mudou.

Atualizando o baseline sem mascarar problemas

Baseline não é fixo para sempre. Se o produto melhora de forma sustentada, faz sentido atualizar a referência. O risco é atualizar cedo demais e “normalizar” uma regressão.

Regras práticas para atualizar baseline

  • Atualize apenas após um período estável (ex.: 2 a 4 semanas) sem incidentes relevantes.

  • Atualize por rota e segmento, não globalmente.

  • Registre a mudança e o motivo (ex.: “refactor de rota X reduziu p75 em 12%”).

Baseline duplo: curto e longo prazo

Para evitar cegueira, mantenha duas referências:

  • Baseline curto (ex.: 14 dias): sensível a mudanças recentes e útil para regressões.

  • Baseline longo (ex.: 90 dias): mostra evolução real e evita que melhorias pontuais pareçam tendência.

Integração com o fluxo de desenvolvimento: Definition of Done e ownership

Performance como critério de entrega

Para não depender de “boa vontade”, inclua critérios objetivos no fluxo:

  • Definition of Done para features em rotas críticas: não ultrapassar budgets; não piorar métricas além da tolerância; justificar trade-offs quando houver.

  • Checklist de PR: impacto em bundles, inclusão de dependências, inclusão de third-party, mudanças de carregamento.

Ownership: quem responde por qual métrica

Defina responsáveis por áreas:

  • Um dono por rota/fluxo crítico (produto + engenharia)

  • Um dono por budgets (front-end platform ou guilda)

  • Um ponto focal para third-parties (marketing/analytics + engenharia)

Sem ownership, alertas viram “problema de todo mundo” e acabam sendo de ninguém.

Exemplo prático: montando um sistema mínimo de acompanhamento em 1 semana

Dia 1: recorte e baseline inicial

  • Escolha 5 rotas críticas e 2 segmentos (mobile/desktop).

  • Defina janela de 14 dias para baseline inicial.

  • Registre p75/p95 e distribuição por rota.

Dia 2: metas e tolerâncias

  • Defina metas por rota (degrau de melhoria) e tolerâncias de regressão.

  • Escreva critérios de alerta e incidente.

Dia 3: budgets simples

  • Defina budgets de JS por rota e limite de third-parties.

  • Crie allowlist de scripts externos permitidos.

Dia 4: gate no CI

  • Adicione verificação automática de budgets no pipeline.

  • Configure saída com “diff” (delta) para facilitar revisão em PR.

Dia 5: dashboard enxuto com anotações

  • Monte 3 visões: executiva, engenharia e budgets.

  • Habilite anotações de deploy e eventos.

Dia 6: alertas pós-deploy

  • Configure alertas por rota e segmento com mínimo de amostras.

  • Defina canal e responsável de triagem.

Dia 7: playbook e rotina

  • Documente o playbook de regressão (confirmar, correlacionar, isolar, agir, registrar).

  • Agende revisão semanal de tendências e mensal de metas/baseline.

Agora responda o exercício sobre o conteúdo:

Qual combinação descreve corretamente a diferença entre baseline, metas e orçamentos em um processo contínuo de performance?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Baseline é a linha de base representativa e estável para comparar mudanças. Metas definem o nível desejado de experiência (ex.: percentis). Orçamentos impõem limites operacionais (ex.: peso de JS, requests, third-parties) para viabilizar as metas.

Próximo capitúlo

Checklist final de implementação e validação antes de publicar

Arrow Right Icon
Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.