{"id":1511,"date":"2025-04-18T16:00:20","date_gmt":"2025-04-18T16:00:20","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=1511"},"modified":"2025-06-03T00:50:21","modified_gmt":"2025-06-03T00:50:21","slug":"infra-como-codigo-terraform-e-ainda-a-melhor-escolha-%f0%9f%a4%94","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/infra-como-codigo-terraform-e-ainda-a-melhor-escolha-%f0%9f%a4%94\/","title":{"rendered":"Infra como C\u00f3digo: Terraform \u00e9 (ainda) a melhor escolha? \ud83e\udd14"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1511\" class=\"elementor elementor-1511\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b89a1d6 e-flex e-con-boxed e-con e-parent\" data-id=\"1b89a1d6\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ff33cb0 elementor-widget elementor-widget-text-editor\" data-id=\"3ff33cb0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p id=\"1c114600-107e-8024-be0b-daa3366d374a\">Fala, galera! \ud83d\udc4b<\/p>\n\n\n\n<p id=\"1c114600-107e-809b-9842-e14bdac294b7\">T\u00e1 a\u00ed um algo engra\u00e7ado\u2026 Esses dias, sem querer, acabei caindo num <strong>v\u00eddeo antigo MEU<\/strong> no YouTube, de uns <strong>5 anos atr\u00e1s<\/strong>. E l\u00e1 estava eu, todo empolgado, explicando como o <strong>Terraform era interessante<\/strong>, mas \u2014 e aqui vem a parte curiosa \u2014 <strong>incentivando o uso direto dos SDKs<\/strong> em alguns cen\u00e1rios.<\/p>\n\n\n\n<p id=\"1c114600-107e-8013-9e1f-daeac40313d2\">Sim sim\u2026 <strong>isso parece meio estranho\u2026<\/strong> por\u00e9m, foco na entrega de valor e como eu j\u00e1 dizia no v\u00eddeo, para muitos casos o <strong>simples bem feito resolve tudo e gera problemas mais f\u00e1ceis de serem resolvidos<\/strong>.<\/p>\n\n\n\n<p id=\"1c114600-107e-8098-8a5b-c573c0a278c7\">Naquela \u00e9poca, eu criava muitos <strong>ambientes stateful<\/strong>, e tinha um carinho especial pelos meus scripts: um punhado de scripts orquestrados de forma imperativa , que provisionava tudo \u2014 do hardware ao software \u2014 passando por toda a jornada de setup. Largar esse \u201carsenal\u201d de scripts bem amarrados pra abra\u00e7ar uma ferramenta declarativa? isso tamb\u00e9m parece loucura, sem um bom motivo de valor, eu n\u00e3o agregaria s\u00f3 por nerdice n\u00e3o.<\/p>\n\n\n\n<p id=\"1c114600-107e-800e-a9ec-ce66a816cf96\">Sem contar que eu <strong>entendia (e ainda entendo)<\/strong> a dificuldade de justificar um <strong>reskill<\/strong> pra Terraform em empresas que s\u00e3o muito mais <strong>BUYERS do que BUILDERS<\/strong> \u2014 ou seja, aquelas que preferem comprar solu\u00e7\u00f5es prontas (COTS) do que construir as pr\u00f3prias. Nesse modelo, voc\u00ea vira quase um \u201c<strong>garantidor de pr\u00e9-requisitos de fornecedores<\/strong>\u201d\u2026 e a\u00ed a flexibilidade vai embora rapidinho e o arsenal de script j\u00e1 \u00e9 uma \u00f3tima soluc\u00e3o.<\/p>\n\n\n\n<p id=\"1c114600-107e-8093-a0d2-d9a3182bdec2\">Mas como a vida adora nos testar, pouco depois desse v\u00eddeo surgiu <strong>uma baita demanda de migra\u00e7\u00e3o em escala<\/strong>, com <strong>infraestrutura stateful e stateless<\/strong>, e um volume absurdo \u2014 <strong>mais de 15 mil servidores<\/strong>! E a\u00ed, meu amigo, n\u00e3o tem script artesanal que aguente: ou voc\u00ea automatiza <strong>de verdade<\/strong>, ou voc\u00ea afunda.<\/p>\n\n\n\n<p id=\"1c114600-107e-8023-bf2b-d62ab74a6d24\"><del>(Ali\u00e1s, eu falo mais sobre esse projeto numa aula l\u00e1 no <\/del><del><strong>CaD<\/strong><\/del><del>, inclusive sobre quem geralmente est\u00e1 envolvido, o modelo de execu\u00e7\u00e3o e como as estruturas organizacionais se adaptam.)<\/del><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1c114600-107e-805e-bad9-f7585a488776\">Terraform: o eterno crush do IaC \ud83d\udc98<\/h2>\n\n\n\n<p id=\"1c114600-107e-80d0-930c-f63d3674c138\">Na maioria dos casos, Terraform \u00e9 tipo aquele primeiro amor do mundo IaC. Simples, declarativo, multiplataforma, com um ecossistema riqu\u00edssimo de m\u00f3dulos e uma comunidade gigante.<\/p>\n\n\n\n<p id=\"1c114600-107e-80aa-9f90-cdb44aeb72d7\">Mais um par\u00eantese aqui \u2014 porque \u00e9 imposs\u00edvel n\u00e3o comentar\u2026 Sim, sim, o lindo e \u201cagn\u00f3stico\u201d Terraform. A promessa m\u00e1gica: \u201cescreva uma vez e use em qualquer cloud\u2026 at\u00e9 on-premise!\u201d. Uau, n\u00e9? Mas me diz\u2026 voc\u00ea realmente acredita nisso? Se sim, sinto muito. De verdade. \ud83d\ude05<\/p>\n\n\n\n<p id=\"1c114600-107e-809f-9f68-ef8050a95b4e\">Passado o fogo de palha \u2014 depois de uns meses colocando Terraform em tudo que v\u00ea pela frente, feito um jovem apaixonado \u2014 voc\u00ea come\u00e7a a notar uns defeitinhos aqui e ali\u2026<\/p>\n\n\n\n<ul id=\"1c114600-107e-80c7-8da9-e28c9519bee2\" class=\"wp-block-list\">\n<li>Dificuldade pra garantir <strong>atualiza\u00e7\u00f5es cont\u00ednuas<\/strong>;<\/li>\n\n\n\n<li>Criar m\u00f3dulos <strong>reutiliz\u00e1veis e compartilh\u00e1veis<\/strong> nem sempre \u00e9 trivial;<\/li>\n\n\n\n<li>Cada time escreve de um jeito, e o IaC vira um <strong>Frankenstein de c\u00f3digo<\/strong>;<\/li>\n\n\n\n<li>Falta de <strong>guardrails<\/strong>, ou uso inconsistente deles;<\/li>\n\n\n\n<li>E o cl\u00e1ssico: aquele <strong>medo de rodar o <\/strong><code><strong>terraform apply<\/strong><\/code><strong> em produ\u00e7\u00e3o<\/strong> e acabar destruindo tudo\u2026 resultado? Ningu\u00e9m mais toca no c\u00f3digo, e o Terraform vira \u201cread-only\u201d desatualizado \ud83d\ude2c;<\/li>\n\n\n\n<li>E por ser declarativo, voc\u00ea at\u00e9 sente que est\u00e1 no controle\u2026 at\u00e9 ver algu\u00e9m criar um d\u00e9bito t\u00e9cnico monstro, por pura falta de entendimento \u2014 tanto do Terraform quanto dos pr\u00f3prios recursos que est\u00e1 provisionando. Tudo, claro, seguindo aquele tutorial aleat\u00f3rio da internet, de uma fonte duvidosa e com cara de \u201ccopiei e colei, funcionou aqui\u201d. \ud83e\udee0<\/li>\n<\/ul>\n\n\n\n<p id=\"1c114600-107e-80cf-a1a5-fee49025b26a\"><strong>Mas calma. Nada disso \u00e9 pra dizer que Terraform n\u00e3o presta. Pelo contr\u00e1rio.<\/strong><\/p>\n\n\n\n<p id=\"1c114600-107e-8009-a812-e5d18be41227\">Terraform \u00e9, sem d\u00favida, uma das ferramentas mais poderosas que j\u00e1 tivemos no mundo de Infra como C\u00f3digo. E justamente <strong>por ser declarativo<\/strong>, ele te for\u00e7a a pensar naquilo que muita gente evita: <strong>responsabilidade.<\/strong><\/p>\n\n\n\n<p id=\"1c114600-107e-8006-8264-c0f5b9633317\">Com Terraform, n\u00e3o d\u00e1 pra simplesmente \u201csair clicando e ver no que d\u00e1\u201d. Voc\u00ea precisa entender o que est\u00e1 pedindo, o que vai ser criado, o que ser\u00e1 destru\u00eddo, como isso afeta o estado atual. Ele te for\u00e7a a pensar <strong>como um arquiteto<\/strong>, n\u00e3o s\u00f3 como um executor.<\/p>\n\n\n\n<p id=\"1c114600-107e-8005-a1ad-e2279c3d34af\">Agora, se voc\u00ea pensar como um executor, ai sim voc\u00ea ser\u00e1 surpreendido pelos pontos negativos do terraform.<\/p>\n\n\n\n<p id=\"1c114600-107e-808d-9212-d2915414e2c8\">E por fim, apesar das dores, Terraform <strong>ainda \u00e9 (ou foi por muito tempo) a melhor escolha em muitos casos.<\/strong><\/p>\n\n\n\n<p id=\"1c114600-107e-809d-ad06-da5fcca4bcab\">Quer alguns exemplos?<\/p>\n\n\n\n<ul id=\"1c114600-107e-80a6-9d69-f52826173067\" class=\"wp-block-list\">\n<li>Provisionar infraestrutura complexa com depend\u00eancias entre recursos;<\/li>\n\n\n\n<li>Reaproveitar m\u00f3dulos e aplicar padroniza\u00e7\u00e3o entre diferentes times;<\/li>\n\n\n\n<li>Ter versionamento claro e hist\u00f3rico de mudan\u00e7as da sua infra;<\/li>\n\n\n\n<li>Integrar com praticamente todas as nuvens p\u00fablicas (e at\u00e9 on-premise);<\/li>\n\n\n\n<li>Automatizar ambientes de dev, staging, prod\u2026 com uma linguagem simples e de f\u00e1cil ado\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p id=\"1c114600-107e-8062-8aee-d62ebd7d6c63\">\u00c9 <strong>dif\u00edcil falar de IaC sem falar de Terraform<\/strong>. Ele democratizou a Infra como C\u00f3digo de um jeito que poucas ferramentas conseguiram.<\/p>\n\n\n\n<p id=\"1c114600-107e-80be-adf7-d27550d1f7f4\">Agora\u2026 <strong>pensa comigo por um instante.<\/strong><\/p>\n\n\n\n<p id=\"1c114600-107e-8082-83a6-c1dc31a81e92\">E <strong>se eu pudesse rodar um \u201cterraform\u201d<\/strong>, mas com um superpoder embutido \u2014 um que <strong>fica rodando em background<\/strong>, observando qualquer mudan\u00e7a manual e <strong>corrigindo todo drift automaticamente<\/strong>? Isso mesmo. Tipo um <em>&#8220;modo sentinela da infraestrutura&#8221;<\/em>.<br><\/p>\n\n\n\n<p id=\"1c114600-107e-804b-a8d4-fbd013ad385d\">E se eu te contar que j\u00e1 existe uma produto <strong>relativamente nova no mercado<\/strong> que faz exatamente isso?<\/p>\n\n\n\n<p id=\"1c114600-107e-80e4-baff-df8716acb208\">Uma solu\u00e7\u00e3o que <strong>usa o mesmo conceito de reconcilia\u00e7\u00e3o cont\u00ednua<\/strong> que a gente j\u00e1 conhece (e confia) no Kubernetes\u2026 mas aplicada \u00e0 <strong>infraestrutura como um todo<\/strong>?<\/p>\n\n\n\n<p id=\"1c114600-107e-802c-bcb1-d93e447b3292\">Ai que entra o Crossplane e segundo o projeto o Crossplane \u00e9 um framework para :<em> \u201cBuild 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.\u201d<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1c114600-107e-80f4-84a9-eb1df25ca482\">Crossplane: IaC com reconcilia\u00e7\u00e3o constante<\/h2>\n\n\n\n<p id=\"1c114600-107e-80d6-8e7d-f79fa02c1698\">O <strong>Crossplane<\/strong> \u00e9 basicamente um <em>controlador de Kubernetes<\/em> que permite gerenciar recursos de infra como <strong>EC2, RDS, VPCs, Redis, buckets S3, clusters de GKE, etc.<\/strong>, do mesmo jeito que voc\u00ea gerencia pods, deployments e services.<\/p>\n\n\n\n<p id=\"1c114600-107e-802d-ac68-ce472360a921\">Voc\u00ea escreve um YAML, define o que quer, aplica\u2026 e ele <strong>entra num loop eterno de reconcilia\u00e7\u00e3o<\/strong>, garantindo que aquilo que foi declarado <strong>\u00e9 o que est\u00e1 rodando<\/strong>.<\/p>\n\n\n\n<p id=\"1c114600-107e-80f5-b0a9-c9fec51b7626\">Se algu\u00e9m fizer uma mudan\u00e7a na m\u00e3o, o Crossplane detecta, compara com o que foi declarado e, sem alarde, reconcilia tudo sozinho \u2014 trazendo o ambiente de volta pro estado desejado, sem precisar de <code>terraform plan<\/code>, <code>apply<\/code> ou interven\u00e7\u00e3o manual. Tudo acontece de forma cont\u00ednua, silenciosa e autom\u00e1tica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1c114600-107e-80cb-b0f7-f35ced429260\">Crossplane vai substituir o Terraform?<\/h2>\n\n\n\n<p id=\"1c114600-107e-8001-a07a-f172d764a360\"><strong>N\u00e3o exatamente. <\/strong>O Terraform ainda \u00e9 incr\u00edvel, especialmente se voc\u00ea quer algo simples, rodando no pipeline, sem muita depend\u00eancia externa. Ele funciona bem e resolve problemas reais.<\/p>\n\n\n\n<p id=\"1c114600-107e-8012-bd46-d5565946d56a\">Mas se voc\u00ea j\u00e1 est\u00e1 num cen\u00e1rio mais avan\u00e7ado, onde:<\/p>\n\n\n\n<ul id=\"1c114600-107e-803f-91c9-cfb887c580e7\" class=\"wp-block-list\">\n<li>M\u00faltiplos times provisionam recursos ao mesmo tempo;<\/li>\n\n\n\n<li>Voc\u00ea precisa garantir isolamento, controle e padroniza\u00e7\u00e3o;<\/li>\n\n\n\n<li>Voc\u00ea quer detectar e <strong>corrigir drifts automaticamente<\/strong>;<\/li>\n\n\n\n<li>Ou est\u00e1 100% mergulhado no ecossistema Kubernetes\u2026<\/li>\n<\/ul>\n\n\n\n<p id=\"1c114600-107e-8029-a0ed-d67d77dbc5fd\">A\u00ed, pode ser que vale muito a pena dar uma chance ao <strong>Crossplane<\/strong>. Ele \u00e9 um novo jeito de pensar <strong>infraestrutura como plataforma<\/strong> \u2014 e n\u00e3o s\u00f3 como \u201cum c\u00f3digo que sobe VM\u201d.<br><\/p>\n\n\n\n<p id=\"1c114600-107e-80ae-9cd4-f60198e8e3cf\">Pela minha experi\u00eancia, quem vem de APP costuma se dar muito melhor com o Crossplane do que com o Terraform. J\u00e1 o pessoal de Infra, em geral, se sente mais confort\u00e1vel no mundo Terraform do que tentando entender esse tal de &#8220;YAML com controlador reconciliando recurso&#8221;. Enquanto eu escrevia isso aqui, pensei em pelo menos uns oito colegas que se encaixam direitinho nessa divis\u00e3o. \ud83d\ude02<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1c114600-107e-8095-9228-f89ca2a2433b\">Conclus\u00e3o<\/h2>\n\n\n\n<p id=\"1c114600-107e-809b-a6b3-fe645b8e84fd\">No fim das contas, o <strong>Terraform continua tendo um baita valor<\/strong>. \u00c9 maduro, est\u00e1vel, bem aceito no mercado, e atende a maioria dos cen\u00e1rios com efici\u00eancia. Se voc\u00ea trabalha com infraestrutura, provavelmente j\u00e1 resolveu muita dor com ele \u2014 e vai continuar resolvendo por um bom tempo.<\/p>\n\n\n\n<p id=\"1c114600-107e-80c3-ac26-d8c35af9cbb7\"><strong>Mas estudar o Crossplane tem se mostrado um baita diferencial.<\/strong> Ele traz um novo olhar sobre como gerenciar infraestrutura de forma cont\u00ednua, confi\u00e1vel e com aquela cereja do bolo: a capacidade de <strong>reconcilia\u00e7\u00e3o autom\u00e1tica<\/strong>. E isso, num mundo onde ambientes que possuem muita gente operando e colocando a m\u00e3o, <strong>vale ouro<\/strong>.<\/p>\n\n\n\n<p id=\"1c114600-107e-8079-bf05-f77929cba5d7\">Talvez a resposta n\u00e3o seja abandonar uma ferramenta pela outra, mas sim <strong>entender onde cada uma brilha<\/strong>, e como elas podem at\u00e9 coexistir no seu ecossistema.<\/p>\n\n\n\n<p id=\"1c114600-107e-8031-a425-facb42b74d77\">Como eu sempre digo no CaD, nas newsletters e at\u00e9 nos v\u00eddeos l\u00e1 do canal do youtube: <strong>o segredo nunca est\u00e1 no que a tecnologia <\/strong><em><strong>pode<\/strong><\/em><strong> fazer, mas sim no problema que voc\u00ea precisa resolver \u2014 e em como escolher a tecnologia <\/strong><em><strong>certa<\/strong><\/em><strong> pra isso.<\/strong> Ferramenta boa \u00e9 aquela que faz sentido no seu contexto.<br><br>E a\u00ed, o que voc\u00ea acha disso tudo? J\u00e1 usou Terraform ou chegou a brincar com o Crossplane? Como foi sua experi\u00eancia? Te ajudou? Deu dor de cabe\u00e7a? Me conta \u2014 ser\u00e1 muito legal saber mais sobre voc\u00ea.<\/p>\n\n\n\n<p id=\"1c114600-107e-800c-9d4b-d6ddb64f19f6\"><br>\ud83d\udea8Se curtiu esse conte\u00fado e quer aprender mais sobre arquitetura de software em um n\u00edvel bem mais aprofundado, venha fazer parte da<br><strong>Comunidade de Arquitetura Descomplicada (CaD)<\/strong>! Saiba mais em <a href=\"https:\/\/mugnos-it.com\/pt\/cad\/\">https:\/\/mugnos-it.com\/cad\/<\/a> \ud83d\ude80\ud83d\udea8<\/p>\n\n\n\n<p id=\"1c114600-107e-8015-8274-d5fd1434fc97\">At\u00e9 a pr\u00f3xima!<br><\/p>\n\n\n\n<p id=\"1c114600-107e-803d-bfb1-ff422dc927d3\">Abra\u00e7os,<br>Douglas Mugnos<br>MUGNOS-IT<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b25717 e-flex e-con-boxed e-con e-parent\" data-id=\"2b25717\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Fala, galera! \ud83d\udc4b T\u00e1 a\u00ed um algo engra\u00e7ado\u2026 Esses dias, sem querer, acabei caindo num v\u00eddeo antigo MEU no YouTube, de uns 5 anos atr\u00e1s. E l\u00e1 estava eu, todo empolgado, explicando como o Terraform era interessante, mas \u2014 e aqui vem a parte curiosa \u2014 incentivando o uso direto dos SDKs em alguns cen\u00e1rios. [&hellip;]<\/p>","protected":false},"author":3,"featured_media":1898,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/04\/08.-Infra-como-Codigo-Terraform-e-ainda-a-melhor-escolha-.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/comments?post=1511"}],"version-history":[{"count":4,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1511\/revisions"}],"predecessor-version":[{"id":2037,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1511\/revisions\/2037"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/1898"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=1511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=1511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=1511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}