Kod Olarak Altyapı Nedir? O nasıl çalışır?
Kod Olarak Altyapı (IaC), geliştiricilerin BT ortamlarını birkaç satır kodla sağlamalarına olanak tanır. Yapılandırılması saatler hatta günler gerektiren manuel altyapı kurulumlarının aksine, bir IaC sisteminin konuşlandırılması dakikalar alır.
Bu makalede Kod Olarak Altyapı'nın arkasındaki kavramlar açıklanmaktadır. IaC'nin nasıl çalıştığını ve otomatik yapılandırmaların ekiplerin daha yüksek hızda ve daha düşük maliyetle yazılım geliştirmesine nasıl olanak tanıdığını öğreneceksiniz.
Kod Olarak Altyapı (IaC) Nedir?
Kod Olarak Altyapı, gerekli cihaz ve sistemleri manuel olarak ayarlamak yerine, bir ortamı kod aracılığıyla sağlama ve yapılandırma işlemidir. Kod parametreleri tanımlandıktan sonra geliştiriciler komut dosyalarını çalıştırır ve IaC platformu bulut altyapısını otomatik olarak oluşturur.
Bu tür otomatik BT kurulumları, ekiplerin yazılımlarını test etmek ve çalıştırmak için istenen bulut ayarını hızlı bir şekilde oluşturmasına olanak tanır. Kod Olarak Altyapı, geliştiricilerin ağlar, yük dengeleyiciler, veritabanları, sanal makineler ve bağlantı türleri dahil olmak üzere ihtiyaç duydukları her türlü altyapı bileşenini oluşturmasına olanak tanır.
Kod Olarak Altyapı Nasıl Çalışır?
IaC ortamı oluşturmanın nasıl çalıştığına dair adım adım açıklama aşağıda verilmiştir:
- Bir geliştirici, yapılandırma parametrelerini alana özgü bir dilde (DCL) tanımlar.
- Talimat dosyaları bir ana sunucuya, bir yönetim API'sine veya bir kod deposuna gönderilir.
- IaC platformu, altyapıyı oluşturmak ve yapılandırmak için geliştiricinin talimatlarını takip eder.
IaC ile kullanıcıların her yazılım geliştirmek, test etmek veya dağıtmak istediklerinde bir ortam yapılandırmasına gerek kalmaz. Tüm altyapı parametreleri manifest adı verilen dosyalar biçiminde kaydedilir.
Tüm kod dosyaları gibi manifestlerin de yeniden kullanılması, düzenlenmesi, kopyalanması ve paylaşılması kolaydır. Bildirimler altyapıyı oluşturmayı, test etmeyi, hazırlamayı ve dağıtmayı daha hızlı ve tutarlı hale getirir.
Geliştiriciler yapılandırma dosyalarını kodlar ve bunları sürüm kontrolünde saklar. Birisi bir dosyayı düzenlerse, çekme istekleri ve kod inceleme iş akışları değişikliklerin doğruluğunu kontrol edebilir.

