Sobes.tech
Middle

Aký je rozdiel medzi deklaratívnym a imperatívnym opisom infraštruktúry?

sobes.tech AI

Odpoveď od AI

Deklaratívny opis sa zameriava na želané konečné stav systému — na čo musí byť. Nástroj sám určuje kroky na dosiahnutie tohto stavu.

Imperatívny opis sa zameriava na poradie krokov — ako dosiahnuť potrebný stav. Vy jasne uvádzate, ktoré príkazy spustiť a v akom poradí.

Príklady:

  • Deklaratívny (Terraform, CloudFormation): Definovať, že je potrebné VPC s určitým CIDR, podsieťami, smerovacími tabuľkami a bezpečnostnými skupinami.
  • Imperatívny (Bash skripty, ad-hoc príkazy Ansible): Spustiť príkaz na vytvorenie VPC, potom príkaz na vytvorenie podsiete, a nakoniec príkaz na priradenie podsiete k VPC.

Hlavné rozdiely v tabuľke:

Aspekt Deklaratívny opis Imperatívny opis
Zameranie Čo má byť Ako to dosiahnuť
Zmena Nástroj určuje kroky Vy určujete kroky
Idempotentnosť Často zabudovaná Vyžaduje manuálnu implementáciu
Zložitosť Vyššia pri definovaní stavu Vyššia pri riadení zložitých procesov
Čitateľnosť Opisuje požadovanú architektúru Opisuje sekvenciu akcií

Príklad konfigurácie (zjednodušený):

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

  tags = {
    Name = "WebServer"
  }
}
# Imperatívny (Bash)
#!/bin/bash
# Ručné vytvorenie inštancie (pseudokód)
aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type t2.micro --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'