- Gerenciamento de mais de 165.000 recursos em nuvem em 625 workspaces do Terraform e 38 contas AWS
- Dos 170 engenheiros, 40 são especialistas em infraestrutura
- São executados 225 releases de infraestrutura (
terraform apply) e 723 plans (terraform plan) por dia
- Para isso, foi adotado o Terraform Cloud para automatizar o processo de release de infraestrutura, reduzindo o trabalho manual e os erros dos desenvolvedores
Problemas antes da adoção do Terraform Cloud
- Necessidade de alto nível de acesso à AWS: a equipe de infraestrutura precisava ter privilégios elevados na AWS
- Trabalho demorado: era necessário executar
terraform apply em cada diretório e repetir revisões e aprovações, e uma única mudança podia afetar mais de 120 workspaces
- Ocorrência de drift de infraestrutura: mudanças inesperadas se acumulavam, exigindo revisão e ações adicionais no momento da aplicação
Adoção do Terraform Cloud e efeitos
- Eliminação do drift → ao eliminar o drift de infraestrutura, reduziram-se o risco e a carga sobre os desenvolvedores
- Economia de tempo para desenvolvedores → cerca de 8.000 horas por ano economizadas (equivalente à carga de trabalho de 4 desenvolvedores)
- Rastreabilidade das mudanças → é possível acompanhar alterações por meio de logs de auditoria, facilitando o debugging
- Suporte a speculative plans → mudanças podem ser testadas automaticamente e os resultados podem ser verificados diretamente no GitHub CI
Como o Terraform Cloud é operado atualmente
- Self-hosted: o Terraform Cloud for Business foi instalado internamente, e os agentes do TFC são operados em um cluster ECS dentro das contas AWS
- Configuração do pool de agentes: 120 agentes são divididos entre ambiente de desenvolvimento (40) e ambiente de produção (80) para manter alta concorrência
Elementos monitorados com foco principal
- Esgotamento de agentes e limite de concorrência → quando faltam agentes, o responsável de plantão é alertado
- Tempo de plan → se o tempo de plan no ambiente de desenvolvimento ultrapassa 4 minutos, a equipe é notificada
- Drift de infraestrutura → atualmente não é medido (quase não ocorre)
Otimizações para melhorar a qualidade
- Desenvolvimento de TFC CLI: permite revisar e aprovar automaticamente mudanças em vários workspaces via CLI
- Criação de sistema de notificações: automação via alertas no Slack para que nenhum apply do Terraform seja perdido
- Gerenciamento automático de workspaces: uso do Terraform para gerenciar 625 workspaces, aplicando tags para distinguir as equipes responsáveis
- Análise de uso do Terraform Cloud: uso da API do TFC para coletar dados de versões de estado e entender consumo de recursos e tendências de crescimento
- Backup do Terraform State: arquivos de estado são copiados automaticamente para um bucket S3 para possibilitar recuperação em caso de falha
- Gerenciamento de dependências entre workspaces: criação de uma árvore de dependências de módulos para configurar automaticamente os diretórios que cada workspace deve monitorar
- Automação de upgrade de providers: uso do Dependabot para atualizar providers mensalmente e reduzir a carga operacional por meio de automação
Melhorias futuras
- Rollout gradual: transição de releases baseados na branch
main para um modelo de deploy em múltiplas etapas (desenvolvimento → staging → produção)
- Divisão de workspaces grandes: a intenção é detalhar os atuais 625 workspaces para mais de 1500, a fim de reduzir o tempo de plan e apply e diminuir o escopo de impacto das mudanças
- Aprimoramento das notificações: adição de função de reatribuição aos alertas do Slack e introdução de geração automática do comando
tfc review
- Autoscaling de agentes: há planos de adotar um sistema de autoscaling baseado em EKS para lidar de forma eficiente com cargas de trabalho variáveis
- Open source de ferramentas internas: há planos de publicar como open source várias ferramentas desenvolvidas internamente para que outras equipes também possam utilizá-las
Ainda não há comentários.