Kod Olarak Altyapı Hangi Sorunları Çözer?
Kod Olarak Altyapı, manuel kurulumların üç ana sorununu çözer:
- Yüksek fiyat
- Yavaş yüklemeler
- Çevre tutarsızlıkları
Yüksek fiyat
Her BT ortamının manuel olarak ayarlanması pahalıdır. Donanım ve yazılımı kurmak için özel mühendislere ihtiyacınız var. Ağ ve donanım teknisyenleri denetçilere ihtiyaç duyar, dolayısıyla daha fazla yönetim yükü ortaya çıkar.
Kod Olarak Altyapı ile merkezi olarak yönetilen bir araç, bir ortam oluşturur. Yalnızca tükettiğiniz kaynaklar için ödeme yaparsınız ve kaynaklarınızın ölçeğini hızla artırabilir ve azaltabilirsiniz.
Yavaş Yüklemeler
Bir altyapıyı manuel olarak kurmak için mühendislerin öncelikle sunucuları rafa kaldırması gerekir. Daha sonra donanımı ve ağı istenen ayarlara göre manuel olarak yapılandırırlar. Ancak o zaman mühendisler işletim sisteminin ve barındırılan uygulamanın gereksinimlerini karşılamaya başlayabilirler.
Bu süreç zaman alıcıdır ve hatalara açıktır. IaC kurulum süresini dakikalara indirir ve süreci otomatikleştirir.
Çevre Tutarsızlıkları
Birkaç kişi yapılandırmaları manuel olarak dağıttığında tutarsızlıkların ortaya çıkması kaçınılmazdır. Zamanla aynı ortamları takip etmek ve yeniden üretmek zorlaşıyor. Bu tutarsızlıklar geliştirme, kalite güvence ve üretim ortamları arasında kritik farklılıklara yol açar. Sonuçta ayarlardaki farklılıklar kaçınılmaz olarak dağıtım sorunlarına neden olur.
Kod Olarak Altyapı, ortamların insan hatasına yer bırakmadan otomatik olarak sağlanması ve yapılandırılması nedeniyle sürekliliği sağlar.
DevOps'ta Kod Olarak Altyapının Rolü
Kod Olarak Altyapı DevOps için çok önemlidir. Çevik süreçler ve otomasyon, yalnızca kodu çalıştırmak ve test etmek için hazır bir BT altyapısının mevcut olması durumunda mümkündür.
IaC ile DevOps ekipleri daha iyi testlerin, daha kısa kurtarma sürelerinin ve daha öngörülebilir dağıtımların keyfini çıkarır. Bu faktörler hızlı tempolu yazılım teslimi için hayati öneme sahiptir. Tek tip BT ortamları, DevOps kanalında hata oluşma olasılığını azaltır.
DevOps ekipleri gerekli altyapının tüm yönlerini sağladığından IaC yaklaşımının herhangi bir sınırlaması yoktur. Mühendisler sunucular oluşturur, işletim sistemlerini, kapsayıcıları, uygulama yapılandırmalarını dağıtır, veri depolamayı, ağları ve bileşen entegrasyonlarını kurar.
IaC ayrıca CI/CD araçlarıyla da entegre edilebilir. Doğru kurulumla kod, uygulama sürümlerini test amacıyla otomatik olarak bir ortamdan diğerine taşıyabilir.

DevOps Çağında Altyapı başlıklı makalemizden işletmelerin neden giderek daha fazla DevOps'a yöneldiğini öğrenin.
Kod Olarak Altyapının Avantajları
Bir kuruluşun Kod Olarak Altyapı'dan elde ettiği faydalar şunlardır:
Hız
IaC ile ekipler geliştirme, test ve üretim için altyapıyı hızla tedarik edip yapılandırıyor. Hızlı kurulumlar tüm yazılım geliştirme yaşam döngüsünü hızlandırır.
Müşteri geri bildirimlerine yanıt verme oranı da daha hızlıdır. Geliştiriciler daha fazla kaynak beklemeye gerek kalmadan yeni özellikleri hızlı bir şekilde ekler. Kullanıcı isteklerine hızlı geri dönüşler müşteri memnuniyetini artırır.
Standardizasyon
>Geliştiriciler, teslimat süreci sırasında sistem tekdüzeliğine güvenebilirler. Farklı sunucuların sık sık manuel güncellemeler nedeniyle benzersiz ayarlar geliştirmesi durumu olan yapılandırma kaymaları yoktur. Sürüklenmeler dağıtım ve güvenlik endişelerinde sorunlara yol açar.
IaC, aynı bildirimi her çalıştırdığınızda aynı ortamı sağlayarak yapılandırma sapmalarını önler.
Tekrar Kullanılabilirlik
DevOps ekipleri mevcut IaC komut dosyalarını çeşitli ortamlarda yeniden kullanabilir. Her yeni altyapıya ihtiyaç duyduğunuzda sıfırdan başlamanıza gerek yok.
İşbirliği
Sürüm kontrolü birden fazla kişinin aynı ortamda işbirliği yapmasına olanak tanır. Sürüm kontrolü sayesinde geliştiriciler farklı altyapı bölümleri üzerinde çalışır ve değişiklikleri kontrollü bir şekilde hayata geçirirler.
Yeterlik
Kod Olarak Altyapı, geliştirme yaşam döngüsü boyunca verimliliği ve üretkenliği artırır.
Programcılar, yalıtılmış olarak geliştirmek için korumalı alan ortamları oluşturur. Operasyonlar, güvenlik testleri için hızlı bir şekilde altyapı hazırlayabilir. QA mühendisleri test sırasında üretim ortamlarının mükemmel kopyalarına sahiptir. Dağıtım zamanı geldiğinde geliştiriciler hem altyapıyı hem de kodu tek adımda üretime aktarır.
IaC ayrıca bir depodaki tüm ortam oluşturma komutlarının kaydını tutar. Bir sorunla karşılaşırsanız hızlı bir şekilde önceki bir örneğe geri dönebilir veya ortamı yeniden konuşlandırabilirsiniz.
Daha az maliyet
IaC, yazılım geliştirme maliyetlerini azaltır. Ortamları manuel olarak ayarlamak için kaynak harcamanıza gerek yoktur.
Çoğu IaC platformu tüketime dayalı bir maliyet yapısı sunar. Yalnızca aktif olarak kullandığınız kaynaklar için ödeme yaparsınız, böylece gereksiz masraflar olmaz.
Ölçeklenebilirlik
IaC, mevcut altyapıya kaynak eklemeyi kolaylaştırır. Yükseltmeler hızlı ve kolay bir şekilde sağlanır, böylece patlama dönemlerinde hızlı bir şekilde genişletebilirsiniz.
Örneğin, çevrimiçi hizmetler yürüten kuruluşlar, kullanıcı taleplerine ayak uydurabilmek için kolayca ölçeklendirebilir.
Felaket Kurtarma
Felaket durumunda büyük sistemleri IaC ile hızlı bir şekilde kurtarmak kolaydır. Aynı bildirimi yeniden çalıştırırsınız ve gerekirse sistem farklı bir konumda tekrar çevrimiçi olur.

