DEV Community

Cover image for IAC e Terraform. O que é e porque são tão importantes? Ep.1
Paloma Lataliza for AWS Community Builders

Posted on • Originally published at Medium

1

IAC e Terraform. O que é e porque são tão importantes? Ep.1

Para falar de IAC ou infraestrutura como código, primeiramente precisamos abordar alguns assuntos e conceitos para entendermos a sua real necessidade. Vamos começar com a gerência de configuração e o movimento DevOps.


GERÊNCIA DE CONFIGURAÇÃO E MOVIMENTO DEVOPS

Image description

Existe um conceito super importante que vem lá do ITIL (Information Technology Infrastructure Library) que ajuda a gente entender a importância da utilização de infra como código, a gerência de configuração. A gerência de configuração pode ser resumida em um conjunto de atividades que viabiliza o controle das mudanças que acontecem nas diferentes etapas do nosso software.

E com essa prática a gente consegue identificar e documentar as características do nosso software, controlar as mudanças que vão ocorrer nele, registrar o estado em que ele se encontra, verificar a conformidade de acordo com os requisitos, e com isso a gente tem uma segurança no sentido da quebra do software.

Há um tempo atrás era essencial o preenchimento de uma GMUD (Um documento de gestão de mudanças) e isso era simple quando tínhamos ali um data center e esse data center possuia poucos servidores. Neste cenário o controle era fácil e as GMUD’s eram mais eficiêntes, mas quando temos uma escala grande de máquinas, com mais de 100 servidores, fica inviável, pois ao todo nesses servidores podemos ter uma quantidade de serviços absurda e controle fica super burocrático.

Pra ajudar a contornar essa burocracia o movimento DevOps veio para aproximar os precessos do pessoal de OPS com o pessoal de DEV e embora cada um tenha suas práticas, a necessidadade dessa integração trouxe atualizações na maneira de trabalhar, com versionamento de código, automações e entrega contínua. Com essas atualizações e a melhora na comunicação das equipes, a nuvem trouxe fortemenete a idéia da infraestrutura como código.


IAC

photo by sun technologies

E o que é IAC? IAC como dito anteriormente é a prática de usar código para criar sua infraestrutura em cloud. Antes a gente abria o nosso console do provedor de nuvem e iamos clicando ou selecionando nos serviços e preenchendo os parâmetros para o funcionamento e agora, as boas prática recomenda o uso de infra as code.

Mas porque fazer um código para criar um serviço, sendo que usar o console é mais fácil?

Porque tudo que é manual muitas das vezes não é possível replicar. E quando a equipe que trabalha com essa nuvem é grande, gerenciar e controlar tudo o que foi criado fica mais complexo.

E as vantagens de usar IAC não são somente o controle e gerenciamento, podemos contar com o reuso do código, além da facilidade de criar e destruir ambientes o que nos ajuda quando apagamos algo por acidente ou quando ocorre um incidente como um ataque.

FERRAMENTAS IAC
E quando a gente fala de IAC, pensamos logo em algumas ferramentas que podem nos auxiliar nesta jornada. Cada ferramenta possui suas particularidade e são designadas para cada caso de uso específico e podem ser utilizadas em conjunto. As mais conhecidas são o ansible, chef, terraform e puppet.

ANSIBLE

O Ansible é uma solução de gerenciamento de configuração e automação. Com ele a gente pode projetar e gerenciar o estado que queremos de nosso sistema usando scripts YAML. A simplicidade do Ansible e a falta de necessidade de instalar software adicional no destino são dois de seus benefícios. Uma coisa bem legal do Ansible é o modelo sem agente que depende só da comunicação SSH para os nós gerenciados. Para usar a gente basicamente escreve um script que chamamos de playbook e nele definimos o que deve ser instalado e configurado.

CHEF

O Chef é uma ferramenta que tem um proposito super parecido com o do Ansible, mas ao ivéns de usar YAML, a gente tem o Domain Specific Language (DSL) escrita em Ruby. No Chef existe a necessidade da instalação de um agente no servidor de destino, o que não acontece no Ansible.

PUPPET

O Puppet é uma ferramenta super similiar ao Chef, e as 03 possuem o mesmo propósito de gerenciamento de configuração e definição do estado desejado do sistema. Assim como o Chef, o Puppet usa sua própria linguagem de domínio específico (DSL).

CASO DE USO DESSAS FERRAMENTAS

Vamos pegar um cenário onde temos 10 servidores e queremos instalar um editor de texto neles. Em vez de instalar esse editor de texto manualmente em cada servidor e seguir os procedimentos necessários para o funcionamento dele, você pode usar uma dessas ferramentas para fazer a instalação e configuração em todos os 10.

TERRAFORM

Photo by The Workfall Blog

Antes da gente falar sobre o terraform, vamos a uma curiosidade. O termo terraform vem de terraformar no latim, onde é terra é a terra mesmo e formar é moldar, criar. Geralmente é usado na ficção cientifica pra quando cria-se um planeta e o mesmo é habitável como a terra.

E a ideia do terraform é meio que isso também. Para usa-lo precisamos nos conectar a um provedor de nuvem e começar a criar os nossos recursos, a nossa infraestrutura (planetas).

Então, podemos falar que o terraform é uma ferramenta de IAC usada para criar a nossa infraestrutura, ao contrário das ferramentas que citei anteriormente que são focadas mais no servidor pra dentro. O que atrai muita gente para usar o terraform é sintaxe facil, uma comunidade bem ativa(open source) e a documentação dele bem completa.

Porque usar terraform e não uma ferramenta nativa?

Muitas pessoas quando vão começar usar IAC ficam na dúvida se começam a usar o terraform ou a ferramenta nativa do provedor de nuvem, e a resposta pra essa dúvida pode ser esclarecida de acordo com o seu cenário. Mas olha, a utilização do terraform comparado ao uso do cloudformation da AWS pode ser bem mais benéfica, visto que o terraform tem uma curva de aprendizado menor, suporta mais de 250 provedores atualmente. Com isso, conseguimos trabalhar com mais de um provedor usando a mesma ferramenta e acaba que não preciso ficar aprendendo uma ferramenta nova toda vez que vou mudar de cloud, preciso somente ver quais serão as particularidades de chamadas daquela outra cloud.

Desta forma a gente ganha tempo, podendo nos aprofundar em uma ferramenta só e o gerenciamento fica bem mais fácil.

Continua …

Top comments (0)

Best Practices for Running  Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK cover image

Best Practices for Running Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK

This post discusses the process of migrating a growing WordPress eShop business to AWS using AWS CDK for an easily scalable, high availability architecture. The detailed structure encompasses several pillars: Compute, Storage, Database, Cache, CDN, DNS, Security, and Backup.

Read full post