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.

Kod olarak altyapı diyagramı, sürümlenmiş bir dosyada ortamı tanımlar.

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. Zamanla her ortam, otomatik olarak yeniden oluşturulamayacak benzersiz bir yapılandırma haline gelir ve "kar tanesi" olur. 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 ü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. İdempotentlik, mevcut hedefi otomatik olarak yapılandırarak veya mevcut hedefi ortadan kaldırı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 ortadan 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 sağlanacağını mutlaka belirtmez. Ö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, örneğin dağıtım betikleri gibi zaman içinde birikebilen imperatif 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ı belirtmek için JSON söz dizimini veya Bicep'i kullanarak bildirim temelli ARM şablonları tanımlayabilir. Belirli Azure sağlayıcıları aracılığıyla Terraform gibi üçüncü taraf çözümler de kullanılabilir.