Kod En İyi Uygulamaları Olarak Altyapı
Çok Az veya Hiç Belge Kullanmayın
Yapılandırma dosyalarındaki özellikleri ve parametreleri tanımlayın. Kullanılan konfigürasyonlarla senkronizasyonu bozulan ek dokümantasyona gerek yoktur.
Sürüm Kontrolü Tüm Yapılandırma Dosyaları
Tüm yapılandırma dosyalarınızı kaynak kontrolü altına alın. Sürüm oluşturma, altyapıyı yönetirken esneklik ve şeffaflık sağlar. Ayrıca önceki bildirimleri izlemenize, yönetmenize ve geri yüklemenize olanak tanır.
Konfigürasyonları Sürekli Test Edin
Herhangi bir değişikliği üretime aktarmadan önce ortamları test edin ve izleyin. Zamandan tasarruf etmek için, yapılandırma kodu her değiştirildiğinde çalışacak şekilde otomatik testler ayarlamayı düşünün.
Modülerliğe Geçin
Altyapınızı birden fazla bileşene bölün ve ardından bunları otomasyon yoluyla birleştirin. IaC segmentasyonu birçok avantaj sunar. Kodunuzun belirli bölümlerine kimlerin erişebileceğini siz kontrol edersiniz. Ayrıca bildirimlerde yapılabilecek değişiklik sayısını da sınırlandırırsınız.
Kod Araçları Olarak Altyapı
IaC araçları, bulut ortamlarının sağlanmasını hızlandırır ve otomatikleştirir. Araçların çoğu ayrıca önceden oluşturulmuş sistemleri izler ve kodda yapılan değişiklikleri geri alır.
Özellikler açısından farklılık gösterse de Kod Olarak Altyapı araçlarının iki ana türü vardır:
- Zorunlu araçlar
- Bildirimsel araçlar
Zorunlu Yaklaşım Araçları
Zorunluluk yaklaşımına sahip araçlar, altyapının istenilen duruma ulaşmasını sağlayacak komutları tanımlar. Mühendisler altyapıyı adım adım sağlayan komut dosyaları oluşturur. Optimum dağıtım sürecini belirlemek kullanıcıya kalmıştır.
Zorunlu yaklaşım aynı zamanda prosedürel yaklaşım olarak da bilinir.
Bildirime dayalı yaklaşım araçlarıyla karşılaştırıldığında, zorunlu IaC daha fazla manuel çalışma gerektirir. Komut dosyalarını güncel tutmak için daha fazla görev gereklidir.
Zorunlu araçlar, komut dosyası oluşturma konusunda geçmişi olan sistem yöneticilerine daha uygundur.
const aws = require("@pulumi/aws");
let size = "t2.micro";
let ami = "ami-0ff8a91507f77f867"
let group = new aws.ec2.SecurityGroup("webserver-secgrp", {
ingress: [
{protocol: "tcp", fromPort: 22, toPort: 22, cidrBlocks: ["0.0.0.0/0"] },
],
});
let server = new aws.ec2.Instance("webserver-www", {
instanceType: size,
securityGroups: [ group.name ],
ami: ami,
});
exports.publicIp = server.publicIp;
exports.publicHostName= server.publicDns;Zorunlu IaC örneği (Pulumi kullanılarak)
Bildirimsel Yaklaşım Araçları
Bildirime dayalı bir yaklaşım, altyapının istenen durumunu, bu duruma ulaşmak için gereken adımları listelemeden açıklar. IaC aracı gereksinimleri işler ve ardından gerekli yazılımı otomatik olarak yapılandırır.
Adım adım talimatlara gerek olmasa da bildirimsel yaklaşım, ortamı kurmak ve yönetmek için yetenekli bir yönetici gerektirir.
Bildirimsel araçlar, güçlü programlama deneyimine sahip kullanıcılara yöneliktir.
resource "aws_instance" "myEC2" {
ami = "ami-0ff8a91507f77f867"
instance_type = "t2.micro"
security_groups = ["sg-1234567"]
}Kod örneği olarak Bildirime Dayalı Altyapı (Terraform kullanılarak)
Popüler IaC Araçları
Piyasada en yaygın kullanılan Kod Olarak Altyapı araçları şunları içerir:
- Terraform: Bu açık kaynaklı bildirim aracı, bir altyapı oluşturmak ve yönetmek için parametrelerle doldurduğunuz önceden yazılmış modüller sunar.
- Pulumi:Pulumi'nin temel avantajı, kullanıcıların istenen altyapıyı tanımlamak için en sevdikleri dile güvenebilmeleridir.
- Puppet: Puppet'ın Ruby tabanlı DSL'sini kullanarak altyapının istenen durumunu tanımlarsınız ve araç, ortamı otomatik olarak oluşturur.
- Ansible: Ansible, bileşenlerin ve sistemlerin birbirleriyle nasıl ilişki kurduğunu açıklayarak altyapıyı modellemenize olanak tanır.
- Şef: Şef, piyasadaki en popüler emir aracıdır. Chef, Ruby tabanlı DSL'yi kullanarak kullanıcıların "tarifler" ve "yemek kitapları" oluşturmasına olanak tanır. Bu dosyalar istenen ortamı elde etmek için gereken adımları tam olarak belirtir.
- SaltStack: SaltStack'i diğerlerinden ayıran şey, altyapı bileşenlerinin sağlanması ve yapılandırılmasının basitliğidir.
Pulumi Nedir? başlıklı makalemizden Pulumi hakkında daha fazla bilgi edinebilirsiniz.
Rekabetçi Kalmak İstiyorsanız IaC İsteğe Bağlı Değildir
Kod Olarak Altyapı, mevcut yazılım geliştirmenin hızlı temposuna ayak uydurmanın etkili bir yoludur. BT ortamlarının her gün inşa edilmesi, değiştirilmesi ve yıkılması gerektiği bir dönemde IaC, rekabetçi kalmak isteyen her ekip için bir gerekliliktir.
PhoenixNAP'in Bare Metal Cloud platformu, sunucuların API odaklı provizyonunu destekler. Ayrıca önde gelen Kod Olarak Altyapı araçlarından ikisi olan Ansible ve Terraform ile de tamamen entegredir.
Bare Metal Cloud ve bunun bir kuruluşun Kod Olarak Altyapı çalışmalarını ilerletmeye nasıl yardımcı olabileceği hakkında daha fazla bilgi edinin.