Idioma

Programação

Migração da Datadog com IA corta custos de banco em 90%

A migração da Datadog com IA levou o Stream Router, o serviço que roteia o pipeline de métricas da empresa, do FoundationDB para o PostgreSQL sem interromper o tráfego ao vivo, escreveu o engenheiro Arnold Wakim em um post que a InfoQ comentou em 10 de julho de 2026. Os engenheiros usaram o Claude e o Cursor método por método, contra testes que falhavam. A empresa diz que as operações mais pesadas caíram de 45 minutos para cerca de um segundo e que os custos do banco caíram 90%, um resultado que dependeu tanto da suíte de testes quanto dos modelos.

Por Mike Mozg5 min de leitura

Por que o Stream Router ficou pequeno para seu banco chave-valor

O problema da Datadog era um serviço de roteamento que virou gargalo. O Stream Router é um plano de controle interno que diz aos produtores onde gravar os dados de métricas e aos consultores onde lê-los, escolhendo o cluster Kafka, o tópico e as partições de cada ponto de dados em uma plataforma que processa mais de cem trilhões de eventos por dia.

Ele nasceu como solução para um problema mais antigo. Em 2016, o roteamento era gerido por um arquivo de configuração de três linhas, que cresceu para milhares de linhas editadas à mão. O Stream Router o substituiu por um serviço gRPC cujo caminho de gravação rodava no FoundationDB, em um modelo chave-valor.

À medida que a tabela de roteamento crescia, operações críticas esbarravam nos limites de tamanho de transação do FoundationDB. As mais exigentes levavam até 45 minutos por causa de milhares de idas e vindas sequenciais. Rotas, fluxos, estratégias de sharding e regras são relacionais por natureza, então o código puxava dezenas de milhares de entradas para os processos dos pods e fazia o papel de um banco relacional dentro do processo.

O que a Datadog mudou no modelo de dados

A solução foi um esquema relacional. Os engenheiros redesenharam o modelo de dados em torno das relações entre essas entidades, para que chaves estrangeiras no PostgreSQL impusessem regras que o código da aplicação reconstruía à mão.

A forte modularidade tornou a troca possível: o novo Stream Router implementou a mesma API no PostgreSQL em vez de no FoundationDB, sem necessidade de mudanças em outros lugares. O trabalho restante era refatorar toda a base de código do modelo antigo para o novo, e foi aí que a equipe trouxe o Claude e o Cursor.

Como o Claude e o Cursor trabalharam método por método

Os modelos trabalharam em um ciclo curto, e não sozinhos. O engenheiro Arnold Wakim descreveu assim.

"Eles não geravam código de forma autônoma: para cada método, fornecíamos a implementação antiga, o novo esquema e um teste que falhava." Arnold Wakim, engenheiro da Datadog

Os modelos produziam uma primeira versão, e os testes decidiam se estava correta. O trabalho seguiu em três fases: o Claude primeiro descreveu a intenção de cada função-chave; depois os engenheiros escreveram prompts focados para corrigir os testes que falhavam, informando o comportamento esperado e o contexto da primeira etapa; e por fim o novo serviço foi para produção em uma configuração blue/green.

Como a equipe manteve seguro o tráfego ao vivo

A segurança em produção veio de rodar os dois sistemas ao mesmo tempo. Duas instâncias independentes do Stream Router, uma apoiada no PostgreSQL e outra no FoundationDB, atendiam às mesmas requisições enquanto feature flags moviam os clientes entre elas. Um serviço validador em cada cluster comparava as respostas de roteamento e alertava a equipe de imediato se divergissem.

Onde os modelos ficaram aquém

Os modelos tinham limites claros, e Wakim os lista. Prompts de nível mais alto funcionaram mal. O Claude escreveu consultas que devolviam resultados corretos, mas faziam muito mais idas e vindas do que o necessário, e otimizações como batching, UNNEST e expressões de tabela comuns exigiram intervenção humana. Depois que os engenheiros escreveram o padrão otimizado, os modelos o repetiram nos métodos seguintes, mas nunca o descobriram sozinhos. O uso de tokens também foi alto, porque a equipe alimentou o ciclo com a saída completa dos testes, e não com trechos reduzidos.

