Sobes.tech
Middle

Qual é a diferença entre a descrição declarativa e imperativa da infraestrutura?

sobes.tech IA

Resposta da IA

A descrição declarativa concentra-se no estado final desejado do sistema — o que deve ser. A ferramenta determina ela própria os passos para alcançar esse estado.

A descrição imperativa concentra-se na sequência de passos — como atingir o estado necessário. Você indica explicitamente quais comandos executar e em que ordem.

Exemplos:

  • Declarativo (Terraform, CloudFormation): Definir que é necessário um VPC com CIDR, sub-redes, tabelas de roteamento e grupos de segurança específicos.
  • Imperativo (scripts Bash, comandos ad-hoc do Ansible): Executar um comando para criar um VPC, depois um comando para criar uma sub-rede, e depois um comando para vincular a sub-rede ao VPC.

Principais diferenças na tabela:

Aspeto Descrição declarativa Descrição imperativa
Foco O que deve ser Como alcançar isso
Alteração A ferramenta determina os passos Você define os passos
Idempotência Frequentemente incorporada Requer implementação manual
Complexidade Maior ao definir o estado Maior ao gerir processos complexos
Legibilidade Descreve a arquitetura desejada Descreve a sequência de ações

Exemplo de configuração (simplificado):

// Declarativo (Terraform)
resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t2.micro"

  tags = {
    Name = "WebServer"
  }
}
# Imperativo (Bash)
#!/bin/bash
# Criar uma instância manualmente (pseudocódigo)
aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type t2.micro --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'