Investigação de custo no GCP e Billing Guard
Da tarifa que subiu mais de 6.000 vezes até um disjuntor automático para APIs fora de controle.
Meu papel
Conduzi a investigação e escrevi o relatório. O Billing Guard é todo meu, com 15 de 15 commits.
- R$ 128 mil
- por ano de economia projetada
- 2,5x
- de diferença entre lido e cobrado, explicada
- 1/h
- limite de desligamentos automáticos
Problema
Depois de uma mudança de preço do Google, a tarifa de transferência do Cloud Storage de um projeto saiu de centavos para mais de R$ 10 mil por mês. As hipóteses internas não fechavam com os números.
Solução
Cruzei o billing com o INFORMATION_SCHEMA de jobs de vários projetos e cheguei ao culpado, execuções de dbt com 23 modelos em paralelo lendo Parquet externo num bucket multirregião a partir de uma região única. Também expliquei por que o volume cobrado era 2,5 vezes o lido pelo BigQuery, já que a Storage Read API lê row groups inteiros. O time de produto do Google confirmou a explicação.
Destaques
- O Billing Guard, em Go no Cloud Run, recebe anomalias de custo pelo Pub/Sub. Em horário comercial avisa no Discord. Fora dele, confere tráfego ativo no Cloud Monitoring e desliga a API.
- Papéis IAM separados. O serviço só consegue desligar, e só uma pessoa consegue religar.
- Deduplicação e lease no Firestore, circuit breaker de um desligamento por hora, projetos protegidos e lista de serviços permitidos (o GKE nunca é desligado).
Resultado
A correção projeta R$ 128,9 mil por ano de economia, e o Billing Guard cobre todos os projetos da organização.