Web Dağıtım Otomasyonu - GitHub Actions, Azure Web Uygulamaları ve Appsettings
Bugünün hızla değişen yazılım geliştirme dünyasında, dağıtım otomasyonu sadece bir kolaylık değil, bir gereklilik haline geldi. Daha hızlı sürüm döngüleri, daha az hata ve minimum manuel müdahale baskısı, geliştirme ve operasyon ekiplerini, sürüm kontrolü, sürekli teslimat ve CI/CD hatları ile iyi entegre olan otomatik dağıtım süreçlerini benimsemeye yöneltti.
Geliştiricilerin bu otomasyonu ustalıkla gerçekleştirmelerine yardımcı olmak için Tim Corey, "Web Deployment Automation – GitHub Actions, Azure Web Apps, and Appsettings" başlıklı videosunda bir uygulamalı rehber sunuyor. Bu makale, geliştirme ve üretim ortamlarında güvenilir bir dağıtım sürecinin önemini vurgulamak için anahtar kavramları açıklayarak onun yaklaşımını açıyor.
Deployment Neden Otomatikleştirilmeli?
Tim, dağıtım sürecini her zaman otomatikleştirilmesi gereken bir şey olarak çerçeveleyerek başlıyor. Bunu sadece modern bir en iyi uygulama olarak değil, GitHub Actions ve Azure Web Apps gibi modern dağıtım otomasyon araçları sayesinde şaşırtıcı derecede basit ve ulaşılabilir bir görev olarak tanımlıyor. Bu, manuel dağıtımları, uzun kurulum işlemlerini veya genellikle manuel çalışmadan kaynaklanan yapılandırma hatalarını ortadan kaldırır.
Yazılım dağıtımı gibi görevleri otomatikleştirmenin, her yeni kod itmesinde otomatik olarak derlendiğinden, test edildiğinden ve tamamen otomatik bir iş akışında dağıtıldığından emin olduğunu açıkça belirtiyor.
Uygulamayı Oluşturma: Blazor Web Uygulaması
Bu öğreticinin bu bölümünde Tim, Visual Studio kullanarak temel bir Blazor uygulaması oluşturmayı gösteriyor. Proje türünü seçmek, HTTPS etkinleştirmek, .NET 8'i seçmek ve render modlarını yapılandırmak için yürütüyor. Buradaki amaç, her seferinde aynı dağıtım süreci kullanılarak dağıtılabilecek basit bir projeye sahip olmaktır.
Bu erken adımlar, bir dağıtım hattını göz önünde bulundurmanın ne kadar önemli olduğunu vurgulamaktadır. Temiz ve test edilebilir bir uygulama ile başlayarak, geliştirme ekipleri daha sonra dağıtım zamanını önemli ölçüde azaltabilir.
Yerel Yapılandırma İçin Appsettings Kullanma
Tim, sahte yapılandırma değerleriyle appsettings.json dosyasının nasıl ayarlanacağını göstererek devam ediyor. Bu, yapılandırma yönetim araçları için esastır ve ekiplerin test ve üretim ortamları için ayarların ayrılmasını sürdürmesine yardımcı olur.
bulut tabanlı
Geliştirici Güvenliği İçin Yerel Sırlar
Burada, Tim Visual Studio'nun dağıtım güvenliği için otomatik özelliklerinden biri olan secrets.json dosyasını tanıtıyor. Bu sırların, uygulama ayarlarının yerini aldığını ancak geliştiricinin makinesine yerel kaldığını, gizliliği koruduklarını ve kimlik bilgilerinin kaynak kontrolüne sızma olasılığını minimize ettiklerini açıklar.
Bu öğreticinin bu bölümü, hassas bilgileri ortaya çıkarmadan, yazılım teslim döngüsünü iyileştiren farklı ortamlarda tutarlılığı ve güvenliği teşvik eden devops uygulamalarına vurgu yapar.
Sürüm Kontrolü ve GitHub Entegrasyonu
Herhangi bir CI/CD sisteminin en temel parçalarından biri sağlam sürüm kontrolüdür. Tim, bir depoyu başlatmak ve kaynak kodunu GitHub'a göndermek için Visual Studio'da Git entegrasyonunu kullanıyor. Bu, kod değişikliklerini tespit edebilen ve bir dağıtım süreci başlatabilen bir CI/CD hattını oluşturmak için bir zemin hazırlar.
Her taahhüdün izleniyor olduğunu ve bunun, hataları çözmeye veya yeni özellikler dağıtmaya çalışan operasyon ekiplerine büyük ölçüde yardımcı olduğunu belirtiyor. GitHub Actions kullanarak, otomatik dağıtım süreci hem izlenebilir hem de şeffaftır.
Azure Web Uygulamasını Sağlama
Tim, ücretsiz bir web uygulama kaynağını nasıl sağlayacağını göstermek için Azure portallarına geçiyor. Bir kaynak grubu oluşturur, buna bir ad verir ve .NET 8 ve Linux gibi yaygın varsayılanlarla çalışma zamanı ayarlarını seçer.
Kodu "kod" olarak dağıtmanıza rağmen, Azure'un aslında derleme eserlerinizi kaplarda çalıştırdığını, karmaşıklığı etkin bir şekilde soyutlayarak dağıtım için gereken araçları sunduğunu not ediyor.
Ücretsiz Katman Kısıtlamalarını Anlamak
Küçük dağıtım projeleri için Azure'un ücretsiz planı harika bir başlangıç noktasıdır. Tim, CPU kullanımını sınırladığını ve bazı özellikleri devre dışı bıraktığını, ancak geliştirme, demolar veya sahneleme için mükemmel çalıştığını açıklar.
Bu açıklama, yazılım geliştirmede sahneleme ortamlarının değerini pekiştirir, ekiplerin üretim koşullarında test yapmasına olanak tanır ve maliyet yakalamaz.
Dağıtım Merkezi Üzerinden CI/CD Ayarlama
Tim daha sonra Azure Dağıtım Merkezi'ni kullanarak, GitHub'u entegrasyon kaynağı olarak seçiyor. Bu, CI/CD modelinin kalbini — kaynak kontrolü sürekli entegrasyon ile yazılım dağıtımına bağlamayı — gösterir.
GitHub deposunu seçiyor, temel kimlik doğrulama ayarlıyor ve otomasyon hattını ana hatlarıyla belirten bir YAML dosyası üretiyor. YAML'de girinti önemine, özellikleri gösteriyor ve hatta otomatik dağıtım ayarlarının hataları önlemek için detaya dikkat gerektirdiğini hatırlatıyor.
Kimlik Doğrulama Ayarlarını Çözme
Dağıtım girişimi, temel kimlik doğrulamanın varsayılan olarak devre dışı bırakıldığını ortaya koyuyor. Azure ayarlarına gidip etkinleştiriyor, gerçek dünya dağıtım otomasyon süreçlerinin genellikle diğer hizmetler ve yapılandırmalarla uğraşmayı içerdiğini gösteriyor.
Çözüldüğünde, Dağıtım Merkezi'ne geri dönerek otomatik iş akışını başarıyla başlatıyor, bu yaklaşımın bir kez doğru şekilde kurulduğunda çok az elle müdahale gerektirdiğini kanıtlıyor.
CI/CD İş Akışı Yürütme
GitHub'a geçerek Tim, iş akışının otomatik olarak tetiklendiğini izliyor. GitHub Actions uygulamayı derler, yayınlar ve repoya basit bir itmeye dayanarak Azure'a dağıtır. Bu sürekli dağıtım yaklaşımı, test edilen hatasız kodun otomatik olarak yayılmasına yardımcı olur ve manuel dağıtımları tamamen ortadan kaldırır.
Sonuç? Başlangıç yapılandırmasında operasyon ekiplerinden minimal katılım ve daha az kesinti ile daha hızlı bir sürüm döngüsü.
Sırları Yönetmek İçin Azure'u Kullanma
Şimdi üretim ortamında, Tim appsettings.json'a dokunmadan, çevre değişkenlerinin Azure'da nasıl ayarlanacağını gösteriyor.
Bağlantı dizgileri ve yerleştirilmiş değerler eklemeyi, yerleştirilmiş anahtarlar için çift alt çizgi (__) kullanmayı açıklar. Bu, geliştiricilerin hassas verilere erişmeden kodu yönetebileceğinden emin olur — ideal bir DevOps senaryosu.
Bu endişe ayrımı, dağıtım otomasyonunun en büyük faydalarından biridir: geliştiriciler temiz kod gönderebilir ve yöneticiler yapılandırmaları güvenli bir şekilde yönetebilir.
Kod Değişikliği Gerektirmeyen Dinamik Yapılandırma
Tim, Azure'daki değişikliklerin etkili olabilmesi için bir yeniden başlatmadan sonra etkili hale geldiğini, manuel olarak yeniden derlemeye veya yeniden dağıtıma ihtiyaç olmadığını vurgular. Bu, farklı değişkenlerin test ve üretim ortamlarında kullanılması gerektiğinde özellikle kullanışlıdır, yapılandırma hatası olasılığını azaltır.
Bu, uygulama ayarları geliştiğinde bile devops ekiplerinin otomasyonu sürdürmesini sağlar, birden fazla dağıtım ortamını yeniden kod yazmadan desteklemeyi kolaylaştırır.
Sarmak: Dağıtım Otomasyonunun Faydaları
Videonun sonunda Tim, kod yazmaktan otomatik olarak dağıtılmasına kadar olan tüm dağıtım otomasyonu sürecinin yaklaşık 30 dakika sürdüğünü vurguluyor. Buna alıştıktan sonra beş dakikadan kısa sürede yapılabileceğini belirtiyor.
Geliştiricilere, bu otomatik dağıtım tekniklerini küçük projeler için bile benimsemelerini teşvik ediyor, bunların yazılım teslimatını basitleştirdiğini, hataları azalttığını ve yeni özelliklere veya sorunlara daha hızlı yanıt vermeyi sağladığını savunuyor.
Azure, AWS veya Google Cloud üzerinde çalışıyor olsanız da, dağıtım otomasyonunu anlamak ve benimsemek daha ölçeklenebilir ve güvenli yazılım projelerinin temellerini oluşturur.
Sonuç
Tim Corey'nin videosu, tamamen otomatik bir dağıtım sürecini kurmak için net ve etkili bir yol haritası sunuyor. GitHub Actions ve Azure Web Apps gibi araçların yardımıyla, modern devops uygulamaları, uygulamalarınızın dağıtımını otomatikleştirmeyi, manuel işleri azaltmayı ve geliştirme, test ve üretim ortamlarında güvenilirlik artışı sağlamayı her zamankinden daha kolay hale getiriyor.

