Distrito Federal - Brasil
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

BLOG

NOTÍCIAS

Infraestrutura como Código (IAC) – Declarativa e Imperativa

Olá, querido(a) aluno(a)!

Neste artigo entenderemos conceitos importantes sobre Infraestrutura como Código (IaC)que são cobrados com frequência em questões de concursos.

Infraestrutura como Código (IaC) é um paradigma essencial na era moderna da engenharia de software e administração de sistemas, permitindo que equipes de TI gerenciem e provisionem infraestrutura através de código ao invés de processos manuais. Este artigo explora as abordagens declarativa e imperativa de IaC, detalhando suas características, vantagens, desvantagens e cenários de uso apropriados para cada uma.

Introdução ao Infraestrutura como Código (IaC)

Infraestrutura como Código é uma prática de TI que aplica os princípios do desenvolvimento de software, como controle de versão, testes automatizados e integração contínua, para o gerenciamento e provisionamento de infraestrutura. IaC transforma a configuração de hardware e ambientes de rede em código fonte, permitindo que organizações implantem infraestrutura de maneira rápida, consistente e escalável.

Abordagem Declarativa

A abordagem declarativa de IaC especifica o estado desejado da infraestrutura sem descrever como alcançar esse estado. Ferramentas como Terraform e CloudFormation da AWS são exemplos que utilizam este método. Os usuários definem a configuração desejada em arquivos de configuração, e a ferramenta se encarrega de executar as ações necessárias para alcançar esse estado.

Exemplo de Terraform:
hcl
resource “aws_instance” “example” {
ami           = “ami-0c55b159cbfafe1f0”
instance_type = “t2.micro”
}

Este código declara uma instância AWS EC2 desejada, especificando o tipo de instância e a imagem de máquina da Amazon (AMI) a ser usada. O Terraform se encarrega de realizar as etapas necessárias para alcançar esse estado.

Benefícios da Abordagem Declarativa

A maior vantagem da abordagem declarativa é a simplicidade. Ao focar no “o que” em vez do “como”, ela permite que desenvolvedores e operadores se concentrem nos resultados, deixando a complexidade do processo para a ferramenta de IaC. Isso reduz o risco de erros humanos e aumenta a eficiência na entrega de infraestrutura.

Limitações da Abordagem Declarativa

A abordagem declarativa pode ser limitante quando há necessidade de um controle mais granular sobre o processo de provisionamento. Em cenários complexos, onde ajustes finos e sequências específicas de ações são necessários, essa abordagem pode não oferecer a flexibilidade desejada.

Abordagem Imperativa

Contrariamente à abordagem declarativa, a imperativa foca no “como” — ela especifica a sequência de comandos ou scripts que devem ser executados para alcançar o estado desejado da infraestrutura. Ferramentas como Ansible, Chef, e Puppet utilizam essa abordagem, permitindo que os usuários definam explicitamente o passo a passo do provisionamento e configuração.

Exemplo de Ansible:
yaml
– name: Instala Apache
yum:
name: httpd
state: present

Este playbook do Ansible especifica a instalação do Apache em uma máquina que usa YUM como gerenciador de pacotes. Cada passo do processo é explicitamente definido.

Benefícios da Abordagem Imperativa

A principal vantagem da abordagem imperativa é sua flexibilidade. Ela permite um controle detalhado sobre o processo de provisionamento, tornando-a ideal para cenários onde ajustes específicos e personalizados são necessários. A abordagem imperativa também facilita a reutilização de código e a integração com scripts existentes.

Limitações da Abordagem Imperativa

A complexidade é a principal desvantagem da abordagem imperativa. Ela exige um entendimento detalhado dos processos de provisionamento e pode aumentar o risco de erros, especialmente em ambientes grandes e complexos. Além disso, a manutenção do código pode se tornar desafiadora à medida que o ambiente cresce.

Escolhendo Entre Declarativa e Imperativa

A escolha entre abordagens declarativa e imperativa depende de vários fatores, incluindo a complexidade do ambiente de TI, a experiência da equipe, e requisitos específicos do projeto. Enquanto a abordagem declarativa é mais adequada para ambientes que requerem provisionamento rápido e padronizado, a imperativa oferece maior controle para situações que demandam configurações detalhadas e personalizadas.

Combinação das Abordagens

Em muitos casos, uma combinação das abordagens declarativa e imperativa pode oferecer o melhor dos dois mundos. Ferramentas como Terraform permitem o uso de módulos imperativos dentro de uma configuração declarativa, proporcionando flexibilidade sem sacrificar a simplicidade. Esta abordagem híbrida pode ser particularmente útil em ambientes complexos onde ambos, padronização e personalização, são necessários.

Conclusão