O que a migração entregou

Os resultados medidos são da própria empresa. Operações que levavam 45 minutos caíram para cerca de um segundo, e as latências passaram de centenas de milissegundos para poucos. O armazenamento de dados ficou até 40 vezes menor, o uso de CPU e de memória diminuiu e os custos do banco caíram 90%. A Datadog diz que não teria concluído a implementação no prazo que tinha sem as ferramentas de IA.

O que isso diz às equipes que planejam uma refatoração assistida por IA

Para uma organização de engenharia, a tarefa aqui é uma refatoração grande e repetitiva de código de produção com prazo apertado. A migração da Datadog com IA sugere onde está o valor: os modelos aceleraram a digitação, enquanto a suíte de testes, o projeto modular e o validador lado a lado tornaram a velocidade segura. Wakim conclui que a força da suíte de testes decidiu até onde a equipe podia confiar no código gerado por IA. Uma equipe sem essa suíte receberia o mesmo código mais rápido, e nenhum meio de saber se estava certo.

Perguntas e respostas

Como a Datadog usou o Claude e o Cursor na migração?

Para cada método, os engenheiros deram aos modelos a implementação antiga, o novo esquema e um teste que falhava. Os modelos escreviam uma primeira versão, e os testes mostravam se estava correta.

Que resultados a migração para o PostgreSQL produziu?

A Datadog diz que as operações caíram de 45 minutos para cerca de um segundo, as latências passaram de centenas de milissegundos para poucos, o armazenamento encolheu até 40 vezes e os custos do banco caíram 90%.

O que os modelos de IA não conseguiram fazer?

Escreveram consultas corretas, mas lentas. Batching, UNNEST e expressões de tabela comuns precisaram de engenheiros humanos, e os modelos só reutilizaram esses padrões depois de vê-los.

A visão da MOZGII

Como nós construiríamos

A lição deste caso é que o modelo foi a parte menos incomum. O que permitiu à Datadog confiar em código escrito por máquina foi um teste para cada método, uma interface que não mudava e dois sistemas ao vivo respondendo lado a lado às mesmas requisições. Construiríamos qualquer grande refatoração em torno dessas três coisas antes de escolher um modelo.

Na prática, escreveríamos primeiro os testes que falham, um por método, e os trataríamos como a especificação. O modelo receberia um pacote pequeno e fixo para cada tarefa: o código antigo, o novo esquema e o teste. Um engenheiro revisaria cada mudança aprovada e cuidaria dos caminhos lentos, como as consultas ao banco, em que uma resposta correta ainda pode custar muitas idas e vindas a mais. Reduziríamos a saída dos testes antes de enviá-la ao modelo, já que os logs completos elevaram o uso de tokens aqui.

Isso falharia onde os testes são fracos. Um método com cobertura fraca deixa passar código errado com cara de pronto, e um validador lado a lado só pega o que o tráfego ao vivo por acaso exercita. A única métrica que acompanharíamos é a frequência com que o validador encontra diferença entre o sistema antigo e o novo, por tipo de rota, até ficar em zero por tempo suficiente para desligar o antigo.

Depois, guardaríamos os padrões de consulta escritos à mão em uma biblioteca compartilhada que o modelo lê primeiro, para que a próxima migração comece onde esta terminou.

Fontes

De onde vêm os fatos desta matéria.

  1. 01How Datadog Used Claude and Cursor for Test-Driven Production Migration - InfoQinfoq.com
  2. 02How we migrated a live routing system using AI-assisted refactoring | Datadogsecurity-platformrumcidashboardhost-mapapmsecurity-platformrumcidashboardhost-mapapmsecurity-platformrumcidashboardsecuritydatadoghq.com

Usamos cookies

Coletamos dados de uso anônimos para melhorar o MOZGII e sua experiência. Nenhum dado é coletado sem sua permissão. Política de privacidade · Política de cookies