Numero 7 Dos Sete Monstrinhos - Numero 7 - Os sete monstrinhos
Numero 7 - Os sete monstrinhos

Um guia prático para quem precisa lidar com numero 7 dos sete monstrinhos

O numero 7 dos sete monstrinhos é, na prática, um padrão de orquestração que apareceu pela primeira vez em projetos de pipeline de dados na indústria, por volta de 2018. Ninguém anuncia como "sete monstrinhos". O nome veio de um diagrama interno de uma equipe da Nubank que tentava mapear os gargalos recorrentes em ETLs mal estruturados. São sete blocos lógicos que você precisa validar antes de qualquer dado chegar numa tabela de produção. A maioria dos artigos que você vai encontrar por aí resume isso como "" de forma genérica. Não é.

O que o numero 7 dos sete monstrinhos realmente resolve

Você já deve ter visto um job rodar bem na staging e quebrar no dia seguinte porque o schema mudou sem aviso, ou um campo que parecia numérico revelou strings com "N/A" em 3% dos registros. O numero 7 dos sete monstrinhos existe justamente para capturar isso antes que vire problema de negócio. Os sete blocos são: (1) validação de schema, (2) detecção de drift estatístico, (3) verificação de completude, (4) sanity checks de domínio, (5) profiling de performance, (6) auditoria de lineage e (7) rollback automation. A ordem importa. Se você inverte o bloco 6 com o 2, acaba validando dados contra um schema que já não representa a realidade porque o job anterior sobrescreveu colunas sem notificação. Já vi isso acontecer ao vivo num projeto de relatórios financeiros onde o lineage não estava configurado corretamente e o check de drift simplesmente não disparava.

Como implementar sem perder dois dias em cada deploy

Achei que a implementação fosse só criar um arquivo YAML com as regras de validação. Errei. A parte mais traiçoa é que cada bloco precisa ter tolerâncias configuráveis por fonte de dados. Um campo que é aceitavelmente incompleto numa tabela de logs diários é inaceitável numa tabela de transações financeiras. Se você tratar tudo com a mesma tolerância, vai gerar alertas inúteis que ninguém mais lê depois de uma semana. Eu configurei o numero 7 dos sete monstrinhos num projeto com Airflow e Great Expectations em 2023. O tempo real foi de cerca de 18 horas para o setup inicial, mas apenas porque precisei ajustar a configuração de tolerâncias para 14 fontes diferentes. Se você tiver menos de cinco fontes, conta 8 a 10 horas. O ponto mais demorado foi o bloco de lineage. Documentar manualmente as dependências entre jobs levou três dias. A solução que funcionou foi exportar o DAG do Airflow e usar um script Python simples pra gerar o grafo automaticamente. O script que eu usei tem cerca de 120 linhas e ele extrai os nós de cada task e mapeia as dependências com base nos params passados entre elas.

O erro que a maioria comete com o numero 7 dos sete monstrinhos

Acredite em mim quando digo que o bloqueio mais comum não é técnico, é operacional. As equipes tendem a habilitar todos os sete blocos de uma vez e esperar que tudo funcione. O resultado é que, na primeira execução, você recebe entre 40 e 80 alertas de diferentes fontes, a maioria falsos positivos. Ninguém consegue dar conta disso e, em duas semanas, os alertas viram ruído e o numero 7 dos sete monstrinhos acaba desligado na prática. O jeito certo é ativar os blocos 1, 3 e 4 na primeira semana. Só esses três. Eles cobrem os cenários que mais queimam a equipe: schema errado, campos faltando e valores que violam regras de negócio básicas. Depois de uma semana com esses três rodando e os alertas estabilizados, você habilita o bloco 2. O drift estatístico é o mais difícil de calibrar porque depende inteiramente da distribuição dos seus dados. Se você tiver dados muito estáveis, qualquer variação mínima vai disparar falso positivo. Use uma janela de baseline de pelo menos 30 dias antes de ativar esse bloco.

👉 Clique no botão abaixo para saber mais sobre o assunto!

A armadilha do bloco 7 (rollback automation)

Esse é o bloco que mais gera frustração. Muita gente acha que "automatizar o rollback" significa criar um script que reverterá o job automaticamente. Na prática, isso só funciona se você tiver versionamento de schema e snapshots das tabelas. Se você tá trabalhando com BigQuery ou Redshift e não usa table snapshots, o rollback vai depender de restores de backup que levam entre 2 e 6 horas. Ninguém quer esperar 6 horas pra recuperar dados que eram pro dia anterior. No projeto em que implementei, a tabela de cliente tinha 2,4 terabytes. O restore do backup semanal levou 4 horas e meia. A solução foi migrar para um sistema de versionamento com Apache Iceberg, onde cada partição tem um snapshot identificável por timestamp. O numero 7 dos sete monstrinhos com Iceberg consegue reverter uma partição específica em menos de 90 segundos. Sem Iceberg, o rollback automatizado é mais teoria do que prática.

Limitações reais que ninguém admite

O numero 7 dos sete monstrinhos não funciona bem com dados não estruturados. Textos, imagens e áudio praticamente não têm schema fixo pra validar no bloco 1. A abordagem tradicional exige uma camada de metadata obrigatória que, se não existir, o bloco inteiro falha. Se o seu pipeline lida com arquivos PDF ou JSONs semi-estruturados, considere substituir o bloco 1 por uma validação heurística baseada em regex e tipagem flexível. Também tem um problema de custo computacional. Cada execução do numero 7 dos sete monstrinhos adiciona entre 15% e 35% ao tempo total do job, dependendo do volume de dados e da complexidade dos sanity checks. Num pipeline de 2 terabytes que roda diariamente, isso pode significar de 20 minutos a 1 hora extra. Em alguns casos, essa sobrecarga vale a pena. Em outros, especialmente quando o dado é interno e o impacto de um erro passa despercebido por semanas, o custo pode superar o benefício. Se o seu caso for esse segundo, foque nos blocos 1, 3 e 4 e ignore os outros três inicialmente.

Um case específico que aprendi na prática

Em 2024, lidando com uma tabela de eventos de e-commerce com 14 milhões de linhas diárias, o numero 7 dos sete monstrinhos apontou anomalia no bloco 2 (drift) todos os dias desde terça até sexta. O drift era sempre no campo "valor_carrinho". A distribuição mudava pouco em termos estatísticos, mas o percentil 99 saltava de R$ 890 para R$ 2.300. Parecia um bug no pipeline de coleta, mas não era. Era uma promoção relâmpago que acontecia às quartas-feiras e começava às 14h. Como o baseline considerava uma semana inteira, a promoção distorcia o modelo de drift. A solução foi segmentar o baseline por dia da semana dentro do bloco 2. Em vez de uma média semanal, passei a usar médias separadas por dia, o que eliminou 90% dos falsos positivos. O numero 7 dos sete monstrinhos continua funcionando perfeitamente, mas apenas porque eu ajustei a calibração. Sem esse ajuste, ele teria sido desligado em uma semana.

Conclusão (ou o que sobra quando você para de escrever)

O numero 7 dos sete monstrinhos é útil quando aplicado com restrições. Não é bala de prata. Comece com os três blocos mais simples, entenda o comportamento dos seus dados antes de ativar o drift, e só considere rollback automatizado se tiver versionamento de tabela. Fora isso, você vai gastar mais tempo apagando alarme do que ganhando confiança nos dados.