rollfuse

Rollback Automático de Feature Flag com Dados do New Relic

Como funciona

Um job seu roda a sua query NRQL no New Relic e envia o resultado ao rollfuse, onde um guardrail calcula a média numa janela e aborta o rollout quando ela passa do limite.

O New Relic já avisa quando um deploy está causando problema; é para isso que existe uma condição de alerta. Só que ele não age sobre o aviso. Alguém ainda precisa ver a notificação, achar o rollout responsável e revertê-lo. O rollback automático com dados do New Relic fecha essa distância: o número por trás da sua query NRQL chega a um guardrail do rollfuse, e o guardrail aborta o rollout sozinho quando o número passa de um limite.

O rollfuse não tem integração nativa com o New Relic. Ele não chama a API do New Relic, não lê as suas condições de alerta, e um incidente aberto no New Relic não dispara nada no rollfuse. O rollfuse age sobre valores de métrica que você envia. Esta página mostra como levar esses valores até lá e o que acontece depois.

O que o guardrail faz com a métrica

Um guardrail pertence a um rollout e observa uma definição de métrica. Enquanto o rollout está ativo, o rollfuse calcula de tempos em tempos a média das observações recebidas para essa métrica dentro da janela de avaliação do guardrail e compara essa média com o seu limite. Cada checagem fica registrada com o valor da métrica, o limite e a ação tomada.

A definição de métrica é criada uma vez por projeto, com nome, chave, tipo de agregação e unidade. Depois, criar o guardrail pede quatro campos obrigatórios:

{
  "metric_definition_id": "<id da sua definição de métrica>",
  "comparison_operator": "gt",
  "threshold": 800,
  "evaluation_window_seconds": 600
}

Esse corpo vai para POST /v1/rollouts/{rollout_id}/guardrails. comparison_operator é um de gt, gte, lt ou lte, e a janela precisa ser positiva. Leia como "aborte se a média dos últimos 10 minutos passar de 800", por exemplo uma latência p95 em milissegundos.

Como levar o resultado da NRQL ao rollfuse

A API NerdGraph do New Relic, onde as queries NRQL rodam, recebe um POST em https://api.newrelic.com/graphql com a sua chave de usuário no cabeçalho API-Key (introdução à NerdGraph do New Relic, consultada em 11/10/2026). Um conector do rollfuse só faz GET via HTTPS com o cabeçalho Authorization: Bearer, então ele não consegue chamar a NerdGraph diretamente. Um código pequeno seu fica no meio, e ele pode abastecer o rollfuse de dois jeitos.

Enviando (push). Um job agendado roda a sua query NRQL e envia cada resultado ao rollfuse:

{
  "observations": [
    { "value": 742, "occurred_at": "2026-10-11T12:00:00Z" },
    { "value": 768, "occurred_at": "2026-10-11T12:01:00Z" }
  ]
}

Esse corpo vai para POST /v1/environments/{environment_id}/metric-definitions/{metric_definition_id}/observations, autenticado com uma Service Credential daquele ambiente que tenha o escopo metrics:write. value e occurred_at são obrigatórios em cada observação. Se qualquer observação do lote estiver malformada, o lote inteiro é recusado e nada é salvo.

Buscando (pull). Um endpoint HTTPS pequeno seu roda a query e devolve os valores em JSON, aceitando um segredo via Bearer. Um conector do rollfuse consulta esse endpoint de forma agendada (ou sob demanda) e registra cada item como uma observação. O tutorial de conectores mostra como testar o mapeamento, criar o conector e forçar uma sincronização.

Nos dois casos, a chave do New Relic fica na sua infraestrutura.

O que reverte de fato

Uma violação não dispara um novo deploy. O rollfuse aborta o rollout pelo mesmo caminho do abort manual, e a flag volta a servir a variação padrão para 100% daquele ambiente. O código que causa a regressão continua no ar; ele só para de receber tráfego enquanto alguém investiga, com a avaliação registrada do guardrail mostrando o valor e o limite que causaram o abort.

Limites que vale saber antes de configurar

  • O limite mora no rollfuse. A sua condição de alerta NRQL e o guardrail são duas definições separadas. Se ajustar uma, ajuste a outra.
  • Sem dado, sem abort. Se nenhuma observação chegar dentro da janela, a checagem fica registrada como dado insuficiente e o rollout não é abortado. Dá para configurar o guardrail para pausar o rollout depois de um tempo sem dados (pause_after_uncertain_seconds).
  • Guardrails existem em todos os planos, com um limite de quantos cada plano permite. No Growth e no Enterprise, são ilimitados.

O seu alerta do New Relic continua avisando as pessoas como hoje. O guardrail é quem age sobre o mesmo número. Para testar num rollout de verdade, comece pelo tutorial de rollback automático.