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}]'