Fala, galera! 👋
Tá aí um algo engraçado… Esses dias, sem querer, acabei caindo num vídeo antigo MEU no YouTube, de uns 5 anos atrás. E lá estava eu, todo empolgado, explicando como o Terraform era interessante, mas — e aqui vem a parte curiosa — incentivando o uso direto dos SDKs em alguns cenários.
Sim sim… isso parece meio estranho… porém, foco na entrega de valor e como eu já dizia no vídeo, para muitos casos o simples bem feito resolve tudo e gera problemas mais fáceis de serem resolvidos.
Naquela época, eu criava muitos ambientes stateful, e tinha um carinho especial pelos meus scripts: um punhado de scripts orquestrados de forma imperativa , que provisionava tudo — do hardware ao software — passando por toda a jornada de setup. Largar esse “arsenal” de scripts bem amarrados pra abraçar uma ferramenta declarativa? isso também parece loucura, sem um bom motivo de valor, eu não agregaria só por nerdice não.
Sem contar que eu entendia (e ainda entendo) a dificuldade de justificar um reskill pra Terraform em empresas que são muito mais BUYERS do que BUILDERS — ou seja, aquelas que preferem comprar soluções prontas (COTS) do que construir as próprias. Nesse modelo, você vira quase um “garantidor de pré-requisitos de fornecedores”… e aí a flexibilidade vai embora rapidinho e o arsenal de script já é uma ótima solucão.
Mas como a vida adora nos testar, pouco depois desse vídeo surgiu uma baita demanda de migração em escala, com infraestrutura stateful e stateless, e um volume absurdo — mais de 15 mil servidores! E aí, meu amigo, não tem script artesanal que aguente: ou você automatiza de verdade, ou você afunda.
(Aliás, eu falo mais sobre esse projeto numa aula lá no CaD, inclusive sobre quem geralmente está envolvido, o modelo de execução e como as estruturas organizacionais se adaptam.)
Terraform: o eterno crush do IaC 💘
Na maioria dos casos, Terraform é tipo aquele primeiro amor do mundo IaC. Simples, declarativo, multiplataforma, com um ecossistema riquíssimo de módulos e uma comunidade gigante.
Mais um parêntese aqui — porque é impossível não comentar… Sim, sim, o lindo e “agnóstico” Terraform. A promessa mágica: “escreva uma vez e use em qualquer cloud… até on-premise!”. Uau, né? Mas me diz… você realmente acredita nisso? Se sim, sinto muito. De verdade. 😅
Passado o fogo de palha — depois de uns meses colocando Terraform em tudo que vê pela frente, feito um jovem apaixonado — você começa a notar uns defeitinhos aqui e ali…
- Dificuldade pra garantir atualizações contínuas;
- Criar módulos reutilizáveis e compartilháveis nem sempre é trivial;
- Cada time escreve de um jeito, e o IaC vira um Frankenstein de código;
- Falta de guardrails, ou uso inconsistente deles;
- E o clássico: aquele medo de rodar o
terraform apply
em produção e acabar destruindo tudo… resultado? Ninguém mais toca no código, e o Terraform vira “read-only” desatualizado 😬; - E por ser declarativo, você até sente que está no controle… até ver alguém criar um débito técnico monstro, por pura falta de entendimento — tanto do Terraform quanto dos próprios recursos que está provisionando. Tudo, claro, seguindo aquele tutorial aleatório da internet, de uma fonte duvidosa e com cara de “copiei e colei, funcionou aqui”. 🫠
Mas calma. Nada disso é pra dizer que Terraform não presta. Pelo contrário.
Terraform é, sem dúvida, uma das ferramentas mais poderosas que já tivemos no mundo de Infra como Código. E justamente por ser declarativo, ele te força a pensar naquilo que muita gente evita: responsabilidade.
Com Terraform, não dá pra simplesmente “sair clicando e ver no que dá”. Você precisa entender o que está pedindo, o que vai ser criado, o que será destruído, como isso afeta o estado atual. Ele te força a pensar como um arquiteto, não só como um executor.
Agora, se você pensar como um executor, ai sim você será surpreendido pelos pontos negativos do terraform.
E por fim, apesar das dores, Terraform ainda é (ou foi por muito tempo) a melhor escolha em muitos casos.
Quer alguns exemplos?
- Provisionar infraestrutura complexa com dependências entre recursos;
- Reaproveitar módulos e aplicar padronização entre diferentes times;
- Ter versionamento claro e histórico de mudanças da sua infra;
- Integrar com praticamente todas as nuvens públicas (e até on-premise);
- Automatizar ambientes de dev, staging, prod… com uma linguagem simples e de fácil adoção.
É difícil falar de IaC sem falar de Terraform. Ele democratizou a Infra como Código de um jeito que poucas ferramentas conseguiram.
Agora… pensa comigo por um instante.
E se eu pudesse rodar um “terraform”, mas com um superpoder embutido — um que fica rodando em background, observando qualquer mudança manual e corrigindo todo drift automaticamente? Isso mesmo. Tipo um “modo sentinela da infraestrutura”.
E se eu te contar que já existe uma produto relativamente nova no mercado que faz exatamente isso?
Uma solução que usa o mesmo conceito de reconciliação contínua que a gente já conhece (e confia) no Kubernetes… mas aplicada à infraestrutura como um todo?
Ai que entra o Crossplane e segundo o projeto o Crossplane é um framework para : “Build control planes without needing to write code. Crossplane has a highly extensible backend that enables you to orchestrate applications and infrastructure no matter where they run, and a highly configurable frontend that lets you define the declarative API it offers.”
Crossplane: IaC com reconciliação constante
O Crossplane é basicamente um controlador de Kubernetes que permite gerenciar recursos de infra como EC2, RDS, VPCs, Redis, buckets S3, clusters de GKE, etc., do mesmo jeito que você gerencia pods, deployments e services.
Você escreve um YAML, define o que quer, aplica… e ele entra num loop eterno de reconciliação, garantindo que aquilo que foi declarado é o que está rodando.
Se alguém fizer uma mudança na mão, o Crossplane detecta, compara com o que foi declarado e, sem alarde, reconcilia tudo sozinho — trazendo o ambiente de volta pro estado desejado, sem precisar de terraform plan
, apply
ou intervenção manual. Tudo acontece de forma contínua, silenciosa e automática.
Crossplane vai substituir o Terraform?
Não exatamente. O Terraform ainda é incrível, especialmente se você quer algo simples, rodando no pipeline, sem muita dependência externa. Ele funciona bem e resolve problemas reais.
Mas se você já está num cenário mais avançado, onde:
- Múltiplos times provisionam recursos ao mesmo tempo;
- Você precisa garantir isolamento, controle e padronização;
- Você quer detectar e corrigir drifts automaticamente;
- Ou está 100% mergulhado no ecossistema Kubernetes…
Aí, pode ser que vale muito a pena dar uma chance ao Crossplane. Ele é um novo jeito de pensar infraestrutura como plataforma — e não só como “um código que sobe VM”.
Pela minha experiência, quem vem de APP costuma se dar muito melhor com o Crossplane do que com o Terraform. Já o pessoal de Infra, em geral, se sente mais confortável no mundo Terraform do que tentando entender esse tal de “YAML com controlador reconciliando recurso”. Enquanto eu escrevia isso aqui, pensei em pelo menos uns oito colegas que se encaixam direitinho nessa divisão. 😂
Conclusão
No fim das contas, o Terraform continua tendo um baita valor. É maduro, estável, bem aceito no mercado, e atende a maioria dos cenários com eficiência. Se você trabalha com infraestrutura, provavelmente já resolveu muita dor com ele — e vai continuar resolvendo por um bom tempo.
Mas estudar o Crossplane tem se mostrado um baita diferencial. Ele traz um novo olhar sobre como gerenciar infraestrutura de forma contínua, confiável e com aquela cereja do bolo: a capacidade de reconciliação automática. E isso, num mundo onde ambientes que possuem muita gente operando e colocando a mão, vale ouro.
Talvez a resposta não seja abandonar uma ferramenta pela outra, mas sim entender onde cada uma brilha, e como elas podem até coexistir no seu ecossistema.
Como eu sempre digo no CaD, nas newsletters e até nos vídeos lá do canal do youtube: o segredo nunca está no que a tecnologia pode fazer, mas sim no problema que você precisa resolver — e em como escolher a tecnologia certa pra isso. Ferramenta boa é aquela que faz sentido no seu contexto.
E aí, o que você acha disso tudo? Já usou Terraform ou chegou a brincar com o Crossplane? Como foi sua experiência? Te ajudou? Deu dor de cabeça? Me conta — será muito legal saber mais sobre você.
🚨Se curtiu esse conteúdo e quer aprender mais sobre arquitetura de software em um nível bem mais aprofundado, venha fazer parte da
Comunidade de Arquitetura Descomplicada (CaD)! Saiba mais em https://mugnos-it.com/cad/ 🚀🚨
Até a próxima!
Abraços,
Douglas Mugnos
MUGNOS-IT