Atualmente o termo DevOps se popularizou no mundo da tecnologia. Sua definição se baseia simplesmente na união de desenvolvimento com operações. E dentre as ferramentas que compõem estes processos integrados está a infraestrutura como código. Esse termo é uma metodologia de processos de provisionamento de infraestrutura tecnológica usada para que as respectivas equipes. As de DevOps principalmente. O objetivo é que elas possam gerenciar e provisionar infraestrutura por meio de código de forma programática. Ao invés de ter que recorrer ao acesso físico ao hardware ou até mesmo através de portais ou ferramentas de configuração.
Resumindo, a abordagem Infraestrutura como Código nada mais é do que a entrega de uma infraestrutura ágil. Utilizando-se de codificação simples e objetiva.E sem a necessidade de diversos passos e processos para se preparar um ambiente, sem perder o poder de controle, segurança, qualidade e disponibilidade.
CloudFormation
A Amazon Web Services (AWS) possui um serviço chamado CloudFormation que provisiona sua infraestrutura na nuvem através de um código em formato JSON ou YAML. Caso o usuário não possua experiência com esses modelos existe o CloudFormation Designer: uma ferramenta gráfica que o auxilia a criar e modificar seus modelos de template.
A vantagem de ter sua infraestrutura baseada em código se dá através da possibilidade de colocar um ambiente em produção com apenas um clique. Bem como replicar o mesmo quantas vezes for necessário. Por exemplo: uma aplicação precisa estar em mais de uma região. Neste caso é necessário pegar seu template e aplicar no CloudFormation na região desejada. Assim sua infraestrutura estará pronta em minutos! Dessa forma não será preciso convocar um grande time de TI para subir a infraestrutura manualmente. Além de ganhar tempo e reduzir possíveis falhas.
Representação do CloudFormation
No CloudFormation também temos o conceito de modelo que são os templates nos mesmos formatos. Eles descrevem os recursos da AWS que são necessários para fazer a implantação da aplicação. E as pilhas (stack) são o conjunto de recursos descrito nos modelos. Elas podem ser criadas, atualizadas e excluídas com facilidade!
Sabemos que é preciso realizar um upgrade na infraestrutura à medida que nosso negócio cresce. Por este motivo é muito importante ter um controle de versões. Para que quando ocorra algum problema seja possível identificar com mais rapidez o que foi feito. E assim voltar para uma versão estável do ambiente assim deixando-o disponível novamente sem prejudicar os usuários. Lembrando que ao criar ou atualizar sua pilha o CloudFormation avisa se houver algum erro.
Agora você deve estar se perguntando sobre o valor para ter essa automatização, eis uma boa notícia: não há custo para usar o CloudFormation. Contanto que sejam recursos da AWS. Serão cobrados apenas os recursos que forem provisionados com instâncias EC2, Elastic Load Balancing etc.
Ansible
Além da ferramenta provida para a AWS existem também algumas ferramentas que são adotadas pela comunidade para o mesmo objetivo. O Ansible que é uma ferramenta de automação de código aberto usada para configurar servidores, instalar softwares e executar uma alta espécie de tarefas de TI a partir de uma localização central. O Ansible é operado hoje pela RedHat e tem todo o suporte desta grande empresa. Trazendo uma grande confiabilidade à ferramenta.
É um mecanismo sem agente de um para muitos, onde todas as instruções são executadas a partir de uma máquina de controle que se comunica com clientes remotos preferencialmente em SSH, embora outros protocolos também sejam suportados.
Além disso, o Ansible também provê uma linguagem simples de se escrever em YAML, ou seja, de fácil interpretação para suporte, desenvolvedores e gerentes de TI.
No início da ferramenta, somente rodava em Linux Core. Porém, agora também roda no Windows sem precisar de formas alternativas para funcionar.
A vantagem mais clara de utilizar uma ferramenta como o Ansible é que não há limitação à plataforma de nuvem que a ferramenta está aplicada, podendo, com alguns ajustes, portar o código para ser aplicado em uma nuvem diferente, ou mesmo facilitar a migração do seu workload caso esse seja seu objetivo.
O ponto negativo no entanto está na necessidade de se prover a infraestrutura para operar o Ansible. Tendo que lidar com a gestão tanto da parte de sistemas operacionais quanto de software, adicionando uma camada de trabalho extra para operar o serviço.
Até mais!
Para mais artigos sobre o mundo da AWS confira em nosso blog!