AZURE’DE TERRAFORM İLE ALT YAPI GELİŞTİRME – BÖLÜM 1: KOD OLARAK ALTYAPI (IAC)
Bu makale dizisinde, Terraform kullanarak Azure altyapınızı nasıl geliştirebileceğinizle ilgili birçok demo göreceksiniz. Demolara başlamadan önce, Kod Olarak Altyapı kavramından bahsetmek istiyorum.
Basitçe söylemek gerekirse, Kod olarak altyapı, tutarlı ve öngörülebilir ortamlar elde etmek için yazılım aracılığıyla altyapı sağlar. Dolayısıyla Kod Olarak Altyapı (IaC) manuel bir süreç değildir ve amaç tutarlılığı sağlamaktır. Bu, altyapıyı dağıtmak için bu yazılımı her kullandığınızda, bunu tutarlı bir şekilde yaptığı ve sonunda elde ettiğiniz ortamın tahmin edilebilir bir ortam olduğu anlamına gelir. IaC, bir uygulamanın aynı sürümünü çalıştırmak için birden fazla ortama ihtiyacınız olduğunda özellikle önemlidir.
IAC konseptinde, altyapınızı tanımlamak için bir tür yazılım ve kodlama mekanizması kullanan konfigürasyon dosyalarını kullanmanız gerekir. Önemli formatlar, bu yazı dizisinin konusu olacak olan JSON, YAML ve HashiCorp’tur (Terraform). Altyapınızı kod olarak tanımladıktan sonra konseptiniz, kodunuzu kaynak kontrollü bir havuzda barındırmak olacaktır. Çoğu IaC geliştiricisinin aşina olduğu kaynak kontrol yönetimi GitHub’dır. GitHub, kod depolarını depolamak için Git kaynak denetimini kullanır ve bu kod sürümlendirilir ve birden fazla geliştirici aynı anda üzerinde çalışabilir. Kodda tanımladığınız altyapı, sürümlü bir kaynak kontrol deposunda saklanmalıdır.
Altyapıyı kod olarak geliştirirken kullanılan iki yaklaşım vardır. Deklaratif ve Zorunlu. Deklaratif ve zorunluluk arasındaki fark, bildirimin mevcut durumu bilmesi gerektiği, onu oluşturup oluşturmayacağını bilmek için altyapının zaten var olup olmadığını bilmesi gerektiğidir. Ancak zorunluluk, altyapının var olup olmadığı hakkında hiçbir fikre sahip değildir. Zorunlu örnek ayrıca kolayca yeniden çalıştırılamaz ve güncelleme veya silme özelliğini içermez. Birçok IAC aracı bildirimsel bir yaklaşım kullanır ve istenen altyapıyı otomatik olarak sağlar. İstediğiniz durumda değişiklik yaparsanız, bildirime dayalı bir IAC aracı bu değişiklikleri sizin için uygulayacaktır. Zorunlu bir araç, bu değişikliklerin nasıl uygulanması gerektiğini anlamanızı gerektirecektir.
Kod olarak Altyapının kavramlarından biri İdempotanstır. Idempotence, bir dağıtım komutunun, ortamın ilk durumundan bağımsız olarak hedef ortamı her zaman aynı yapılandırmaya ayarladığı özelliktir. Yetersizlik, mevcut bir hedefi otomatik olarak yapılandırarak veya mevcut hedefi atarak ve yeni bir ortam yaratarak elde edilir.
Son olarak IaC geliştirmeye yeni başlayan herkesin aklındaki soruyu sorarak yazı dizimizin ilk bölümünü tamamlayalım. Altyapıyı elle dağıtmak yerine kod olarak tanımlama zahmetine neden katlanasınız ki?
- Dağıtımınızı otomatikleştirirseniz, her yeni ortam oluşturmanız gerektiğinde manuel adımlardan geçmeniz gerekmez.
- Birden çok ortam oluşturmanız veya aynı ortamı yeniden oluşturmanız gerektiğinde, her seferinde tutarlı olacaktır.
- Tutarlı bir ortam yarattığınız için daha sonra sorun gidermeniz gerekmez.
- IaC dağıtımları, oluşturduğunuz bileşenleri yeniden kullanmanıza olanak tanır. Örneğin, belirli bir uygulama için bir veritabanı sunucusunun nasıl düzgün bir şekilde dağıtılacağını anladıktan sonra, o veritabanı sunucusunun yapılandırma bilgilerini alabilir ve benzer bir veritabanı sunucusuna ihtiyaç duyan başka herhangi bir uygulamada yeniden kullanabilirsiniz.