Pulumi ile Modern Programlama Dillerinde IaC Deneyimi
Terraform'un tescilli (HCL) diline karşı, Python, TypeScript ve Go gibi gerçek programlama dillerini kullanan yeni nesil IaC aracı Pulumi.
Genel Bakış
Infrastructure as Code (IaC), bulut altyapısını kod yazarak yönetme pratiğidir. Sektörün uzun süredir standart aracı olan Terraform, altyapıyı tanımlamak için HashiCorp Configuration Language (HCL) adlı kendine özgü, bildirime dayalı (declarative) bir dil kullanır. Pulumi ise bu alandaki paradigmayı değiştirerek altyapınızı JavaScript, TypeScript, Python veya Go gibi aşina olduğunuz, tam teşekküllü dillerle yönetmenizi sağlar.
Sorun
Terraform (HCL) statik bir yapıya sahiptir. Eğer 100 farklı sunucuyu belirli dinamik iş kurallarına (if-else mantıkları, kompleks döngüler, harici API'lerden veri çekerek karar verme) göre kurmak isterseniz, HCL'in sınırlarına takılırsınız. Geliştiriciler (Developers), sadece sunucu kurmak için yeni, sınırlı ve tescilli bir dil öğrenmek zorunda kalmaktan şikayet ederler.
Çözüm: Gerçek Programlama Dilleri
Pulumi ile bulut kaynakları (AWS, Azure, GCP) kullandığınız dilin standart sınıfları ve nesneleri gibi oluşturulur.
Pulumi ile AWS S3 Bucket Oluşturma (TypeScript):
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// İhtiyaca göre standart for/while döngüleri kullanılabilir
const bucket = new aws.s3.Bucket("benim-proje-bucket", {
website: { indexDocument: "index.html" },
});
export const bucketEndpoint = bucket.websiteEndpoint;
Teknik Detaylar
Pulumi, arka planda tıpkı Terraform gibi bir State (Durum) dosyası yönetir ve bulut sağlayıcılarının API'leri ile haberleşir (Hatta bazı eklentilerinde Terraform provider'larını kendi altına sarmalar). Pulumi'nin asıl gücü, yazılım geliştirme süreçlerine kusursuz entegre olmasıdır. Normal bir yazılım kodunda yaptığınız gibi, altyapı kodunuz için de standart test kütüphaneleriyle (örn. Mocha, Jest) birim testleri (Unit Tests) yazabilirsiniz. Ayrıca IDE'nizin tam özellikli otomatik tamamlama (auto-complete) yeteneklerini HCL eklentileri olmadan doğrudan kullanabilirsiniz.
Sonuç
Terraform, altyapı odaklı çalışan klasik sistem/ağ yöneticileri (SysAdmins) için hala harika bir seçenektir. Ancak, yazılım geliştiricilerin altyapı yönetimini tamamen devraldığı (Gerçek DevOps kültürü) ve karmaşık otomasyon mantıklarının gerektiği organizasyonlarda Pulumi, altyapı kodlamasına gerçek yazılım mühendisliği pratiklerini getirdiği için hızla yükselmektedir.