Aracılığıyla paylaş


Kod olarak altyapı (IaC) nedir?

Kod olarak altyapı (IaC), ağlar, sanal makineler, yük dengeleyiciler ve bağlantı topolojileri gibi altyapıyı tanımlamak ve dağıtmak için DevOps metodolojisini ve sürüm oluşturmayı açıklayıcı bir modelle kullanır. Aynı kaynak kodun her zaman aynı ikiliyi oluşturması gibi, IaC modeli de her dağıtımda aynı ortamı oluşturur.

Diagram of infrastructure as code defining the environment in a versioned file.

IaC, önemli bir DevOps uygulaması ve sürekli teslimin bir bileşenidir. IaC ile DevOps ekipleri, uygulamaları ve destekleyici altyapılarını uygun ölçekte hızlı ve güvenilir bir şekilde sunmak için birleştirilmiş bir dizi uygulama ve araçla birlikte çalışabilir.

Tutarlılığı zorlamak için el ile yapılandırmadan kaçının

IaC, yayın işlem hatlarında ortam kayma sorununu çözmek için gelişti. IaC olmadan ekiplerin dağıtım ortamı ayarlarını tek tek koruması gerekir. Zaman içinde her ortam otomatik olarak yeniden oluşturulamaz benzersiz bir yapılandırma olan "kar tanesi" haline gelir. Ortamlar arasındaki tutarsızlık dağıtım sorunlarına neden olabilir. Altyapı yönetimi ve bakımı, hataya açık ve izlenmesi zor el ile gerçekleştirilen işlemleri içerir.

IaC el ile yapılandırmayı önler ve JSON gibi biçimlerde iyi belgelenmiş kod aracılığıyla istenen ortam durumlarını temsil ederek tutarlılığı zorlar. IaC ile altyapı dağıtımları tekrarlanabilir ve yapılandırma kaymasından ve bağımlılıkların eksik kalmasından kaynaklanan çalışma zamanı sorunları önlenir. Yayın işlem hatları, hedef ortamları yapılandırmak için ortam açıklamalarını ve sürüm yapılandırma modellerini yürütür. Ekip, değişiklik yapmak için hedefi değil kaynağı düzenler.

Belirli bir işlemin her zaman aynı sonucu üretme becerisi olan Idempotence, önemli bir IaC ilkesidir. Dağıtım komutu, ortamın başlangıç durumundan bağımsız olarak hedef ortamı her zaman aynı yapılandırmaya ayarlar. Eşitlik, mevcut hedefi otomatik olarak yapılandırarak veya mevcut hedefi atıp yeni bir ortam oluşturarak elde edilir.

Yararlı araçlar

Kararlı test ortamlarını büyük ölçekte hızlı bir şekilde sunma

IaC, DevOps ekiplerinin geliştirme döngüsünün başlarında üretim benzeri ortamlarda uygulamaları testlerine yardımcı olur. Teams, isteğe bağlı olarak güvenilir bir şekilde birden çok test ortamı sağlayabilir. Bulut, IaC tanımlarına göre ortamları dinamik olarak sağlar ve kaldırır. Yaygın dağıtım sorunlarını önlemek için altyapı kodunun kendisi doğrulanabilir ve test edilebilir.

Bildirim temelli tanım dosyalarını kullanma

IaC mümkünse bildirim temelli tanım dosyalarını kullanmalıdır. Tanım dosyası, bir ortamın gerektirdiği bileşenleri ve yapılandırmayı açıklar, ancak bu yapılandırmanın nasıl elde edilemeyebilir. Örneğin, dosya gerekli bir sunucu sürümü ve yapılandırması tanımlayabilir, ancak sunucu yükleme ve yapılandırma işlemini belirtmeyebilir. Bu soyutlama, altyapı sağlayıcısının sağladığı iyileştirilmiş teknikleri kullanma esnekliği sağlar. Bildirim temelli tanımlar, zaman içinde tahakkuk eden dağıtım betikleri gibi kesinlik temelli kodları korumanın teknik borcunu azaltmaya da yardımcı olur.

Bildirim temelli IaC için standart söz dizimi yoktur. IaC'yi açıklama söz dizimi genellikle hedef platformun gereksinimlerine bağlıdır. Farklı platformlar YAML, JSON ve XML gibi dosya biçimlerini destekler.

Azure'da IaC dağıtma

Azure, Azure Resource Manager modeli aracılığıyla IaC için yerel destek sağlar. Teams, çözümleri dağıtmak için gereken altyapıyı belirten bildirim temelli ARM veya Bicep şablonları tanımlayabilir.

Terraform, Ansible, Chef ve Pulumi gibi üçüncü taraf platformlar da otomatik altyapıyı yönetmek için IaC'yi destekler.