História de terror na fatura
US$ 30.356 em 72 horas: uma linha que lia uma coleção inteira do Firestore
21 de outubro de 2026 · 3 min de leitura
Uma campanha viral e uma página que carregava todos os pagamentos a cada visita: bilhões de leituras no Firestore antes que alguém percebesse.
Recontado a partir de HackerNoon, por Nicolas Contreras V, July 23, 2018. Resumo com nossas próprias palavras; todos os números são da fonte.
O que aconteceu
A Vaki, uma plataforma colombiana de financiamento coletivo, hospedou uma campanha política que viralizou. O tráfego era a boa notícia. A má notícia era uma linha no web app: uma chamada que carregava a coleção inteira de pagamentos toda vez que alguém abria uma página, para calcular totais que já estavam armazenados em cada campanha.
Com a campanha viralizando, cada visita multiplicava essa leitura. O autor estima mais de 40 bilhões de requisições ao Firestore e, nas palavras dele: "we had spent $30,356.56 USD in just 72 hours!" ("tínhamos gastado US$ 30.356,56 em apenas 72 horas!")
Como terminou
A equipe corrigiu o código. O Google permitiu que eles se candidatassem a um crédito para startups, e o crédito pagou a fatura. O artigo não descreve um reembolso.
O que teria impedido
- Ler apenas o necessário. Armazenar e ler os totais, não a coleção inteira, é a correção de verdade. O Firebase lista "forgetting to add a limit to a database query with millions of results" ("esquecer de adicionar um limite a uma consulta ao banco de dados com milhões de resultados") entre as causas comuns de faturas inesperadas.
- Perceber a taxa de leitura. Leituras do Firestore saltando para muitas vezes o nível normal por hora ficam visíveis no Cloud Monitoring em minutos. Uma regra de pico nas leituras de documentos teria sinalizado o problema no primeiro dia, não depois de 72 horas.
- Degradar em vez de pagar. Um Soft Kill que mudasse as páginas da campanha para um modo em cache, com poucas leituras, teria mantido a campanha no ar enquanto o bug era encontrado.
