«Este mês gastámos mais 20 % na nuvem.» Dito assim, ninguém sabe se é uma má notícia. Se os pedidos cresceram 40 %, é uma melhoria. Se não cresceram, é um problema. E nos dois casos falta a segunda pergunta: que equipa ou que produto ficou com esse dinheiro? A fatura cloud não responde a nenhuma das duas. Neste artigo mostramos como o AAA Sentinel responde a ambas, com um exemplo completo em AWS, Azure e Google Cloud.
As duas perguntas a que a fatura não responde
A fatura de uma nuvem está organizada por serviço: tanto de computação, tanto de armazenamento, tanto de base de dados. Serve para pagar, mas não para decidir. Para decidir são precisas duas coisas que não vêm nela:
- A quem pertence cada euro: que centro de custo, equipa ou produto o gastou. Sem isto não há responsáveis, apenas um valor comum que ninguém sente como seu.
- O que conseguiu com esse gasto: quanto custa na nuvem cada pedido, cada cliente ou cada transação. Sem isto não se distingue crescer de desperdiçar.
O custo unitário é a métrica que o negócio entende. «A nuvem custa 0,10 US$ por pedido» pode comparar-se com a margem de um pedido; «a nuvem custa 12.000 US$ por mês» não.
O que ganha com isto
Com a repartição e o custo unitário a funcionar, a conversa sobre a nuvem muda:
- Cada equipa vê a sua parte da fatura e responde por ela, em vez de discutir um total.
- Sabe se o gasto cresce mais depressa do que o negócio: se o custo por pedido sobe, algo ficou menos eficiente mesmo que a fatura pareça razoável.
- Pode definir preços com dados: conhece o custo de servir um cliente antes de decidir quanto lhe cobrar.
- Vê quanto gasto não tem dono, que é por onde costuma começar a poupança.
- Tem tudo isto para todas as suas nuvens num só sítio, com o mesmo critério de repartição.
Como o AAA Sentinel resolve: três peças
A funcionalidade faz parte do plano Business e assenta em três peças que se configuram uma vez:
- Ingestão FOCUS: cada nuvem exporta a sua fatura detalhada em FOCUS, o formato aberto comum a AWS, Azure e Google Cloud. O AAA Sentinel lê-a todos os dias e processa o último mês fechado. Configura-se em cada conta, em Minhas contas cloud → Ingestão FOCUS, e a própria página traz um guia passo a passo para cada nuvem.
- Repartição de custos por etiqueta: escolhe as chaves pelas quais quer ver a fatura desagregada (por exemplo, centro_de_custo) e acrescenta regras para cobrir o que não está etiquetado. Está em Configurações da organização → Custos.
- Métricas de negócio: declara a sua unidade (pedidos, clientes ativos, transações) e indica quantas houve em cada mês, à mão ou pela API. A plataforma divide o custo por essas unidades.
O resultado vê-se em Relatórios → Custo unitário: o custo por unidade do mês, a desagregação por centro de custo e a evolução dos últimos meses.
Etiquetas reais e regras virtuais
O ideal é que cada recurso tenha a sua etiqueta na nuvem, mas na prática fica sempre uma parte por etiquetar. Em vez de o obrigar a etiquetar tudo antes de ver um resultado, o AAA Sentinel deixa-o cobrir a falha com regras de etiquetagem virtual: «se o serviço for S3, atribui a dados», «se o nome do recurso começar por payments-, atribui a pagamentos». As regras não alteram nada na sua nuvem e seguem três princípios simples:
- A etiqueta real ganha sempre à regra. Uma regra nunca se sobrepõe ao que a sua equipa etiquetou de propósito.
- Se duas regras atribuírem a mesma chave, ganha a primeira da lista.
- O que não tem etiqueta nem regra fica como «não atribuído». Nunca se reparte a olho: ver quanto fica sem dono diz-lhe onde etiquetar ou que regra criar.
Um atalho que funcionou connosco: se cada produto vive na sua própria região ou subscrição, uma regra por região ou por subconta reparte quase toda a fatura sem etiquetar um único recurso. Numa conta real com dois produtos, duas regras deixaram atribuídos 83 % do gasto; o resto eram impostos, que é correto não repartir.
Caso prático: a ACME em três nuvens
A ACME vende pela internet. Tem a loja na AWS, a plataforma de dados no Azure e a analítica no Google Cloud. Quer saber quanto lhe custa cada pedido e quanto gasta cada centro de custo: loja, pagamentos e dados. Em setembro teve 9.900 pedidos. Esta é a sua fatura do mês:
ACME · fatura de setembro por nuvem
- AWS (loja e pagamentos)
- 990 USD
- Azure (plataforma de dados)
- 400 EUR
- Google Cloud (analítica)
- 95 EUR
Passo 1: ligar a fatura detalhada de cada nuvem
Cada nuvem tem a sua forma de exportar FOCUS e as suas condições. Isto é o que há a fazer em cada uma e o que convém saber antes de começar:
- AWS: ative a etiqueta em Billing → Cost allocation tags (sem a ativar, a AWS não a inclui na exportação, e pode demorar até 24 horas a aparecer) e crie uma exportação FOCUS 1.0 em CSV em Data Exports. A exportação só escreve a partir do dia em que é criada, pelo que o primeiro mês completo chega no fecho do mês em curso.
- Azure: crie no Cost Management uma exportação do tipo «Cost and usage details (FOCUS)» e dê à ligação a função Storage Blob Data Reader sobre a conta de armazenamento. As etiquetas chegam sozinhas e, com a herança de etiquetas, basta etiquetar o grupo de recursos. O Azure permite exportar meses passados, por isso pode ter resultados no primeiro dia. Só está disponível para contratos EA, MCA ou de parceiro.
- Google Cloud: ative a exportação FOCUS para o BigQuery e dê à conta de serviço da ligação permissão de leitura sobre o dataset. Com um dataset multirregião, a Google preenche desde o início do mês anterior.
Uma diferença importante: a fatura do Google Cloud chega agregada do BigQuery, por isso soma ao custo unitário total, mas não entra na repartição por etiquetas nem se lhe aplicam regras. AWS e Azure são repartidos.
Passo 2: definir a repartição uma só vez
A repartição configura-se ao nível da organização e vale para todas as contas de uma vez. A ACME usa uma única chave, centro_de_custo, com os mesmos valores em todas as suas nuvens, e três regras para o que não está etiquetado:
AAA Sentinel · Repartição de custos por etiqueta
- Chave de repartição
- centro_de_custo
- Regra 1 → pagamentos
- Nome de recurso · começa por · payments-
- Regra 2 → dados
- Serviço · é igual a · Amazon Simple Storage Service
- Regra 3 → dados
- Subconta · é igual a · (id da subscrição de dados do Azure)
- Use a mesma chave e os mesmos valores em todas as nuvens. Se numa escrever «Dados» e noutra «dados-eu», o relatório trata-os como centros de custo diferentes.
- As regras aplicam-se a todas as contas, mas os nomes de serviço são diferentes em cada fornecedor: uma regra por serviço da AWS não afeta o Azure. Para repartir o Azure sem etiquetar, a regra por subconta (a subscrição) é a mais prática.
Passo 3: o que fica em cada centro de custo
Ao processar setembro, o AAA Sentinel aplica primeiro as etiquetas reais e depois as regras. Este é o resultado na conta AWS, recurso a recurso:
AWS · 990 USD repartidos
- web-01 (300 USD) · etiqueta real loja
- loja
- cdn-loja (150 USD) · etiqueta real loja
- loja
- orders-db (240 USD) · etiqueta real pagamentos
- pagamentos
- payments-webhook (60 USD) · sem etiqueta
- pagamentos, pela regra 1
- payments-reconciler (120 USD) · etiqueta real dados
- dados: a etiqueta ganha à regra 1
- acme-data-lake (90 USD) · sem etiqueta
- dados, pela regra 2
- acme-logs (30 USD) · sem etiqueta
- não atribuído
- AWS: loja 450 USD, pagamentos 300 USD, dados 210 USD e 30 USD não atribuídos. Sem as regras, a cobertura teria sido de 82 %; com elas, de 97 %.
- Azure: dados 350 EUR e 50 EUR não atribuídos.
- Google Cloud: 95 EUR que contam no total, mas não na desagregação.
Passo 4: declarar a métrica e indicar as unidades
Em Configurações da organização → Custos → Métricas de negócio, a ACME cria a métrica «Pedidos», com a unidade «pedido» e a chave de repartição centro_de_custo. Depois indica as unidades do mês. Há duas formas:
- À mão, uma vez por mês, em Relatórios → Custo unitário: o total (9.900 pedidos) e, se quiser a desagregação, as unidades de cada centro de custo. Voltar a enviar um valor corrige-o, não o soma.
- Automaticamente, todas as noites, a partir do seu sistema de pedidos, com uma aplicação OAuth2 com a permissão metrics:write. Se enviar valores diários, envie-os todos os dias: os dias sem unidades ficam fora do cálculo e a plataforma avisa.
O identificador da métrica não pode ser alterado depois, porque é o que a API usa. Escolha-o curto e em minúsculas: pedidos, clientes, transacoes.
Passo 5: ler o relatório
Com o custo repartido e as unidades declaradas, Relatórios → Custo unitário mostra isto para setembro:
ACME · custo unitário de setembro (9.900 pedidos)
- Cartão em USD (AWS)
- 990 USD ÷ 9.900 = 0,10 US$ por pedido
- Cartão em EUR (Azure + Google Cloud)
- 495 EUR ÷ 9.900 = 0,05 € por pedido
- Custo real de um pedido
- 0,10 US$ + 0,05 €
- Um cartão por moeda, e nunca são convertidos. Cada nuvem fatura na sua moeda e misturá-las obrigaria a inventar uma taxa de câmbio; o custo real de um pedido é a soma dos cartões.
- Desagregação por centro de custo, também por moeda: em USD aparecem loja, pagamentos e dados da AWS; em EUR, dados do Azure. A desagregação não soma o total, porque o que ficou por atribuir não aparece nela.
- Evolução dos últimos meses, que é onde está o valor: um número isolado diz pouco, a tendência diz se cada pedido lhe custa mais ou menos do que antes.
- Contas fora do cálculo: se faltar a uma conta a ingestão do mês, o relatório mostra-a com o nome, o motivo e como resolver. Um custo que falta sem avisar baixaria o rácio e pareceria uma melhoria.
Ser avisado quando o custo unitário sobe
Com o circuito a funcionar, não é preciso abrir o relatório todos os meses. Em Alertas → Canais de alerta pode ativar «Subida do custo unitário» e definir uma percentagem: a plataforma compara cada mês com o anterior e só avisa das subidas. É o alerta que deteta que algo ficou menos eficiente quando a fatura total ainda parece normal.
O que aprendemos ao montar isto
Configurámos tudo isto nas nossas próprias contas antes de escrever o artigo. Isto é o que convém saber antes de começar:
- A repartição trabalha sobre meses fechados. Calcule quando terá o primeiro resultado: na AWS, no fecho do mês em que cria a exportação; no Azure e no Google Cloud pode tê-lo mais cedo, porque exportam meses passados.
- Alterar as chaves ou as regras não recalcula um mês já processado. Depois de as alterar, clique em «Executar agora» na Ingestão FOCUS de cada conta.
- Verifique a reconciliação: a página de ingestão compara o custo importado com a fatura da nuvem. Se não bater certo, o habitual é o caminho apontar para mais de uma exportação.
- Comece pelas regras e etiquete depois. Com duas ou três regras bem escolhidas tem uma primeira repartição útil em minutos, e o «não atribuído» diz-lhe o que vale a pena etiquetar.
- Decida os valores antes de etiquetar. Poucos, em minúsculas e escritos sempre da mesma forma.
Checklist para começar
Com isto em ordem, da próxima vez que alguém perguntar quanto custa a nuvem poderá responder com o que realmente quer saber: quanto custa cada pedido e quem o gasta.
- Plano Business e acesso como proprietário da organização.
- As suas contas cloud ligadas e a Ingestão FOCUS configurada em cada uma.
- Uma chave de repartição com valores acordados, igual em todas as nuvens.
- Regras para o que não está etiquetado, e o «não atribuído» revisto.
- Uma métrica de negócio com as unidades do mês, à mão ou pela API.
- O alerta de subida do custo unitário ativado.