Ana içeriğe geç

Kod Olarak Altyapı

İngilizcesi
Infrastructure as Code
Okunuşu
infrıstrakçır ez kod
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/infrastructure-as-code

Kısaca

Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.

Kod olarak altyapı (IaC) nedir?

Kod olarak altyapı (IaC), sanal makineler, ağlar, yük dengeleyiciler, veritabanları ve DNS kayıtları gibi altyapıyı bir web konsolunda tıklayarak ya da komutları elle çalıştırarak değil, kod dosyalarıyla yönetmek demektir. Dosyalar altyapının nasıl görünmesi gerektiğini tarif eder; bir araç bunları okur ve gerçek ortamı ona uydurur.

IaC araçlarının çoğu bildirimseldir (declarative): istenen son durumu, örneğin "bir yük dengeleyicinin arkasında iki web sunucusu" diye tarif edersiniz; araç bunu mevcut olanla karşılaştırır ve farkı kapatmak için kaynakları oluşturur, değiştirir ya da siler. Aynı yapılandırmayı iki kez uygulamak ek bir değişiklik yapmaz; bu özelliğe idempotency (eşkuvvetlilik) denir. Tipik bir iş akışı, dosyaları düzenlemek, değişiklikleri önizleyen bir plan adımı çalıştırmak, bunları pull request'te gözden geçirmek ve ardından uygulamaktır. Bilinen araçlar arasında Terraform, OpenTofu, Pulumi ve Ansible bulunur; her büyük bulut sağlayıcısı da kendi şablon biçimini sunar.

IaC'yi, ezberden pişirilen bir yemek yerine yazılı bir tarif olarak düşünün: herkes onu izleyip aynı sonucu alabilir ve tarifteki her değişiklik kayıt altındadır. Dosyalar Git gibi bir sürüm kontrol sisteminde durduğu için her değişikliğin bir geçmişi vardır, uygulama kodu gibi gözden geçirilebilir ve geri alınabilir. Aynı kod ayrıca birbirine denk geliştirme, staging ve canlı ortamlar oluşturabilir; bu da sunucuların elle yapılan ince ayarlarla zamanla birbirinden farklılaştığı yapılandırma kaymasını (configuration drift) önlemeye yardımcı olur.

Kod olarak altyapı bazen yapılandırma yönetimi ya da CI/CD ile karıştırılır. Provisioning araçları ağlar, VM'ler ve veritabanları gibi altyapının kendisini oluşturur; yapılandırma yönetimi araçları ise zaten var olan sunuculara yazılım kurar ve ayarları uygular, ancak birçok araç ikisini de bir ölçüde yapar. CI/CD pipeline'ları çoğunlukla IaC araçlarını çalıştırır, ama IaC hangi altyapının var olması gerektiğini tarif ederken CI/CD kodun nasıl derlenip test edileceğini ve yayınlanacağını otomatikleştirir.

Önemli noktalar

  • IaC, altyapıyı elle konsol tıklamaları yerine kod dosyalarında tanımlar.
  • Bildirimsel araçlar istenen durumu gerçeklikle karşılaştırır ve farkı uygular.
  • Altyapı değişiklikleri uygulama kodu gibi sürümlenir, gözden geçirilir ve geri alınır.
  • Aynı kod tutarlı ortamlar oluşturur ve yapılandırma kaymasını önlemeye yardımcı olur.
  • IaC, temel bir DevOps pratiğidir ve çoğu zaman CI/CD pipeline'larından çalıştırılır.

Örnek

Terraform veya OpenTofu (HCL) ile bir konteyner tanımlamakhcl
# main.tf: declare what should exist; the tool creates or changes resources to match
terraform {
  required_providers {
    docker = { source = "kreuzwerker/docker" }
  }
}

resource "docker_image" "nginx" {
  name = "nginx:stable"
}

resource "docker_container" "web" {
  name  = "web"
  image = docker_image.nginx.image_id
}

Sık sorulan sorular

Kod olarak altyapının faydaları nelerdir?

IaC, altyapıyı tekrarlanabilir, gözden geçirilebilir ve yeniden oluşturması kolay hale getirir. Değişiklikler sürüm kontrolünde izlenir, ortamlar tutarlı kalır ve tüm kurulum bir arızadan sonra koddan yeniden inşa edilebilir ya da yeni bir bölgeye kopyalanabilir.

Bildirimsel ve emirsel kod olarak altyapı arasındaki fark nedir?

Bildirimsel IaC, istenen son durumu tarif eder ve adımları bulmayı araca bırakır; Terraform ve OpenTofu böyle çalışır. Emirsel IaC ise çalıştırılacak tam adımları bir betik gibi sırayla listeler; bu daha fazla kontrol sağlar ama betik yeniden çalıştığında sonucu öngörmeyi zorlaştırır.

Yapılandırma kayması (configuration drift) nedir?

Yapılandırma kayması, gerçek altyapının çoğunlukla elle yapılan değişiklikler yüzünden zamanla amaçlanan yapılandırmayla uyuşmamaya başlamasıdır. IaC araçları kodu gerçekte var olanla karşılaştırarak kaymayı tespit edebilir ve ardından bildirilen durumu geri yükleyebilir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar