O que é Infraestrutura como Código (IaC)?

Anne Glienke
3 min readApr 23, 2021

Há algum tempo tive meu primeiro contato com Infraestrutura como Código em um Bootcamp de Engenharia de Dados. Lá eu aprendi um pouco sobre AWS CloudFormation (e CDK), mas, pra ser sincera, não entendi direito os benefícios de codar infraestrutura quando a gente pode só dar alguns cliques no console e fazer a mesma coisa. Agora, trabalhando na A3Data, comecei a, de fato, usar IaC e tudo foi fazendo mais sentido. Por isso resolvi escrever esse post bem basicão contando um pouco do que eu aprendi até agora.

Toda contribuição é bem-vinda. Sinta-se à vontade para complementar e questionar o que ler por aqui.

O que é Infraestrutura como Código (Infrastructure as Code/IaC)?

Pra falar de um jeito simples e objetivo, Infraestrutura como Código é um forma automatizada de provisionar, configurar e gerir componentes de infraestrutura por meio de código, em vez de por procedimentos e processos manuais. Esse código pode ser escrito em alguns formatos específicos, como JSON, HashiCorp Configuration Languages (HCL) e YAML. E existem algumas ferramentas pra ajudar a gente a fazer isso, como Terraform, AWS CloudFormation e outras que eu vou mencionar adiante.

Quais os benefícios da IaC?

Entre os principais benefícios da IaC, estão:

  • O aumento da consistência e da agilidade no provisionamento, configuração e gestão da infraestrutura.
  • O código é simples de entender, replicar e alterar, funcionando também como documentação. Além disso, por sua fácil reprodução, aumenta a possibilidade de escala.
  • Esse código pode ser versionado em algum repositório, gerando mais segurança.
  • Permite a automatização de processos, o que diminui o retrabalho, traz mais eficiência operacional e reduz o erro humano.

Que ferramentas posso usar para trabalhar com IaC?

As ferramentas mais populares pra se trabalhar com IaC são Terraform e AWS CloudFormation, mas existem muitas outras como Ansible, Azure Resource Manager, Google Cloud Deployment Manager, Chef, Otter, Puppet, etc.

No momento eu estou trabalhando com Terraform, que é muito legal, em primeiro lugar, porque é uma ferramenta open source que pode ser usada com vários provedores, como AWS, Azure, GPC e diversos outros (diferente do AWS CloudFormation, minha primeira experiência com IaC, que é integrado à AWS e só funciona por lá). Ele também é relativamente fácil de usar (mesmo pra iniciantes como eu), com uma notação simples (HCL, parecida com JSON).

Nas palavras da HashiCorp, desenvolvedora e mantenedora do Terraform:

“O Terraform é usado para criar, gerenciar e atualizar recursos de infraestrutura, como máquinas físicas, VMs, comutadores de rede, contêineres e muito mais. Quase qualquer tipo de infraestrutura pode ser representado como um recurso no Terraform.”

Caso você também não entenda muito das diferenças entre uma ferramenta e outra, esse artigo faz um comparativo bem bacana: https://www.nexastack.com/en/blog/best-iac-tools.

Dica bônus

A3Data usou toda sua grande experiência em construção de projetos de análise de dados e infraestrutura em nuvem para desenvolver o Rony. O Rony é um framework open source que ajuda Engenheiros de Dados a desenvolver um código mais organizado e construir, testar e implantar pipelines de dados com mais rapidez.

O Rony usa Terraform pra provisionar infraestrutura na AWS (IAM, S3, Glue Crawler, Lambda, CloudWatch), mas faz muito mais que isso e tem facilitado muito a minha vida por aqui. Vale uma checada!

--

--