Altyapı Yönetiminde Kodlama: IaC

Mislina ÇETİNER
Turk Telekom Bulut Teknolojileri
3 min readApr 6, 2023

Bu yazımda çalışma hayatına yeni başlayan biri olarak sıklıkla duyduğum IaC’ nin ne olduğu, nasıl çalıştığı ve popüler araçlarının neler olduğu gibi konuları ele almak istiyorum.

Nedir Bu IaC (Infrastructure as Code)?

Bir yazılım mühendisliği yaklaşımıdır ve yazılım geliştirme prensiplerini altyapı yönetimine uygular. IaC ile, fiziksel veya sanal sunucular, ağ bileşenleri, veritabanları ve diğer altyapı bileşenleri gibi kaynaklar programlama dilleri ve otomasyon araçları kullanılarak tanımlanabilir ve yönetilebilir hale getirilir.

Altyapı kaynakları bir kod deposunda saklanır ve bu kod depoları, bir yazılım projesi gibi yönetilir. Altyapı kaynaklarının tanımları, kaynakların nasıl oluşturulacağı, yapılandırılacağı, yönetileceği ve güncelleneceği gibi tüm işlemleri açıkça belirleyen bir dizi dosyada bulunur. Bu dosyalar, genellikle JSON veya YAML kullanılarak yazılır.

Birçok büyük teknoloji şirketi, IaC’yı kendi altyapı yönetimi için kullanmaktadır. Örneğin, Amazon Web Services (AWS), CloudFormation adlı kendi IaC aracını sunar. Ayrıca, Google Cloud Platform, Google Cloud Deployment Manager ve Microsoft Azure, Azure Resource Manager adlı kendi IaC araçlarını kullanır. Diğer büyük bulut sağlayıcıları da kendi IaC araçlarına sahiptir.

Bunun yanında IaC’nin birkaç popüler aracı vardır. Terraform, Ansible, Chef bu araçlardan bazılarıdır. Terraform ve Ansible açık kaynaklı olup, IaC dosyalarının yazılması ve altyapı kaynaklarının yönetilmesi için kullanılır. Genellikle bulut hizmetleri sağlayıcıları, sanallaştırma ortamları veya fiziksel sunucular gibi altyapı türleri için uygun olan farklı özellikler sunarlar, kodlama becerileri olan kişilerin altyapılarını kodlayarak, hızlı bir şekilde dağıtmasına olanak tanırlar.

Infrastructure as Code ve Devops

IaC aslında uzun bir süredir var olan bir prensiptir. İlk örneklerinden biri, 2004 yılında ilk kez duyurulan “Puppet” adlı açık kaynaklı bir araçtır. Ancak son yıllarda özellikle bulut bilişim ve DevOps kültürü ve hızlı uygulama dağıtımı gibi etkenlerle birlikte daha popüler hale gelmiştir. DevOps, yazılım geliştirme ve IT operasyonları arasındaki işbirliğini ve iletişimi artırmayı amaçlayan bir kültürdür. IaC, bu kültürün bir parçasıdır. Altyapının otomatik olarak yönetilmesine olanak tanıması yazılım geliştirme sürecini hızlandırır, daha hızlı bir şekilde uygulama dağıtmanızı sağlar. Bu nedenle IaC ile DevOps arasında sıkı bir bağlantı vardır.

IaC bize ne gibi faydalar sunar?

Kaynak kodunun depolanması ve yönetimi için kullanılan aynı araçlar kullanılarak, yazılım geliştirme takımları ile altyapı yönetim takımları arasında daha iyi bir işbirliği ve bütünleşme sağlanabilir.

IaC ile altyapı kaynakları otomatikleştirilerek, altyapı yönetiminde insan kaynaklı hatalar azaltılabilir ve sorunlar daha hızlı çözülebilir. Tabi ki bu, zaman ve çabadan tasarruf sağladığı için bize verimlilik olarak geri döner.

IaC ile altyapı kaynaklarının kod halinde saklanması, değişikliklerin takip edilmesi, sürüm kontrolü yapılması ve geri alma işlemlerinin yapılması kolaylaşır. İhtiyaçlarınıza göre altyapıyı ölçeklendirmenizi sağlar.

Tool Seçerken Hangi Soruları Sormalıyız?

  • Projemiz için hangi platformlar ve teknolojileri kullanıyoruz? IaC aracı, kullandığımız platformlar ve teknolojileri destekliyor mu?
  • Hangi özellikler bizim için önemli? Konfigürasyon yönetimi, altyapı yönetimi, yönetilen hizmetler, değişiklik yönetimi gibi hangi özellikler bizim için en önemlileri?
  • Hangi araçlar projemizdeki diğer araçlarla daha iyi entegre olur?
  • Hangi araç, projemizdeki mevcut ve gelecekteki ihtiyaçlarımızı karşılayabilir? Aracın esnekliği ve ölçeklenebilirliği bizim projemiz için yeterli mi?
  • Hangi araçların topluluk desteği daha iyi? Aracın topluluk desteği, belgeleri, forumları, eğitimleri, örnekleri, vb. bizim için yeterli mi?
  • Hangi araçların maliyeti daha uygun? Proje bütçemize uygun mu?

Bu sorular, IaC aracı seçerken karar vermede yardımcı olabilir. Ancak, her projenin kendine özgü gereksinimleri ve özellikleri olduğundan, IaC aracı seçiminde daha fazla faktör de dikkate alınmalıdır. Bu karar verme sürecini size bırakıyorum.

Yazımın sonuna gelirken bahsettiklerimi özetlemek gerekirse;

IaC, cloud altyapı yönetimi, makine öğrenimi ve veri işleme altyapısı yönetimi özellikle büyük veri işleme sistemlerinde ve yazılım geliştirme/test etme ortamları gibi birçok farklı alanda kullanılabilir.

IaC projelerimizde bize tekrar kullanabilirlik, tutarlılık, izlenebilirlik gibi birçok fayda sağlar.

--

--