Estratégias de cost allocation em nuvem por time e produto com tags
1. Fundamentos da Cost Allocation com Tags
1.1. Conceito de tagging como metadado financeiro
Tags são pares chave-valor aplicados a recursos de nuvem para categorizar e rastrear custos. Elas funcionam como metadados financeiros que permitem associar cada centavo gasto a um responsável ou iniciativa específica. Uma tag típica segue o formato chave:valor, como ambiente:producao ou squad:checkout.
1.2. Diferença entre tags de alocação e tags operacionais
Tags de alocação focam em responsabilidade financeira e de negócio:
team:time-alpha
product:checkout
cost-center:fintech
Tags operacionais atendem a necessidades técnicas:
environment:production
automation:terraform
backup:daily
monitoring:enabled
1.3. Modelos de granularidade
A granularidade define o nível de detalhamento da alocação:
- Por projeto:
project:mobile-app - Por squad:
squad:plataformas - Por microserviço:
service:payment-gateway - Por camada:
layer:database
2. Desenho da Estratégia de Tagging para Times e Produtos
2.1. Estrutura hierárquica de tags
Uma hierarquia bem definida permite navegar dos custos mais agregados aos mais detalhados:
owner:time-alpha
product:checkout
cost-center:fintech
service:payment-gateway
environment:production
2.2. Políticas de nomenclatura
Padronização evita inconsistências. Regras recomendadas:
- Apenas letras minúsculas
- Hífens para separar palavras
- Sem espaços ou caracteres especiais
- Máximo de 50 caracteres por valor
Exemplo de tags seguindo a política:
team:time-checkout
product:payment-flow
env:staging
region:us-east-1
2.3. Tags obrigatórias vs. opcionais
Defina um baseline mínimo que todo recurso deve ter:
Obrigatórias (sem exceção):
team: <nome-do-time>
product: <nome-do-produto>
environment: <dev|staging|prod>
Opcionais (recomendadas):
cost-center: <codigo-centro-custo>
service: <nome-servico>
terraform: true
3. Implementação de Governança e Aplicação Automática de Tags
3.1. Políticas nativas para forçar tags
No AWS, é possível usar SCP para exigir tags em recursos:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": ["ec2:RunInstances", "rds:CreateDBInstance"],
"Resource": "*",
"Condition": {
"Null": {
"aws:RequestTag/team": "true",
"aws:RequestTag/product": "true"
}
}
}
]
}
3.2. Automação com infraestrutura como código
No Terraform, aplique tags automaticamente em todos os recursos:
locals {
default_tags = {
team = "time-checkout"
product = "payment-flow"
environment = "production"
terraform = "true"
}
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.micro"
tags = local.default_tags
}
3.3. Estratégias de tag propagation
Para clusters Kubernetes, use tags no nível do cluster e propague para recursos filhos:
# Tag no cluster EKS
tags = {
team = "time-plataformas"
product = "kubernetes-platform"
}
# Namespaces herdam tags via label propagation
kubectl label namespace checkout team=time-checkout
4. Ferramentas de Cost Allocation e Relatórios por Tag
4.1. Configuração de cost allocation tags
No AWS, ative tags de alocação de custo no console de Billing:
1. Acesse AWS Billing and Cost Management
2. Vá em Cost Allocation Tags
3. Selecione as tags team, product, environment
4. Clique em "Activate"
4.2. Criação de dashboards customizados
No AWS Cost Explorer, filtre por tags para criar visões mensais:
Filtro: team = time-checkout
Agrupamento: product
Período: Últimos 3 meses
Gráfico: Barras empilhadas por serviço
4.3. Exportação de dados de billing
Configure a exportação do CUR (Cost and Usage Report) para análise externa:
Bucket S3: billing-reports
Relatório: cur-monthly
Formato: Parquet
Frequência: Diária
5. Metodologia de Rateamento e Showback vs. Chargeback
5.1. Modelo de showback
Exiba os custos sem realizar cobrança real:
Time: time-checkout
Custo total: R$ 45.230,00
Serviços:
- EC2: R$ 12.400,00
- RDS: R$ 18.500,00
- Lambda: R$ 2.330,00
- Outros: R$ 12.000,00
5.2. Modelo de chargeback
Aloque diretamente os custos para o orçamento do time:
Time: time-checkout
Orçamento mensal: R$ 50.000,00
Custo real: R$ 45.230,00
Saldo: R$ 4.770,00 (disponível)
5.3. Rateamento de custos compartilhados
Para recursos comuns, distribua usando tags de proporção:
Recurso: Cluster Kubernetes (R$ 20.000,00)
Rateamento:
- namespace checkout (40%): R$ 8.000,00
- namespace payments (35%): R$ 7.000,00
- namespace admin (25%): R$ 5.000,00
6. Integração com Ciclo de Vida de Produto e Times
6.1. Onboarding de novos times
Checklist de criação de tags no início do projeto:
1. Definir nome do time: time-checkout
2. Definir nome do produto: payment-flow
3. Criar cost-center: CC-2024-003
4. Escolher ambiente: dev, staging, prod
5. Registrar no repositório de tags
6.2. Revisão periódica de tags
Auditoria trimestral para identificar recursos órfãos:
Query: Recursos sem tag "team" há mais de 30 dias
Ação: Enviar notificação ao proprietário
Prazo: 7 dias para correção
Escalação: Após 14 dias, recurso marcado para desligamento
6.3. Automação de alertas de custo por tag
Notificações quando um time excede orçamento:
Alerta: Custo do time-checkout > 80% do orçamento
Canal: Slack #finops-alerts
Mensagem: "Time Checkout atingiu 85% do orçamento mensal"
7. Desafios Comuns e Mitigações
7.1. Tags não propagadas em recursos legados
Estratégia de backfill automatizado:
Script Python para varrer recursos sem tag
1. Listar todos os recursos da conta
2. Identificar recursos sem tag "team"
3. Aplicar tag "team:unknown"
4. Enviar relatório para time de FinOps
7.2. Inconsistência de tags entre ambientes
Uso de linters e CI/CD para validar tags:
# pipeline.yml
lint-tags:
script:
- terraform validate
- checkov --framework terraform
- tflint --enable-rule=required_tags
7.3. Limites de tags por recurso e performance
Boas práticas para evitar excesso:
- Máximo de 10 tags por recurso
- Evitar tags dinâmicas (ex: data de criação)
- Usar tags apenas para alocação financeira
- Preferir labels para metadados operacionais
8. Exemplos Práticos de Cenários Reais
8.1. Caso: time de checkout com custos altos de banco de dados
Identificação via tag e ação de otimização:
Cenário: Custo RDS do time-checkout = R$ 18.500,00
Tag: product:checkout, service:rds
Ação:
1. Analisar queries lentas
2. Redimensionar instância de db.r5.xlarge para db.r5.large
3. Resultado: economia de 40% (R$ 7.400,00/mês)
8.2. Caso: recurso compartilhado cluster Kubernetes
Rateamento por namespace:
Cluster EKS: R$ 15.000,00/mês
Namespaces:
- checkout: 45% (R$ 6.750,00)
- payments: 35% (R$ 5.250,00)
- admin: 20% (R$ 3.000,00)
Tags aplicadas:
namespace:checkout, team:time-checkout
namespace:payments, team:time-payments
8.3. Caso: migração de modelo showback para chargeback
Ajuste de tags e comunicação com stakeholders:
Fase 1 (Mês 1-2): Showback
- Exibir custos por time
- Coletar feedback
Fase 2 (Mês 3-4): Chargeback piloto
- 2 times participantes
- Orçamento definido
Fase 3 (Mês 5+): Chargeback completo
- Todos os times
- Automação de alertas
- Relatórios mensais
Referências
- AWS Cost Allocation Tags Documentation — Documentação oficial da AWS sobre configuração e ativação de tags de alocação de custos
- Azure Cost Management + Billing Overview — Guia completo da Microsoft sobre gerenciamento de custos por tags no Azure
- GCP Cloud Billing Labels Best Practices — Práticas recomendadas do Google Cloud para uso de labels na alocação de custos
- FinOps Foundation - Tagging Best Practices — Framework FinOps com diretrizes globais para tagging e labeling em nuvem
- Terraform AWS Provider - Default Tags — Documentação do Terraform sobre configuração de tags padrão para automação de infraestrutura
- AWS Cost Explorer Documentation — Guia de uso do Cost Explorer para criar filtros e relatórios por tags
- Kubernetes Namespace Labels for Cost Allocation — Documentação do Kubernetes sobre uso de labels em namespaces para alocação de custos