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 açıklayıcı bir modelle DevOps metodolojisini ve sürüm oluşturmayı kullanır. Aynı kaynak kodun her zaman aynı ikiliyi oluşturması gibi, bir IaC modeli de her dağıttığı zaman aynı ortamı oluşturur.
IaC, önemli bir DevOps uygulaması ve sürekli teslimin bir bileşenidir. IaC ile DevOps ekipleri, uygulamaları ve destekleyici altyapılarını büyük ö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şmiştir. 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ı yinelenebilir ve yapılandırma kayması veya eksik bağımlılıklardan kaynaklanan çalışma zamanı sorunlarını önler. 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 verme becerisi olan Idempotence, önemli bir IaC prensibidir. Dağıtım komutu, ortamın başlangıç durumundan bağımsız olarak hedef ortamı her zaman aynı yapılandırmaya ayarlar. Bir kez daha etkili olmak için mevcut hedefi otomatik olarak yapılandırabilirsiniz veya mevcut hedefi atıp yeni bir ortam oluşturabilirsiniz.
Yararlı araçlar
Kararlı test ortamlarını büyük ölçekte hızla sunma
IaC, DevOps ekiplerinin geliştirme döngüsünün başlarında üretim benzeri ortamlarda uygulamaları test etmelerine 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 yok eder. 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ırmayı nasıl gerçekleştireceklerini açıklamaz. Ö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 kodu 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 şablonları tanımlayabilir.
Terraform, Ansible, Chef ve Pulumi gibi üçüncü taraf platformlar da otomatik altyapıyı yönetmek için IaC'yi destekler.