Por que utilizar Infraestrutura como Código?
No mundo de DevOps é muito comum ouvir falar sobre Infra as Code ou (Infraestrutura como Código). Mas por que eu deveria adotar em minha empresa?
O que é?
Infra as Code é uma prática onde definimos recursos computacionais e de nuvem em código fonte, como se fosse um software. Isso quer dizer que podemos aplicar as mesmas práticas de software na nossa infraestrutura, como builds, testes e outras práticas de Continuous Delivery.
Quais são os benefícios?
O primeiro benefício e um dos mais importantes é uma implantação consistente.
Em cenários onde existem vários ambientes que são implantados de forma manual, e os responsáveis pela implantação podem ser diferentes, como uma equipe de implantação ou uma empresa responsável pelas implantações é necessário escrever um documento de Gestão de Mudanças(GMUD) como todas as instruções necessárias para a criação do novo recurso.
E esse é um ponto sensível, pois, existem muitas variáveis que não podem ser controladas, como por exemplo:
- Ao escrever o documento, alguns passos podem ter sido esquecidos
- Não existe nenhuma garantia de que a implantação manual será realizada da mesma maneira
- Também não há como ter certeza que serão seguidas todas as instruções
Ao utilizar Infraestrutura como código, não há como esquecer algum passo tanto ao escrever quanto ao executar, ja que a implantação é realizada de forma automatizada e idêntica em todos os ambientes, e caso falte algo, o problema poderá ser identificado antecipadamente em um ambiente de validação, como desenvolvimento, por exemplo.
Alterações auditáveis
Existem algumas empresas que necessitam de um maior nível de governança corporativa, seja por possuírem capital aberto na bolsa de valores, e isso trás mais garantias ao investidor, seja por seus business lidar com áreas críticas sujeitas a fraudes, como financeiras e seguradoras, por exemplo.
Essas exigências demandam por uma verificação constante dos processos realizados dentro das companhias, como por exemplo, como foi realizada a implantação de determinado software.
Quando utilizamos não apenas infraestrutura como código, mas o conjunto de práticas de DevOps, temos documentados todos os processos realizados, não apenas em um documento com instruções de como deveria ter sido realizado de forma manual, mas sim um documento com as instruções que realmente foram executadas por uma automação.
Redução de riscos
Como já mencionei acima, ao executar um deploy de forma manual, não existe nenhuma garantia que a execução será realizada de forma correta. Ao executar o script em todos os ambientes da mesma maneira, o risco diminui e os erros são encontrados antecipadamente.
Com infraestrutura como código, ao adicionar todo o processo de implantação em um pipeline se torna muito mais simples, sendo necessário apenas apertar um botão, e todo seu ambiente será criado de forma padronizada.
Eficiência na liberação de novas funcionalidades
Qual sua frequência de deploy? A cada quanto tempo em média você entrega uma versão em produção? 11,7 segundos.
Esse é o tempo médio entre deploys realizados na Amazon no ano em que foi migrado para a AWS. Isso da mais de 7000 deploys por dia! Não há dúvida que se essas implantações fossem manuais, seria praticamente impossível chegar a esse número. Claro que este não é o único fator que permite alcançar milhares de deploys diários, mas é uma das bases para que esse objetivo seja alcançado e em conjunto com outras práticas como microserviços, infraestrutura imutável, etc, o lead time para liberação de produtos é reduzido drasticamente, e isso significa que todo o valor investido ao desenvolver o software terá um retorno mais rápido.
Conclusão
Como dizem por aí, uma andorinha só não faz verão, portanto utilizar Infraestrutura como código, e apenas um degrau para podermos avançar nas práticas de DevOps, mas é um passo muito importante para alcançar uma maturidade maior em nossos deploys.