Altyapı Olarak Kod — Infrastructure as Code (IaC)

☁️ Ümit Eroğlu 🌍🛰
4 min readMay 2, 2024

--

Altyapı Olarak Kod (IaC-Infrastructure as Code) nedir ve neden DevOps’ta önemlidir?

Altyapı Olarak Kod (IaC), altyapıyı kod ve otomasyon araçları kullanarak yönetme ve sağlama pratiğidir. Altyapı bileşenlerini yazılım gibi işler, tutarlı, tekrarlanabilir ve sürüm kontrollü dağıtımlara olanak tanır. IaC, manuel kurulumu ortadan kaldırarak, insan hatalarını azaltarak ve geliştirme, test ve üretim aşamalarında ortamların tutarlı olmasını sağladığı için DevOps’ta önemlidir.

IaC (Infrastructure as Code) kullanmanın faydaları nelerdir?

IaC, sürüm kontrolü, tekrarlanabilirlik, ölçeklenebilirlik, çeviklik ve ekipler arasında daha kolay işbirliği gibi faydalar sunar. Hızlı konfigürasyon, kolay geri alma ve altyapı değişikliklerinin etkin test edilmesini sağlar.

Popüler IaC araçlarından bazıları nelerdir?

Bazı popüler IaC araçları arasında Terraform, Ansible, Puppet, Chef, CloudFormation (AWS) ve ARM şablonları (Azure) bulunmaktadır.

Terraform’un, Ansible’dan farkı nedir?

Terraform, altyapı kaynaklarını yönetme odaklı bildirimsel bir IaC aracıdır, Ansible ise mevcut sistemlerdeki görevleri otomatikleştirmeye odaklanan bir yapılandırma yönetimi aracıdır.

IaC bağlamında “bildirimsel” (declarative) kavramını açıklayın.

Terraform gibi bildirimsel IaC araçları, tam olarak atılması gereken adımları tanımlamadan istenen duruma ulaşmayı belirtir. Araç, altyapıyı istenen duruma getirmek için gerekli olan adımları bizim için belirler.

IaC şablonu (template) nedir?

Bir IaC şablonu, altyapı bileşenlerini, ilişkilerini ve yapılandırma ayarlarını tanımlayan bir dosya veya dosya setidir. Bu, altyapıyı oluşturmak ve yönetmek için IaC araçları tarafından kullanılır.

IaC’de idempotans (denk/eş güçlülük) nedir ve neden önemlidir?

İdempotans, bir IaC yapılandırmasını birden çok kez uygulamanın, bunu bir kez uygulamakla aynı sonucu üreteceği anlamına gelir. Bu özellik, değişikliklerin beklenmedik sonuçlara veya hatalara neden olmamasını sağlar.

IaC, “Değişmez Altyapı” (Infrastructure as Immutable) kavramına nasıl katkı sağlar?

IaC, altyapıyı değişmez olarak ele alır, bu da mevcut altyapı bileşenlerini değiştirmek yerine, yeni örneklerin eski olanları değiştirmesi anlamına gelir. Bu yaklaşım, tutarlılık sağlar, yapılandırma ayrışmasını azaltır (configuration drift) ve geri alma (rollback) işlemlerini basitleştirir.

Terraform’da “Planla, Uygula ve Yok Et” (Plan, Apply, Destroy) iş akışını açıklayın.

Terraform’da, öncelikle değişiklikleri gerçekleştirmeden önce bunları önizleme imkanı sunan bir yürütme planı oluşturursunuz (terraform plan), sonra değişiklikleri altyapıya uygularsınız (terraform apply) ve nihayetinde oluşturulan kaynakları artık ihtiyaç duyulmadığında yok edebilirsiniz (terraform destroy).

IaC, geliştirme ve operasyon ekibi arasındaki işbirliğini nasıl artırır?

IaC, her iki ekibe de ortak bir dil sağlayarak, altyapı gereksinimlerini ve değişiklikleri tanımlamayı kolaylaştırır. Bu, ekipler arasındaki yanlış anlamaları ve yanlış yapılandırmaları azaltır.

Bir sanal makine örneği (virtual machine instance) oluşturmak için IaC’nin nasıl kullanılabileceğini açıklayın.

IaC kullanarak bir sanal makine örneği oluşturmak için, özellikleri (boyut, görüntü, ağ ayarları gibi) bir şablon dosyasında tanımlarsınız (örneğin, Terraform .tf dosyası). Ardından, IaC aracını kullanarak yapılandırmayı uygularsınız, bu da şablona göre sanal makineyi ayarlar.

IaC, kurtarma ve yüksek erişilebilirlik (disaster recovery & high availability) stratejilerine nasıl katkıda bulunur?

