Infraestrutura como Código

Vamos falar sobre um conceito que hoje é uma prática chave para o DevOps: a Infraestrutura como Código, também conhecida como IaC (sigla em inglês para Infrastructure as Code).

Veremos o que ela significa, quais são seus benefícios e algumas ferramentas que podem ser utilizadas para implementar essa prática.

O que é:
IaC significa escrever código para gerenciar configurações e automatizar provisionamento de infraestrutura, utilizando boas práticas do desenvolvimento de software como: controle de versão, teste, design patterns, entregas pequenas, etc. Esse código pode ser escrito em diversos formatos, dependendo da ferramenta de IaC utilizada.

 Benefícios:

  • reusabilidade: o mesmo código pode ser utilizado para gerar múltiplos ambientes. Por ex.: se for necessário criar um novo ambiente para realização de testes, basta executar o código e os recursos necessários serão provisionados.
  • consistência de configuração: a infraestrutura pode ser versionada (por ex. pelo git), garantindo que todos os ambientes gerados em uma versão tenham as mesmas configurações. Isso é muito importante para a equipe de desenvolvimento pois garante que todos os desenvolvedores possam codificar a partir de uma infraestrutura igual.
  • extensível: pode ser facilmente adicionado mais códigos para estender os recursos.
  • testável: o código pode ser testado e comparado com o comportamento esperado, com isso aumentando a confiabilidade.
  • documentação: o código pode ser documentado, facilitando o entendimento da infraestrutura. 
  • auditável: todas as mudanças no código ficam registradas no sistema de controle de versão, permitindo identificar quais foram as alterações, quando e quem fez essas alterações. 
  • rollback da infraestrurura: é possível reverter qualquer alteração na infraestrutura, simplesmente voltando a versão.
Ferramentas:

Existem diversas ferramentas de IaC disponíveis. Algumas das principais são:

  • Terraform: ferramenta desenvolvida pela HashiCorp, lançada em 2014. Permite a configuração em uma linguagem de alto nível chamada HCL (HashiCorp Configuration Language) ou via json. Permite provisionar os recursos em diversos provedores de infraestrutura diferentes, tais como AWS (Amazon Web Service), Azure (da Microsoft), GCP (Google Cloud Plataform), OpenStack, etc.
  • AWS CloudFormation: ferramenta da Amazon para os serviços de nuvem da AWS.
  • Deployment Manager: serviço da Google para automatizar a criação e gerenciamento de recursos do Google Cloud Plataform.
Fontes:
https://medium.com/@mitesh_shamra/infrastructure-as-a-code-with-terraform-e7021bf28d7d
https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code

Comentários

Olá pessoal,

Vocês não me convidaram para ser coautor. Favor me convidarem. Quando eu aceitar, tornem-me Administrador do blogue.

Bons caminhos,

R

Postagens mais visitadas deste blog

Apresentação do GT5 - Plataformas em Nuvem

Conceitos Importantes - Parte 2: Tipos de Nuvem: Pública, Privada, Híbrida