Infraestrutura como Código revolucionou a forma como as organizações gerenciam e provisionam sua infraestrutura de TI. Ao entender as diferenças entre as abordagens declarativa e imperativa, as equipes podem escolher a estratégia mais adequada para suas necessidades, maximizando eficiência, reduzindo erros, e melhorando a escalabilidade. À medida que a tecnologia avança, a capacidade de adaptar e combinar essas abordagens será crucial para o sucesso na gestão de infraestrutura moderna.

Vamos ver como esse conteúdo já foi cobradaem concursos públicos?

1) Ano: 2022 Banca: CESPE / CEBRASPE Órgão: BNB Prova: CESPE / CEBRASPE – 2022 – BNB – Analista de Sistemas – Infraestrutura e Segurança da informação

No que se refere aos conceitos de infraestrutura como código (IaC), julgue o próximo item. Infraestrutura como código (IaC) é o processo de gerenciamento e provisionamento de data centers de computador, por meio de arquivos de definição legíveis por máquina, ao invés de configuração de hardware físico ou ferramentas de configuração interativas. 

(           ) Certo            (           ) Errado

2) Ano: 2023 Banca: CESPE / CEBRASPE Órgão: TBG Prova: CESPE / CEBRASPE – 2023 – TBG – Ênfase: Desenvolvimento de Software

Com base nos conceitos de microsserviços, julgue o item que se segue. Em infraestrutura como código, a abordagem declarativa define os comandos específicos necessários para o alcance da configuração desejada.

(           ) Certo            (           ) Errado

Gabarito Comentado

1) Ano: 2022 Banca: CESPE / CEBRASPE Órgão: BNB Prova: CESPE / CEBRASPE – 2022 – BNB – Analista de Sistemas – Infraestrutura e Segurança da informação

No que se refere aos conceitos de infraestrutura como código (IaC), julgue o próximo item. Infraestrutura como código (IaC) é o processo de gerenciamento e provisionamento de data centers de computador, por meio de arquivos de definição legíveis por máquina, ao invés de configuração de hardware físico ou ferramentas de configuração interativas.

Gabarito: Certo.

Comentário: A IaC utiliza arquivos de definição, que são scripts ou declarações codificadas, para automatizar o provisionamento e gerenciamento de infraestrutura. Esses arquivos são legíveis por máquina e podem ser versionados, o que facilita o rastreamento de mudanças e a colaboração entre membros da equipe. Dessa forma, em vez de configurar manualmente hardware físico ou utilizar ferramentas de configuração interativas, a IaC permite que toda a infraestrutura seja definida em código. Isso permite que a infraestrutura seja provisionada e gerenciada com a mesma agilidade e controle de versão que o código de aplicativos, melhorando a eficiência, a consistência e a escalabilidade dos ambientes de TI.

2) Ano: 2023 Banca: CESPE / CEBRASPE Órgão: TBG Prova: CESPE / CEBRASPE – 2023 – TBG – Ênfase: Desenvolvimento de Software

Com base nos conceitos de microsserviços, julgue o item que se segue.

Em infraestrutura como código, a abordagem declarativa define os comandos específicos necessários para o alcance da configuração desejada. 

Gabarito: Errado.

Comentário: No contexto de IaC, a abordagem declarativa permite que os administradores e desenvolvedores especifiquem o que precisa ser feito, deixando para as ferramentas de IaC o trabalho de descobrir como realizar essas tarefas para alcançar o estado desejado. Isso simplifica o gerenciamento da infraestrutura, tornando-o mais eficiente e reduzindo a possibilidade de erros manuais, uma vez que o processo de configuração não depende da execução de uma série de comandos ou scripts imperativos. Portanto, o item está errado porque sugere que a abordagem declarativa envolve definir comandos específicos para alcançar a configuração desejada, o que na verdade é uma característica da abordagem imperativa. A abordagem declarativa concentra-se em definir o estado final desejado, deixando os detalhes de como alcançar esse estado para serem tratados automaticamente pelas ferramentas de IaC.

Referências:

https://cloud.google.com/docs/terraform?hl=pt-br

https://learn.microsoft.com/pt-br/azure/developer/terraform/

https://terraform-docs.io/

https://docs.aws.amazon.com/pt_br/cloudformation/?id=docs_gateway

https://docs.ansible.com/

https://www.puppet.com/docs/puppet/5.5/puppet_index.html

https://docs.chef.io/

Então é isso!

Bons estudos e até o nosso próximo artigo.

Prof. Jósis Alves

Analista de TI no Supremo Tribunal Federal

Instagram: @josisalvesprof @aprovati

NOTÍCIAS RECENTES

MÍDIAS SOCIAIS

INSCREVA-SE EM NOSSA NEWSLETTER