Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

04 - Tags e Alocação de Custos

#cost-allocation#finops#governanca#showback#tagging
video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Tags e Alocação de Custos

Tags são pares de chave e valor aplicados a recursos de nuvem, e a alocação de custos é a prática de usar essas etiquetas como dimensão contábil, distribuindo a fatura por produto, time, ambiente e centro de custo. O assunto parece burocrático e é, na realidade, a infraestrutura de governança sobre a qual todo o FinOps se apoia: sem tags confiáveis, a organização sabe quanto gasta no total e não sabe quem gasta, com o quê e por quê. A fatura de nuvem é emitida por conta e por serviço, e nenhuma dessas dimensões corresponde à estrutura organizacional de uma empresa real, o que torna a tag a única ponte entre o consumo e o dono. A diferença entre uma organização que controla custos e uma que só os observa é, quase sempre, a maturidade do seu esquema de tags. O arquivo cobre a convenção de chaves, a exigência via políticas e infraestrutura como código, os relatórios de alocação, os modelos de showback e chargeback e a rotina de higiene que mantém o sistema honesto.

Conceito

Uma tag só tem valor financeiro quando cumpre três propriedades: é aplicada uniformemente, é normalizada em valores controlados e é ativada como cost allocation tag no provedor. Uniformidade significa que todo recurso elegível carrega as chaves obrigatórias; normalização significa que o valor de "producao" é sempre o mesmo, sem variações de caixa, acento ou abreviação; ativação significa que a chave está registrada como alocação de custo e aparece nos relatórios do Cost Explorer e do Cost and Usage Report. Falha em qualquer uma das três produz relatórios com buracos, e relatório de custo com buraco é pior que nenhum relatório, porque transmite falsa segurança.

A hierarquia de organização em nuvem complementa as tags em vez de substituí-las. Contas separadas por produto ou por ambiente são a fronteira mais forte, com isolamento de fatura, de permissão e de cota; as tags atuam dentro de cada conta, refinando a atribuição por serviço, por feature e por centro de custo. O desenho maduro combina os dois níveis, contas para macroestrutura e tags para granularidade.

  • Tag de propriedade: identifica quem responde pelo recurso, tipicamente uma chave dono ou time, com valor de registro controlado.
  • Tag de ambiente: separa producao, staging e desenvolvimento, base dos relatórios por ciclo de vida.
  • Tag de produto ou aplicação: liga o recurso à jornada de negócio que o consome.
  • Tag de centro de custo: conecta o consumo à estrutura financeira da empresa, base do chargeback.

O problema que resolve

O problema central é a atribuição. Uma conta com 200 times e 3 mil recursos recebe uma fatura única, e a pergunta "o que aconteceu com o custo da área de pagamentos" não tem resposta sem alocação. Sem resposta, os efeitos em cadeia são previsíveis: otimização sem dono, orçamento por estimativa em vez de por consumo, eTimes que não percebem o custo de suas decisões de arquitetura. A tag transforma a fatura de um documento contábil centralizado em um espelho da organização.

O segundo problema é o do comportamento. Custo que ninguém sente é custo que ninguém otimiza, e a transparência por tag é o mecanismo que dá à engenharia a visão financeira do próprio trabalho. Estudos de mercado sobre FinOps apontam, com consistência, que boa fração do desperdício de nuvem desaparece apenas com a visibilidade atribuída, pois times que veem a própria conta corrigem ambiente esquecido, réplica sobrando e experimento abandonado sem que ninguém peça.

Convenção de tags

A convenção define um esquema pequeno, obrigatório e versionado, porque esquema longo não é cumprido e esquema flexível não é agregável. A prática consolidada limita as chaves obrigatórias a quatro ou cinco, com valores por enumeração fechada, e documenta o significado de cada uma em catálogo publicado. Chaves opcionais podem existir, mas a validação obrigatória se aplica só ao núcleo, e toda exceção precisa de justificativa registrada.

