Tecnologia

Computação em nuvem nos trás muitas vantagens, uma vez que bastam alguns cliques para conseguirmos provisionar um recurso na nuvem. Entretanto, à medida que os projetos tomam corpo, esses poucos cliques se tornam cansativos e um obstáculo para o crescimento do projeto.

Imagina repetir tais cliques todas as vezes que você precisar criar um novo ambiente, ou precisar criar um novo projeto.

Pois é, nesse caso, você precisaria repetir manualmente todos os procedimentos para criar seus recursos na nuvem.

E pior, imagina errar um parâmetro? Basta configurar um tamanho de máquina errado ou escolher as configurações erradas para criar um ambiente diferente do que você precisa, e pronto, temos um projeto com falhas.

E como se não bastasse, quanto tempo levará para você descobrir a falha? E quanto tempo levará para corrigir?

Pois bem. Pensando nessas dores, surgiram um conceitos muito interessantes que a cada ano mais empresas estão aderindo.

É o que chamamos de Infrastructure As Code, ou na sua abreviação, IaC

Mas afinal, o que significa Infrastructure As Code (IaC)?

Infra as Code utiliza uma linguagem de alto nível (geralmente seguindo o padrão .json ou .yaml) para descrever as características de cada recurso que queremos criar em nossa nuvem. Estes arquivos costumam ser chamados de templates.

Dessa forma, da mesma maneira que você ‘versiona’, coloca regras e automaticamente faz deploy de aplicações, o mesmo pode ser feito com toda a sua infraestrutura.

Isso porque sua infraestrutura fica armazenada em formato de código e sempre que uma alteração é necessária, é possível utilizar alguma ferramenta de versionamento, como o git, por exemplo, para gerenciar suas mudanças.

Inclusive, esse gerenciamento também pode ser feito com o nosso git flow, o Z-Flow. Quer conhecer mais? Clique aqui!

Quais são as vantagens de utilizar Infrastructure As Code (IaC) ?

  • Padronização de ambientes: Com a infraestrutura “escrita”, seu time não fica sujeito a erros quando criar diversos ambientes.
  • Configuração de regras: Com a possibilidade de alguém revisar sua infraestrutura antes de provisioná-la, você pode configurar regras de revisão para que sua infraestrutura siga um determinado padrão. Dessa forma, você pode barrar, por exemplo, um determinado template que não contenha tags, que não seja aprovado.
  • Manter um histórico de atualizações: Com a possibilidade de versionar sua infraestrutura, automaticamente você mantém um histórico de atualizações e consegue rastrear de maneira mais fácil alguma modificação na sua infraestrutura.
  • Automatização de processos: Seu time não precisa perder tempo criando toda a infraestrutura de novos projetos. Projetos parecidos podem reaproveitar templates e, modificando apenas alguns parâmetros, uma nova infraestrutura é criada rapidamente.
  • Parametrização: Templates possibilitam parametrizar nomes, tags, links entre recursos e até mesmo identificar se recursos serão criados ou não. Isso flexibiliza a maneira de criar templates para desenvolver infraestruturas adequadas à sua necessidade. Dessa forma, um mesmo template pode servir a diferentes necessidades apenas alterando os seus parâmetros. A criação contínua padronizada e organizada, mas a parametrização adequa o template ao que for específico para cada ambiente. Vamos a alguns exemplos:
  • Dois ambientes iguais, mas um com os recursos criados nos Estados Unidos e outro no Brasil.
  • Um mesmo template que cria uma máquina virtual, mas no ambiente de desenvolvimento o tipo da máquina é mais simples do que em produção.

Como começar a utilizar Infrastructure As Code (IaC) ?

Existem diversas ferramentas que nos ajudam a criar templates, quando o assunto é Infrastructure As Code (IaC).

Os provedores em nuvem possuem serviços próprios para criação de templates, como é o caso do CloudFormation da AWS.

Também existem ferramentas genéricas que servem como template para diversos provedores, como é o caso do Terraform.

Qual a aderência de Infrastructure As Code (IaC) no mercado ?

Infrastructure As Code (IaC) é mais uma das inúmeras possibilidades dentro do mundo DevOps, setor que tem crescido bastante nos últimos anos.

De acordo com uma pesquisas, muitas empresas já aderiram à alguma ferramenta de IaC ou planejam aderir. 

Afinal, com tantos benefícios, por que seu time ficaria de fora de incorporar essa ferramenta em seu dia a dia?

O que a Zappts tem feito quando o assunto é Infrastructure As Code (IaC)?

Aqui da Zappts nós já aderimos ao uso de templates em 100% dos nossos projetos.

Os templates são parametrizados de forma que possamos facilmente fazer o deploy de uma mesma infraestrutura para múltiplos ambientes. 

Quer ver um exemplo real de como isso é feito? Vem com a gente :)

Aqui nós costumamos utilizar a ferramenta CloudFormation, serviços da AWS para provisionamento de recursos. 

Como funciona a ferramenta CloudFormation da AWS? 

Vamos lá!

O CloudFormation exige um arquivo, que pode ser escrito em .json ou em .yaml. A documentação completa dos recursos você encontra aqui. 

Vamos analisar a anatomia de um template:

AWSTemlateFormatVersion: '2010-09-09'
Description: 'Example Template'

Parameters:
 Stage:
   Type: string
   Default: dev

Resources:
 DynamoResourceExample:
   Type: AWS::DynamoDB::Table
   Properties:
     TableName: !Sub ${Stage}_table
     KeySchema:
       - AttributeName: hash_key
         KeyType: HASH
     AttributeDefinitions:
      - AttributeName: hash_key
     AttributeType: S
     BillingMode: PAY_PER_REQUEST

O template acima cria uma tabela do DynamoDB na AWS. Em “Parameters”, conseguimos definir a identificação do ambiente desse recurso, que é utilizado para criar o nome da tabela, com a propriedade !Sub.

Perceba que para recurso é necessário descrever suas características para que o recurso seja provisionado de maneira adequada. Na documentação, encontramos quais propriedades são obrigatórias e como preenchê-las.

O deploy desses templates é feito via pipeline, onde utilizamos os comandos da AWS CLI para fazer deploy.

Dessa forma, toda criação de qualquer infraestrutura é feita de forma segura, automática, com o mínimo de esforço possível e com o máximo de assertividade.

Git da Zappts

Além disso, visando disseminar conhecimento, a Zappts possui um repositório público com diversos exemplos de templates onde os Zappters e a comunidade podem reaproveitar templates e acelerar a criação de novas infraestruturas na nuvem. 

O repositório também conta com uma documentação bem legal explicando como utilizar alguns exemplos e até mesmo algumas propriedades específicas do CloudFormation.

Confira o repositório: https://github.com/zappts/zappts_cfn_templates 

Gostou desse artigo? Acompanhe a Zappts e se ligue nos próximos!

Quer aprender mais sobre Infrastructure As Code (IaC) sem pagar nada por isso?

Participe do nosso treinamento “Infrastructure as Code e CloudFormation”, realizado 14 de outubro de 2021. Garanta sua inscrição, clicando aqui.

Este artigo foi desenvolvido por Thauany Moedano, Head de Arquitetura e Back-end da Zappts.