Kod Olarak Altyapı

Kod Olarak Altyapı (IaC), bilgi işlem altyapısını, örneğin ağları ve sanal makineleri, fiziksel donanım yapılandırması veya etkileşimli yapılandırma araçları ye...

Kod Olarak Altyapı (IaC), BT altyapısını—ağları, sanal makineleri, yük dengeleyicileri, veritabanlarını—fiziksel donanım yapılandırması veya etkileşimli yapılandırma araçları yerine makine tarafından okunabilir tanım dosyaları aracılığıyla yönetme ve sağlama pratiğidir. Yazılım geliştirmenin sürüm kontrolü, test etme ve otomasyon gibi ilkelerini tüm altyapı yaşam döngüsüne uygular. IaC, ekiplerin altyapılarını bildirimsel olarak (istenen son durumu belirterek) veya zorunlu olarak (son duruma ulaşmak için komutları listeleyerek) tanımlamalarına olanak tanır. Popüler IaC araçları arasında Terraform, AWS CloudFormation, Azure Resource Manager (ARM) şablonları ve Ansible bulunur. IaC'nin faydaları çoktur: Tutarlılık ve Tekrarlanabilirlik: Altyapının her seferinde aynı şekilde dağıtılmasını sağlar, yapılandırma sapmalarını ve hataları azaltır. Hız ve Verimlilik: Sağlama ve yönetim sürecini otomatikleştirerek dağıtım sürelerini önemli ölçüde azaltır. Sürüm Kontrolü: Altyapı yapılandırmaları sürüm kontrol sistemlerinde (Git gibi) saklanabilir, bu da değişikliklerin izlenmesini, geri alınmasını ve işbirliğini sağlar. Maliyet Tasarrufu: Manuel çabayı azaltır ve maliyetli kesintilere veya kaynak yanlış yapılandırmalarına yol açan hataları en aza indirir. Ölçeklenebilirlik: Talebe göre altyapının kolayca ölçeklendirilmesini sağlar. Dezavantajları arasında IaC araçları ve kavramları için başlangıçtaki öğrenme eğrisi, hatalı dağıtımları önlemek için sağlam test stratejilerine duyulan ihtiyaç ve özellikle büyük, dağıtılmış ortamlarda durum dosyalarını yönetmedeki potansiyel karmaşıklık yer alır.

        graph LR
  Center["Kod Olarak Altyapı"]:::main
  Pre_cloud_computing["cloud-computing"]:::pre --> Center
  click Pre_cloud_computing "/terms/cloud-computing"
  Pre_devops["devops"]:::pre --> Center
  click Pre_devops "/terms/devops"
  Center --> Child_terraform["terraform"]:::child
  click Child_terraform "/terms/terraform"
  Center --> Child_ansible["ansible"]:::child
  click Child_ansible "/terms/ansible"
  Rel_continuous_integration_ci["continuous-integration-ci"]:::related -.-> Center
  click Rel_continuous_integration_ci "/terms/continuous-integration-ci"
  Rel_continuous_deployment_cd["continuous-deployment-cd"]:::related -.-> Center
  click Rel_continuous_deployment_cd "/terms/continuous-deployment-cd"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5 yaşındaki gibi açıkla

Her seferinde bir Lego kalesini tek tek elle inşa etmek yerine, onu nasıl inşa edeceğinize dair tam talimatları (bir plan gibi) yazarsınız. Sonra, o talimatları kullanarak istediğiniz zaman, istediğiniz aynı kaleyi anında inşa edebilirsiniz.

🤓 Expert Deep Dive

IaC metodolojileri öncelikle iki paradigmaya ayrılır: bildirimsel ve zorunlu. Bildirimsel yaklaşımlar (örneğin, Terraform, CloudFormation) altyapının istenen durumunu tanımlar ve IaC aracı o duruma ulaşmak için gereken adımları belirler. Bu, yapılandırmanın birden çok kez uygulanmasının istenmeyen yan etkiler olmaksızın aynı sonucu verdiği değişmezliği (idempotency) teşvik eder. Zorunlu yaklaşımlar (örneğin, kabuk betikleri, belirli modlardaki Chef tarifleri) yürütülecek bir komut dizisi belirtir. İnce ayarlı kontrol sağlarken, yapılandırma sapmalarına daha yatkındırlar ve dikkatli durum yönetimi gerektirirler. Durum yönetimi, özellikle yapılandırma tarafından yönetilen gerçek dünya kaynaklarını izleyen bir durum dosyasına sahip olan Terraform gibi araçlar için kritik bir yönüdür. Bu durumun güvenli bir şekilde saklanması ve yönetilmesi, özellikle işbirlikçi ortamlarda (örneğin, S3 veya Terraform Cloud gibi uzak arka uçlar kullanarak), çok önemlidir. IaC'yi test etmek, üretim dağıtımından önce yapılandırmaları doğrulamak için geçici ortamlarda lintleme, statik analiz ve entegrasyon testlerini içerir. Güvenlik hususları arasında HashiCorp Vault veya bulut sağlayıcı gizli yöneticileri gibi araçlar kullanarak gizli bilgileri (API anahtarları, parolalar) güvenli bir şekilde yönetmek ve IaC yürütme rolleri için en az ayrıcalık ilkesine uymak yer alır.

🔗 İlgili terimler

Ön koşullar:
Daha fazla bilgi:

📚 Kaynaklar