Quando pensamos na palavra "infraestrutura" no contexto de softwares e aplicativos, grande parte dos desenvolvedores podem entrar em pânico, se sentirem confusos e imaginar todas as possibilidades que podem surgir. Desde a decisão de qual banco de dados utilizar até mesmo a versão do Linux mais otimizada para o projeto. Esse sentimento apenas aumentou com o advento das nuvens (clouds) após os anos 2000, onde essas oportunidades de recursos aumentaram com as diversas provedoras no mercado.
Logo, viu-se a necessidade de termos algum facilitador para toda essa complexidade, que pudesse trazer rapidez, segurança e um gerenciamento simplificado de todos esses recursos. Com a difusão da cultura DevOps e o crescente aumento na complexidade das tarefas de um administrador de sistemas, surge o conceito de Infraestrutura como Código.
Mas afinal de contas o que é a Infraestrutura como código?
De forma geral e direta, a Infraestrutura como Código é uma maneira de automatizar, gerenciar, documentar e criar os recursos de uma aplicação. Com as ferramentas de IaC (Infra as Code em inglês), temos a comodidade da automatização, onde, por meio de um documento de texto (geralmente em alguma linguagem de código), podemos criar tudo o que nossa aplicação necessita sem necessitar de uma parte burocrática em que devemos entrar em uma ou diversas plataformas para criar tudo o que é necessário. Com ferramentas nesse estilo, não só podemos fazer tudo por meio de linguagens de código, como também podemos modularizar a criação para agilizar e escalar projetos futuros.
Além de toda essa automatização, existem dois outros pontos igualmente importantes, sendo eles o gerenciamento e a documentação. Por ser feito em uma linguagem de código, a própria criação de recursos serve como uma documentação, onde podemos encontrar o que foi criado, como foi criado, onde se encontra, configurações (como de segurança ou custos) e quem criou. Todos esses pontos geram uma agilidade maior para qualquer projeto, além de proporcionar maior segurança, alinhamento com o time e possibilidade de escalabilidade.
Exemplos de algumas ferramentas
Temos diversas ferramentas que visam todos esses benefícios e seguem uma cultura de DevOps, dentre alguns exemplos mais conhecidos:
Terraform
Terraform é uma solução open-source extremamente popular para gerar, gerenciar e versionar infraestrutura. Com a utilização de sua própria linguagem ou JSON, podemos automatizar a criação e gerenciamento de diversos recursos, incluindo cloud providers como Azure, AWS e GCP, ferramentas de observabilidade como Grafana, containers e muitos outros recursos.
Ansible
Pulumi
Conclusão:
Dores de cabeça com onboarding de novos integrantes do seu time, falta de padronização na criação de recursos, problemas em ter múltiplos cloud providers e ter que acessar diversas máquinas virtuais para ter controle de suas aplicações: tudo isso e muito mais se tornam passado com ferramentas de Infraestrutura como código.
A cultura DevOps, em conjunto com tais ferramentas, nos dá a possibilidade da criação de um produto mais sólido, organizado, altamente gerenciável e escalável, tudo isso em uma linguagem de fácil entendimento entre desenvolvedores.
Tendo em vista tais benefícios, não há um motivo para não utilizar pelo menos uma ferramenta de IaC em seu projeto.
Em um próximo artigo abordaremos mais sobre a cultura DevOps, suas qualidades para a vida de um time e ferramentas como Terraform.
Fontes:
https://www.redhat.com/pt-br/topics/automation/what-is-infrastructure-as-code-iac
https://learn.microsoft.com/pt-br/devops/deliver/what-is-infrastructure-as-code
https://fullcycle.com.br/terraform-e-ansible-uma-grande-diferenca-na-sua-carreira/
https://www.atlassian.com/br/microservices/cloud-computing/infrastructure-as-code
Imagens:
Designed by vectorjuice / Freepik