IaC, altyapıyı bölgeler ve ortamlar arasında kolayca kopyalayarak, hızlı kurtarmaya olanak tanır ve yüksek erişilebilirlik kurulumlarının temelini oluşturur.

IaC’de “Altyapı Olarak Veri” (Infrastructure as Data) nedir?

Altyapı olarak Veri, altyapı yapılandırmasını uygulama koduyla birlikte sürüm kontrollü depolarda saklama pratiğidir. Bu, altyapı değişikliklerinin diğer kod değişiklikleri gibi izlenmesini ve yönetilmesini sağlar.

IaC, “Benim Makinemde Çalışıyor” (Works on My Machine) sorununu nasıl hafifletebilir?

IaC, geliştirme, test ve üretim ortamlarının tutarlı olduğundan emin olarak, ortamlar arasındaki farklılıkları azaltır ve “Benim Makinemde Çalışıyor” sorununu hafifletir.

IaC kullanmanın bazı potansiyel zorlukları veya tuzakları (challenges or pitfalls) nelerdir?

Zorluklar, öğrenme eğrisini, (learning curve) durumu yönetmeyi, (managing state) harici bağımlılıkları ele almayı (handling external dependencies) ve dağıtımdan önce şablonların uygun bir şekilde test edilmesini (proper testing of templates) içerebilir.

IaC nasıl güvenlik endişeleriyle (security concerns) nasıl başa çıkar?

IaC, güvenlik uygulamalarının doğrudan şablonlara gömülmesine (embedded) izin vererek, altyapı ayarlanırken güvenlik önlemlerinin tutarlı bir şekilde uygulanmasını sağlar.

“Altyapı Ayrışması” (Infrastructure Drift) kavramını açıklayın.

Altyapı ayrışması, dağıtılan altyapının, IaC şablonlarında istenen durumdan sapması ile meydana gelir. Bu, tutarsızlıklara ve beklenmedik davranışlara yol açabilir.

“Altın Görüntü” (Golden Image) nedir ve IaC ile ilişkisi nedir?

Altın Görüntü, tüm gerekli yazılım ve ayarları içeren bir sanal makine veya konteyner için önceden yapılandırılmış bir şablondur. IaC, Altın Görüntülerin oluşturulmasını ve bakımını otomatikleştirebilir.

IaC, ölçeklenebilirlik ve kaynak yönetimini (scalability & resource management) nasıl etkiler?

IaC, talebe dayalı olarak kaynakların otomatik oluşturulmasını ve ölçeklenmesini sağlayarak, verimli kaynak tahsisi ile manuel yapılandırmadan kaçınmayı sağlar.

IaC’de “Yıkıcı Güncellemeler” (Destructive Updates) kavramını açıklayabilir misiniz?

Yıkıcı Güncellemeler, bir IaC yapılandırma uygulaması sonucu mevcut kaynakların silinmesi veya önemli ölçüde değiştirilmesi durumunda ortaya çıkar. Bu durum, değişikliklerin etkisini dikkatlice planlayarak ve değerlendirerek önlenir.

IaC uyum ve denetim gereksinimlerini (compliance and auditing requirements) nasıl ldestekler?

IaC, uyumluluk politikalarının (compliance policies) altyapı şablonlarında kodlanmasını sağlayarak, yaşam döngüsü (lifecycle) boyunca uyumu ve takibi (track compliance) kolaylaştırır.

“Yapılandırma Ayrışması” (Configuration Dritf) nedir ve nasıl ele alır?

Yapılandırma ayrışması, sistem yapılandırmalarının istenen durumdan giderek sapmasıdır. IaC araçları, istenen durumu sürekli olarak izler ve yapılandırma ayrışmasını azaltır.

IaC şablonlarında sırlar ve hassas verileri (secrets & sensitive data) nasıl ele alırsınız?

Sırlar ve hassas veriler, şablonlarda açığa çıkmadan önce, güvenli depolama sistemlerinde (AWS Secrets Manager gibi) saklanabilir.

“Değişmez Altyapı” (Immutable Infrastructure) kavramını açıklayın ve IaC ile ilişkisini anlatın.

Değişmez Altyapı, altyapı bileşenlerinin hiçbir zaman değiştirilmediği; bunun yerine, yeni örneklerin oluşturulduğu ve yapılandırıldığı bir yaklaşımı ifade eder. IaC, yeni örneklerin oluşturulmasını otomatikleştirerek ve manuel değişiklikleri en aza indirerek bu yaklaşımı kolaylaştırır.

IaC kullanarak bir geri alma stratejisi (rollback strategy) nasıl uygulanır?

Geri alma, sürümü sorunlu değişiklikten (önceki bilinen iyi duruma göre) bir önceki IaC şablonuna döndürebilir. Bu, altyapının bilinen iyi duruma göre yeniden oluşturulmasını sağlar.

Yazının ingilizcesi:

--

--