Junior
DevOps'ta deklaratif yaklaşım nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
DevOps'ta deklaratif yaklaşım, istenen son durumu sistemin, onu başarmak için gereken adımlar dizisinden ziyade, tanımlamaya odaklanır. Bu yaklaşımı kullanan araçlar, sistemi bu duruma getirmek için gerekli işlemleri tanımlama ve yürütme sorumluluğunu üstlenir.
İmperatif yaklaşımdan temel farklar:
- İmperatif: Nasıl ulaşılacağını (komut dizisi) tanımlar.
- Deklaratif: Ne olması gerektiğini (son durumu) tanımlar.
Deklaratif yaklaşımı kullanan araçlara örnekler:
- Kubernetes: YAML dosyalarında istenen pod replikası sayısı, servis yapılandırması vb. tanımlanır. Kubernetes bu durumu korur.
- Terraform: Altyapı kod olarak. İstenen altyapı (sanal makineler, ağlar, yük dengeleyiciler)
.tfdosyalarında tanımlanır. Terraform, bu tanıma uygun olarak kaynakları oluşturur veya değiştirir. - Ansible (kısmen, playbook'larda): Görevlerde (
tasks) genellikle son durum tanımlanır (örneğin, "paketin yüklü olduğundan emin ol", "belirli içerikle dosyanın var olduğundan emin ol").
Avantajlar:
- İdempotens: Aynı deklaratif tanımın tekrar uygulanması, sistem zaten istenen durumda ise beklenmedik değişikliklere yol açmaz.
- Dayanıklılık: Araçlar, sapmalar durumunda istenen durumu yeniden sağlar.
- Anlaşılabilirlik: Durum tanımı, genellikle detaylı betikten daha sezgiseldir.
- Ölçeklenebilirlik: Büyük ve karmaşık sistemleri yönetmek daha kolaydır, sonuç odaklıdır.
- Konfigürasyon kaymasında azalma: Sistem aktif olarak tanımlanan durumda tutulur.
Örnek (yaklaşımların karşılaştırması):
/etc/myapp.conf dosyasını "data=value" içeriğiyle oluşturmak.
İmperatif:
# Dosyanın var olup olmadığını kontrol et
if [ ! -f /etc/myapp.conf ]; then
# Dizin yoksa oluştur
mkdir -p /etc
# Dosyayı oluştur
echo "data=value" > /etc/myapp.conf
fi
# Veya doğrudan:
# echo "data=value" > /etc/myapp.conf
Deklaratif (ilke, gerçek sözdizimi değil):
file: /etc/myapp.conf
state: present # Dosya var olmalı
content: "data=value" # Bu içerikle
Deklaratif yaklaşımı kullanan araç, dosyanın oluşturulup oluşturulmayacağını, içeriğin değişip değişmeyeceğini veya sadece varlığının sağlanıp sağlanmayacağını belirleyecektir.