O processo BigBang
Todo time do ARGLabs precisa das suas próprias contas AWS, e todas precisam ser iguais: os mesmos controles de acesso, a mesma rede, os mesmos guardrails. Construí-las à mão, conta após conta e ambiente após ambiente, é como surgem o drift e os erros. O BigBang é o que o Cloud Team faz no lugar disso: entrega a um time um conjunto completo de contas AWS, construído inteiramente como código por um pipeline, em minutos, sem ninguém abrir o console.
Por que multi-conta, e por que como código
A AWS recomenda um modelo multi-conta: contas separadas para cargas de trabalho e ambientes mantêm o raio de impacto pequeno e as permissões limpas. O ARGLabs dá a cada time uma conta por ambiente: desenvolvimento (dev), staging (stg) e produção (prd). Você pode ter quantas quiser.
Esses ambientes só são úteis se forem idênticos. Uma conta de staging que difere da produção nas sub-redes, no IAM ou por falta de um guardrail não é staging; é outro sistema que por acaso tem o mesmo nome. A única forma de garantir que sejam iguais é construir todos a partir do mesmo código. Essa é a premissa do BigBang: o mesmo Terraform, executado em um workspace diferente para cada ambiente.
O que um time recebe
Cada conta chega com os padrões da empresa já aplicados:
- Acesso pelo AWS Identity Center: os permission sets de administrador, somente leitura e do time, atribuídos aos seus grupos, para que o time possa entrar assim que a conta existir.
- Uma role
deployerpara os pipelines, que pode fazer deploy de aplicações mas não pode alterar a rede (veja TFMOD: BigBang IAM). - A rede compartilhada: as sub-redes da conta Shared Network, compartilhadas com a conta pelo AWS RAM, para que a conectividade continue gerenciada de forma central.
- A plataforma em que as aplicações se conectam: um cluster ECS, um load balancer interno e um externo com seus certificados, um API Gateway e a zona DNS do ambiente.
- Auditoria e controle de custos: uma trilha CloudTrail, um orçamento, um dashboard de custos, o Cost Anomaly Detection, um tópico de alertas que chega ao Slack e um bucket de logs consultado com Athena.
- AWS Config, pronto mas desligado: um recorder mais regras que rodam cada uma desativada, em modo de detecção ou em modo de imposição com remediação automática. Hoje está desligado no
aio.
Um código, todos os ambientes
O BigBang tem duas etapas. A primeira cria a conta AWS sob a unidade organizacional correta. A segunda configura tudo dentro dela, lendo o id da nova conta do state da primeira etapa, de modo que as duas sempre se alinham. Cada etapa roda uma vez por workspace do Terraform, e cada workspace é um ambiente e uma conta. As únicas diferenças entre os ambientes são um nome e um sufixo de e-mail, porque a AWS exige um e-mail root único para cada conta.
O pipeline se autentica na AWS com OIDC, então não há chaves de acesso de longa duração em nenhum ponto do processo. Ele assume as roles de que precisa em cada conta, executa o Terraform para todos os ambientes e deixa cada conta pronta para usar.
Os repositórios
Os módulos que constroem uma conta BigBang são desenvolvidos no projeto BigLab do Bitbucket, e o arglabs-tfmod-bigbang os junta. Cada time tem então o seu próprio repositório, arglabs-bigbang-<scope>, no projeto BigBangs. O primeiro é o arglabs-bigbang-aio, para o escopo All In One. Um novo time o copia, define seu próprio nome e o id da Main Account no info.sh e faz o push: o Terraform deriva todos os outros nomes desses valores.