Chave Exemplo de valor Propósito Obrigatoriedade
dono squad-pagamentos Responsabilidade e contato Em todos os recursos
ambiente producao, staging, dev Ciclo de vida e criticidade Em todos os recursos
produto checkout, catalogo Linha de negócio consumidora Em todos os recursos
centro-custo CC-4102 Integração com finanças Recursos com custo
projeto t-482-migracao-eks Rastreabilidade de iniciativa Recursos temporários

O valor da chave de dono deve apontar para um grupo, e nunca para uma pessoa, pois pessoa muda de time e saí de empresa, enquanto squad persiste e tem canal próprio de alerta. O valor de centro-custo precisa nascer da área financeira e mudar por processo formal, e a sincronização entre o catálogo de tags e o plano de contas é responsabilidade compartilhada de FinOps e controladoria.

Exigência via política e IaC

Convenção sem enforcement é lista de desejos, e o enforcement tem duas camadas complementares. Na camada do código, a infraestrutura como código aplica default_tags e valida as chaves obrigatórias no pipeline, recusando plano que crie recurso sem etiqueta. Na camada da plataforma, políticas de conta bloqueiam a criação de recursos sem tags mesmo para quem contorna o pipeline, por console, por CLI ou por automação externa.

# Terraform: tags obrigatórias por padrão em todos os recursos do módulo
provider "aws" {
  region = "sa-east-1"
  default_tags {
    tags = {
      dono         = var.tag_dono          # exigido por variável sem default
      ambiente     = var.tag_ambiente      # validado por enum no variables.tf
      produto      = var.tag_produto
      centro-custo = var.tag_centro_custo
      gerenciado   = "terraform"           # distingue origem do recurso
    }
  }
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExigirTagsObrigatoriasNaCriacao",
      "Effect": "Deny",
      "Action": ["ec2:RunInstances", "rds:CreateDBInstance", "s3:CreateBucket"],
      "Resource": "*",
      "Condition": {
        "Null": { "aws:ResourceTag/dono": "true" },
        "StringEquals": { "aws:ResourceTag/ambiente": ["producao", "staging", "dev"] }
      }
    }
  ]
}

O desenho da política de negação merece cuidado com o caminho de emergência. Bloquear criação sem tag em produção protege a alocação, e um papel de break-glass com auditoria cuida do incidente que precisa de recurso imediato; a exigência volta a valer na próxima revisão do recurso. Sem esse escape documentado, times criam workarounds que pioram a higiene.

Além da negação pontual, os provedores oferecem instrumentos de governança de esquema completo. Tag Policies na AWS definem a gramática das chaves, valores permitidos e casings válidos, e reportam conformidade sem bloquear; Azure Policy aplica o mesmo papel com efeito de deny ou audit por definição. O desenho recomendado combina audit amplo sobre todas as chaves do esquema com deny restrito às chaves financeiras essenciais, porque conformidade auditável cobre a nuance e bloqueio indiscriminado gera atrito sem retorno proporcional.

Relatórios de alocação

Com tags ativadas como cost allocation tags, o Cost Explorer passa a agrupar por qualquer chave do esquema, e o CUR recebe as colunas de tag por linha de uso. Os relatórios recorrentes de um programa maduro são três: custo por produto, que responde a roda do negócio; custo por ambiente, que expõe a proporção entre produção e o resto; e custo por centro de custo, que alimenta a contabilidade. Cada relatório precisa de uma linha residual, o custo sem tag, e essa linha é o termômetro de higiene do programa.

Detalhes de mecânica influenciam a leitura. Tags ativadas como alocação só retroagem até 12 meses, e a ativação demora até 24 horas para aparecer nos relatórios. Recursos que correm antes do primeiro dia do mês sem tag vão aparecer com custo acumulado sem dimensão, e a correção é corrigir o recurso e aceitar o histórico, pois realocação retroativa manual não existe na fatura nativa.

Serviços sem suporte completo a tags merecem atenção especial no desenho dos relatórios. Alguns recursos repassam a tag ao custo apenas em datas específicas, e certos itens de uso, como transferência de dados entre serviços, podem não carregar a tag do recurso de origem. A prática recomendada é validar o recorte por tag contra o total da conta no primeiro mês, medir a fração coberta e documentar explicitamente o que cada relatório não vê, evitando a leitura ingênua de que a soma por tag deve bater com a fatura.

