Escrito por Diógenes Serpa Konorath,
5 minutos de leitura
Infrastructure as Code
Conheça mais sobre IaC, processo que aumenta a produtividade e torna o processo de deploy da infra mais confiável, rápido e controlado.
Certamente, você já ouviu ou até utilizou algumas ferramentas que estão em alta entre os desenvolvedores, como Terraform, Packer e Ansible, ou já utilizou scripts para subir máquinas nos principais provedores, como AWS, GCP ou Azure. Mas, você sabe o conceito que está por trás desses processos e ferramentas? Vem comigo e vamos falar um pouco sobre o que é o IaC.
Computação em Nuvem
A computação em nuvem mudou não só a maneira de pensar e desenvolver software, mas também o modo de prover infraestrutura. As limitações de ambientes On-premises, como custo do hardware, instalação manual, hardware desatualizados e manutenção, fizeram com que houvesse uma grande migração de aplicações para provedores de infraestrutura, como Azure, GCP e AWS. O fornecimento de serviços de computação, incluindo servidores, armazenamento, bancos de dados, rede, software, possibilitou que as aplicações pudessem ser desenvolvidas mais rapidamente e com uma maior escalabilidade, uma vez que a infraestrutura em nuvem pode ser alterada de acordo com as necessidades da aplicação e da empresa.
Relação com DevOps
Além disso, com o mundo da tecnologia adotando cada vez mais a cultura DevOps, houve um maior envolvimento de desenvolvedores na infra e times de operação com o desenvolvimento. Desse modo, a necessidade de provisionar máquinas com uma maior velocidade e escalabilidade torna-se essencial para aproveitar a máxima produtividade. Contudo, acessos dos times aos provedores, consoles e afins podem ser um problema para gerenciar, de segurança ou de billing, uma vez que não há um controle do que está sendo criado; por outro lado, centralizar em um time de operação a criação de infra pode gerar um gargalo para o rollout das aplicações, dependendo da demanda.
Afinal o que é o IaC
Nesse contexto, surge um novo processo de gerenciamento e provisionamento de infraestrutura que utiliza arquivos de configuração e codificação descritiva de alto nível para automatizar o processo de provisionamento de infra – em vez de utilizar processos manuais, o que elimina a necessidade de componentes físicos. Esse modo de provisionamento é chamado de Infrastructure as Code ou IaC. Ao extinguir vários trabalhos manuais, esse tipo de processo aumenta a produtividade e torna o processo de deploy da infra mais confiável, rápido e controlado. Por meio do controle de versões, temos uma maior rastreabilidade, tornando mais fácil a manutenção e garantindo o estado do ambiente provisionado.
Benefícios do IaC
- Velocidade de entrega: De forma geral, podemos automatizar a criação de infra, removendo a necessidade de processos manuais e diminuindo muito o tempo de provisionamento da infra.
- Redução de erros: Com a automação, podemos remover o “fator humano”. Dessa forma, esquecimentos ou algum outro comportamento diferente causado por falhas humanas passam a não existir, pois o comportamento será sempre o mesmo, de acordo com o código.
- Ganhos operacionais: Com o processo de provisionamento mais rápido e automático, podemos alocar recursos e times para outras funções, ganhando tempo e “braço” para frentes que, sem o IaC, não seriam priorizadas.
- Redução de custos: Como diz o ditado, tempo é dinheiro. Além disso, inúmeros chamados e retrabalho também têm custo. Automação da infra, redução de erros e outros benefícios citados anteriormente impactam custos, uma vez que fatores que geravam custos antes deixam de existir com o IaC.
Trade-offs
Como tudo na TI, o IaC não é bala de prata, ou seja, não é uma solução mágica para todos os casos, sequer eliminam totalmente as falhas. Segundo a Gartner Consultoria, em 2023, 99% das falhas de segurança na nuvem serão por erros de configuração do cliente; por isso, devemos desde o provisionamento da infra pensar e utilizar técnicas de configuração e segurança. Além da segurança, é importante ressaltar que, assim como outros conceitos de DevOps, o IaC exige uma certa maturidade da empresa e dos times. É sempre importante avaliar o momento em que se está antes de investir em novas ferramentas e tecnologias. IaC não garante ganho de eficácia e eficiência porque, por si só, não elimina erros de engenharia de software ou a má gestão de recursos computacionais e de segurança da informação.
Conclusão
O objetivo deste artigo foi introduzir e apresentar alguns conceitos que, no meu ponto de vista, são importantes para nós, desenvolvedores. Além de escrever código, precisamos pensar no provisionamento de nossas aplicações. Infrastructure as Code e as ferramentas para utilizá-lo podem aproximar a equipe de desenvolvimento, trazer visibilidade, alta disponibilidade e maximizar o trabalho da equipe. Portanto, adotar o IaC e a cultura DevOps pode ser um desafio, mas certamente trará resultados.
Referências
Gartner. Gartner, 2021. Cybersecurity Conferences
Hüttermann M. (2012) Infrastructure as Code. In: DevOps for Developers. Apress, Berkeley, CA.
Morris, Kief. Infrastructure as Code: Managing servers in the cloud. O’Reilly Media, Inc., 9 de jun. de 2016.