Explorar a Infraestrutura como Código
A Infraestrutura como Código é um componente integral das práticas modernas de desenvolvimento e operações de software. Envolve o uso de métodos de programação para provisionar e gerenciar serviços de infraestrutura. A IaC é benéfica em ambientes baseados em nuvem, como o descrito no cenário de exemplo. No entanto, qualquer organização que dependa de ativos de computação para sua receita pode aproveitar seus recursos. Nesta unidade, você aprenderá sobre os principais princípios da IaC e as técnicas mais comuns de implementação desses princípios.
Quais são os princípios da IaC?
Embora as implementações individuais de IaC possam diferir significativamente, todas elas tendem a seguir um conjunto de princípios comuns, incluindo:
- Controle de versão: a IaC define componentes de infraestrutura, incluindo recursos de computação, armazenamento e rede usando código. Esse código normalmente reside em um VCS, o que facilita o acompanhamento de alterações na infraestrutura da mesma maneira que o acompanhamento de versões de software.
- Sintaxe declarativa: a IaC depende da sintaxe declarativa para descrever o estado desejado da infraestrutura. Isso contrasta com uma sintaxe imperativa mais tradicional, que envolve a escrita de código que define um procedimento passo a passo que leva a esse estado. A abordagem declarativa tende a ser mais eficiente por muitos motivos. Por exemplo, ele depende da inteligência da plataforma que hospeda os componentes de infraestrutura, minimizando a possibilidade de erros de programação ou ineficiências. Além disso, garante a idempotência.
- Idempotência: esse termo designa a característica de uma ação em que o resultado é sempre o mesmo, independentemente do número de vezes que a ação é executada. Como a sintaxe declarativa descreve apenas o estado final, usá-lo garante que cada execução de código sempre produzirá o mesmo resultado. Isso garante a consistência do ambiente de destino e impede a possibilidade de efeitos colaterais não intencionais de alterações intermediárias.
- Automação: o uso de código facilita o provisionamento e a configuração automatizados, aumentando a eficiência, a consistência e a escalabilidade. Isso também elimina o impacto potencial de erros manuais.
- Integração de CI/CD: a IaC pode ser (e frequentemente é) integrada à CI/CD, gerando uma estratégia abrangente de entrega de software combinando o provisionamento de infraestrutura, com build, teste e implantação de aplicativos em uma sequência contínua e totalmente automatizada.
- Reutilização: a IaC promove o uso de módulos de código reutilizáveis, de acordo com as melhores práticas de programação. Isso facilita o desenvolvimento de bibliotecas de software que consistem em blocos de construção de infraestrutura padronizados que podem ser compartilhados entre projetos. Como resultado, as organizações se beneficiam de maior consistência, manutenção simplificada e duplicação minimizada de esforços.
Como implementar a IaC?
A implementação da IaC começa com a identificação de requisitos de infraestrutura, incluindo componentes de computação, armazenamento e rede. Os detalhes dependem em grande parte da plataforma que hospeda essa infraestrutura e podem diferir significativamente dependendo, por exemplo, do uso de ambientes de nuvem pública ou privada.
A escolha da plataforma também terá um impacto na escolha da tecnologia e das ferramentas de IaC. Por exemplo, cada provedor de nuvem pública oferece seu próprio conjunto de recursos de IaC. No caso do Microsoft Azure, esses recursos são baseados em modelos do ARM (Azure Resource Manager) e do Bicep. Há também soluções que oferecem suporte multinuvem, como o Terraform. A escolha da ferramenta determina o tipo de arquivos e a estrutura de diretório correspondente de seus projetos. Isso deve permitir que você configure repositórios no sistema de controle de versão de sua escolha. Os repositórios VCS facilitam o acompanhamento de alterações de infraestrutura, a colaboração intra e entre equipes, a automação para implantações e reversões, bem como a integração com fluxos de trabalho de CI/CD.
Com o repositório em vigor, você deve começar a criar uma biblioteca de códigos IaC, que consiste em módulos que representam blocos de construção de suas futuras implantações de infraestrutura. Esses blocos podem, por exemplo, representar servidores individuais, redes ou armazenamentos de dados, que você pode misturar e corresponder de maneira arbitrária para construir soluções de vários recursos.
A próxima etapa normalmente envolveria a integração do ambiente IaC com fluxos de trabalho de CI/CD. Normalmente, isso envolveria o uso do mesmo conjunto de repositórios, facilitando a combinação da implantação de infraestrutura com a criação, teste e entrega do software hospedado nessa infraestrutura. No entanto, a integração deve se estender à aplicação de práticas de CI/CD às suas implantações de IaC. Em particular, você deve garantir que, assim como com CI/CD, utilize ambientes de desenvolvimento e preparo, automatize o teste, implemente loops de monitoramento e comentários e proteja corretamente seu código de infraestrutura e os processos de IaC.