Case Study

Fábrica de módulos Terraform: 200+ módulos, 15 teams, governance as code

Registry privado, semantic versioning, terratest, checkov, infracost, renovate, OPA policies. Provisionamento self-service via ServiceNow.

TerraformIaCMulti-cloudEnterprise
Terraform Modules Factory Architecture

O Desafio

Enterprise com 15 squads de plataforma, cada uma escrevendo Terraform do zero, duplicação massiva, drift constante, sem padronização de naming, tagging, security. Provisionamento manual via ticket: 4 horas, erro humano frequente, auditoria impossível.

Gaps

  • Código duplicado: 80% boilerplate (VPC, IAM, networking, monitoring) replicado
  • Sem versionamento: Módulos copiados, não versionados, breaking changes silenciosos
  • Zero testes: Nenhum terratest, checkov, plan validation no CI
  • Custo invisível: infracost ausente, surpresas na fatura
  • Governança manual: Review humano, lento, inconsistente, sem policy-as-code

A Solução: Module Factory + Self-Service

Infra como produto interno: módulos versionados, testados, documentados, com policy enforcement automatizado e portal self-service.

Estrutura do Registry Privado

  • Monorepo (GitHub): /modules/{network,security,compute,data,observability,identity}
  • Semantic versioning: v1.0.0 → v1.1.0 (minor) → v2.0.0 (breaking) Changelog automático (conventional commits + release-please) Documentação: README gerado (terraform-docs), examples/, CHANGELOG.md Registry: Terraform Cloud Private Registry / GitHub Pages + index.json

Qualidade Automatizada (Pipeline)

  • Terratest (Go): unit + integration tests em conta AWS/Azure/GCP efêmera
  • Checkov: 200+ policies (CIS, PCI, custom) — fail no PR se high/critical Infracost: breakdown por recurso, diff no PR, alerta se > 10% change TFLint: naming conventions, deprecated syntax, provider versions Renovate: auto-update providers, modules, GitHub Actions — PRs agrupados

Policy-as-Code (OPA + Sentinel)

  • Mandatory tags: cost-center, owner, environment, data-classification
  • Naming: regex padrões (rg-{env}-{app}-{region}, vnet-{env}-{region}) Security: no public IP, encryption at rest, private endpoints, NSG default-deny Cost: max instance size, require savings plan eligibility, infracost threshold Drift: Terraform Cloud run tasks → OPA eval plan → block apply se violado

Self-Service via ServiceNow

  • Catálogo: VPC, AKS/EKS/OKE, PostgreSQL, Kafka, Redis, VM, Storage, DNS
  • Formulário dinâmico: validação client-side (OPA Rego no browser via WASM) Aprovação: workflow ServiceNow (gestor → sec → finops → auto-provision) Execução: GitHub Actions OIDC → Terraform Cloud workspace efêmero → apply Output: link run, recursos criados, custos estimados, documentação auto-linkada

FinOps & Showback Integrado

  • Infracost no PR: custo estimado antes de merge, alerta Slack se > threshold
  • Tagging enforcado → Cost Explorer / Cost Management nativo por cost-center Relatório mensal: custo real vs estimado, drift financeiro, otimizações Chargeback opcional: rateback por squad via ServiceNow CMDB integration

Enablement & Inner Source

  • Inner source: squads contribuem módulos, review por platform team
  • Office hours semanais: dúvidas, patterns, new module requests Treinamento: Terraform Associate, testing, contributing guide Métricas: adoção (% recursos via módulo), lead time PR, defect rate

Resultados Mensuráveis

200+módulos publicados
85%recursos via módulo
4h→15minprovisionamento
0drift não detectado
Depoimento do Platform Engineering Lead: "Antes cada squad reinventava a roda. Hoje provisionam VPC+EKS+RDS+Monitoring em 15 min via ServiceNow, com security, cost e compliance garantidos por código. A fábrica pagou-se no 3º mês."

Tecnologias & Ferramentas

Terraform Cloud Terratest Checkov Infracost Renovate OPA Gatekeeper ServiceNow GitHub Actions

Resumo do Case

Cliente
Enterprise (Multinacional)
Setor
Tecnologia / Serviços Financeiros
Squads
15 platform teams
Providers
AWS, Azure, GCP, OCI
Módulos
200+ (v1.x → v2.x)
Pipeline
GitHub Actions + Terraform Cloud
Duração
6 meses (contínuo)
Equipe IT Cloud
3 platform engineers + 1 sec

Próximos Passos
  • Crossplane: compor recursos K8s + cloud via GitOps
  • Terraform Test (native) migração gradual do Terratest Module registry UI custom (Backstage plugin)

Seu próximo case começa com uma conversa.

Tem desafio parecido? Vamos entender seu contexto e mostrar o caminho mais curto para o resultado.

Falar com a IT Cloud