Showback e chargeback

Showback e chargeback são os dois modelos de apresentação do custo atribuído, e a escolha entre eles é um estágio de maturidade, não uma preferência estética. O showback mostra a cada time o custo que gera, sem cobrar nada de fato, e serve para criar cultura, calibrar o esquema de tags e corrigir distorções com risco zero. O chargeback transfere o custo para o orçamento do time, e exige esquema de tags confiável, centro de custo validado e um ciclo de fechamento acordado com a controladoria.

Critério Showback Chargeback
Efeito no orçamento Informativo Financeiro real
Exigência de higiene de tags Média Alta, com auditória
Resistência esperada Baixa Alta no início
Momento adequado Primeiro ano do programa Depois de showback estável
Benefício principal Cultura de custo Responsabilidade plena

A transição recomendada é rodar showback por dois ou três ciclos, corrigir buracos de atribuição enquanto ninguém é cobrado, e só então ativar o chargeback por produto. Implantar chargeback antes da higiene gera reclamações legítimas sobre custo mal atribuído, e reclamação de alocação errada descredita o programa inteiro, que passa a ser visto como contabilidade de estimação.

Higiene de tags

O sistema decai sem rotina de limpeza, e a higiene é composta por três verificações automatizadas. A primeira encontra recursos sem tag obrigatória, por consulta de inventário como Resource Explorer, Config ou script de CLI, e gera fila de correção com prazo. A segunda encontra valores fora do enum, o recurso com "Producao" em vez de "producao", que some dos relatórios case-insensitive mal configurados. A terceira cruza custo residual sem tag com custo total, e alarme dispara quando a fração passa do teto acordado, tipicamente 2% da conta.

# Lista instâncias EC2 sem a tag obrigatória "dono" em uma região
aws ec2 describe-instances --region sa-east-1 \
  --filters "Name=instance-state-name,Values=running" \
  --query 'Reservations[].Instances[?not_null(Tags) == `false` || Tags[?Key==`dono`].Value | length(@) == `0`].[InstanceId,InstanceType]' \
  --output table

A rotina de correção precisa ser de baixo atrito para funcionar: a lista chega ao time com dono, o recurso ganha tag por automação aprovada, e a exceção real, o recurso herdado de outro time, segue processo de reatribuição documentado. Tratar higiene como culpabilidade de time é o caminho curto para que ninguém reporte mais nada.

Erros comuns

  • Esquema gigante: dez chaves obrigatórias, e a adesão desmorona; quatro ou cinco chaves bem cumpridas valem mais que dez parciais.
  • Valores livres: cada time escreve o ambiente como quiser, e o relatório por ambiente soma três produção diferentes.
  • Tag de pessoa como dono: a saída do funcionário deixa recursos órfãos e a fila de correção vira investigação de pertencimento.
  • Ativação tardia: esquema definido após a conta estar madura, e meses de custo ficam sem dimensão para sempre.
  • Enforcement só no pipeline: automação externa e console criam recursos fora da regra, e a exceção vira regra.
  • Showback eterno: relatório apresentado por anos sem nunca cobrar, e a cultura de custo que ele deveria criar nunca se materializa.
  • Tag usada como controle de acesso: misturar atribuição financeira com permissão de IAM na mesma chave amarra as duas evoluções entre si.

Boas práticas

Versione o esquema de tags em repositório com dono formal, e trate mudança de chave ou de enum como mudança de plataforma, com migração planejada para os recursos existentes. Aplique default_tags na raiz dos módulos de Terraform, valide as chaves no pipeline com política as code, e mantenha a política de negação na conta como rede de segurança, aceitando que o enforcement tem custo pequeno e retorno permanente. Publique o relatório de custo por tag em cadência fixa, com a linha residual em destaque, e revise a fração sem tag toda semana até o teto acordado. Por fim, caminhe do showback para o chargeback por estágio, com calendário e compromisso da controladoria, pois alocação de custo madura é a que fecha o ciclo entre decisão de arquitetura e orçamento, e é isso que o FinOps existe para construir.