Web Dağıtım Otomasyonu - GitHub Actions, Azure Web Uygulamaları ve Appsettings
Bugünün hızlı tempolu yazılım geliştirme dünyasında, dağıtım otomasyonu sadece bir rahatlık değil, bir zorunluluk haline gelmiştir. 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önlendirmiştir.
Geliştiricilerin bu otomasyonu ustalaştırmasına yardım etmek için, Tim Corey, 'Web Deployment Automation – GitHub Actions, Azure Web Apps, ve Appsettings' başlıklı videosunda pratik bir kılavuz sunuyor. Bu makale, geliştirme ve üretim ortamlarında güvenilir bir dağıtım sürecinin önemini vurgulamak için önemli kavramları açıklayarak yaklaşımını detaylandırıyor.
Neden Dağıtımı Otomatikleştirmeli?
Tim, dağıtım sürecini her zaman otomatikleştirilmesi gereken bir konu olarak konumlandırarak başlıyor. Bunu sadece modern bir en iyi uygulama olarak değil, aynı zamanda GitHub Actions ve Azure Web Apps gibi modern dağıtım otomasyonu araçları sayesinde şaşırtıcı derecede basit ve erişilebilir bir görev olarak tanımlıyor. Bu sayede, manuel dağıtımlar, uzun kurulumlar veya manuel işlerden kaynaklanan yapılandırma hatalarına gerek kalmıyor.
Her yeni kod itişinizde, yazılım dağıtımı gibi görevlerin otomatikleştirilmesiyle, tamamen otomatik bir iş akışında otomatik olarak derlendiğinin, test edildiğinin ve dağıtıldığının garantisini veriyor.
Uygulamayı Oluşturma: Blazor Web Uygulaması
Bu eğitimin bu bölümünde, Tim Visual Studio kullanarak basit bir Blazor uygulaması oluşturmayı gösteriyor. Proje tipini seçmeyi, HTTPS'yi etkinleştirmeyi, .NET 8'i seçmeyi ve render modlarını yapılandırmayı anlatıyor. Buradaki hedef karmaşık bir uygulama oluşturmak değil, her seferinde aynı dağıtım sürecini kullanarak dağıtılabilecek basit bir proje oluşturmaktır.
Bu erken adımlar, bir dağıtım hattı düşüncesiyle geliştirmenin ne kadar önemli olduğunu vurgular. Temiz ve test edilebilir bir uygulama ile başlamak, geliştirme ekiplerinin sonraki dağıtım süresini önemli ölçüde azaltmasını sağlar.
Yerel Yapılandırma için Appsettings Kullanma
Tim, simüle edilmiş yapılandırma değerleriyle appsettings.json'u nasıl ayarlayacağını gösteriyor. Bu, yapılandırma yönetimi araçları için çok önemlidir ve ekiplerin test ve üretim ortamları arasındaki ayarların ayrımını korumalarına yardımcı olur.
IConfiguration'ı bir Razor bileşenine enjekte ederek bağlantı dizeleri ve iç içe geçmiş ayarlar gibi değerleri kolayca ortaya koyabileceğinizi açıklıyor — bağımsız süreçlerin temiz yapılandırma ayrımına dayandığı bulut tabanlı uygulamalarda tercih edilen bir yaklaşımdır.
Geliştirici Güvenliği için Yerel Gizli Bilgiler
Burada, Tim secrets.json'u, otomatik dağıtım güvenliği için Visual Studio'nun özelliğini tanıtıyor. Bu sırlar, uygulama ayarlarını geçersiz kılar, ancak geliştiricinin makinesinde yerel kalır, gizliliği korur ve kimlik bilgilerini sürüm kontrolüne sızdırma olasılığını en aza indirir.
Bu eğitim bölümü, farklı ortamlar arasında güvenlik ve tutarlılığı teşvik eden devops uygulamalarını vurgular, hassas bilgileri ifşa etmeden yazılım teslim döngüsünü iyileştirir.
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, Visual Studio'daki Git entegrasyonunu kullanarak bir depo başlatır ve kaynak kodunu GitHub'a gönderir. Bu, kod değişikliklerini tespit edip dağıtım sürecini otomatik olarak başlatabilecek bir CI/CD hattı oluşturmaya zemin hazırlar.
Yapılan her taahhütün izlendiğini ve bu durumun hata çözmek veya yeni özellikler dağıtmak isteyen operasyon ekiplerine büyük ölçüde yardımcı olduğunu belirtiyor. GitHub Actions kullanarak, otomatik dağıtım süreci izlenebilir ve şeffaftır.
Azure Web Uygulamasını Sağlama
Tim, ücretsiz bir web uygulaması kaynağının nasıl sağlanacağını göstermek için Azure portalına geçiyor. Bir kaynak grubu oluşturur, ona bir isim atar ve .NET 8 ve Linux gibi yaygın bulut yerel uygulamaları için varsayılan runtime ayarlarını seçer.
"Kod" olarak dağıtırken bile, Azure'un aslında üretim artefaktlarınızı konteynerler içinde çalıştırdığını, böylece karmaşıklığı etkili bir şekilde soyutladığını ve dağıtım için gerekli araçları sağladığını not eder.
Ücretsiz Tarife Sınırlamalarını Anlama
Küçük dağıtım projeleri için, Azure'un ücretsiz planı mükemmel bir başlangıç noktasıdır. Tim, belirli özelliklerin devre dışı bırakılması ve CPU kullanımının sınırlandırılması gibi sınırlamaları açıklıyor, ancak bunun geliştirme, demolar veya aşamalama için mükemmel çalıştığını belirtiyor.
Yazılım geliştirmede aşamalı ortamların değerini pekiştiriyor, takımların neredeyse üretim koşullarında maliyet olmadan test yapmasına olanak sağlıyor.
Dağıtım Merkezi Üzerinden CI/CD Kurulumu
Ardından, Tim Azure'un Dağıtım Merkezi'ni kullanarak entegrasyon kaynağı olarak GitHub'u seçer. Bu, CI/CD modelinin kalbini gösterir—sürüm kontrolünü sürekli entegrasyon ile yazılım dağıtımına bağlar.
GitHub deposunu seçer, temel kimlik doğrulama ayarlar ve otomasyon hattını açıklayan bir YAML dosyası oluşturur. YAML'deki girintinin önemini, otomatik dağıtım kurulumlarının bile hatalardan kaçınmak için ayrıntılara dikkat gerektirdiğini hatırlatır.
Kimlik Doğrulama Ayarlarını Çözümleme
Dağıtım girişimi, temel kimlik doğrulamanın varsayılan olarak devre dışı bırakıldığını ortaya çıkarır. Tim, gerçek dünya dağıtım otomasyon süreçlerinin genellikle diğer hizmetler ve yapılandırmalarla ilgilenmeyi içerdiğini göstererek Azure ayarlarına gider ve bunu etkinleştirir.
Bu sorun çözüldükten sonra, Dağıtım Merkezi'ne geri döner ve otomatize edilmiş iş akışını başarıyla başlatır; doğru şekilde ayarlandığında bu yaklaşımın çok az manuel müdahale gerektirdiğini kanıtlar.
CI/CD İş Akışı İcrası
GitHub'a geçiş yaparak, Tim iş akışının otomatik olarak tetiklendiğini izler. GitHub Actions uygulamayı derler, yayınlar ve Azure'a dağıtır—hepsi basit bir depo itimi üzerine. Bu sürekli dağıtım yaklaşımı, otomatik olarak hata testi yapılmış kodda yardımcı olur ve manuel dağıtımları tamamen azaltır.
Sonuç? İlk yapılandırmanın ardından operasyon ekipleri için daha az kesinti süresi ve daha hızlı bir sürüm döngüsü.
Azure'u Gizli Bilgileri Yönetmek İçin Kullanma
Şimdi üretim ortamında, Tim, appsettings.json'u kaynak koduna dokunmadan geçersiz kılacak ortam değişkenlerini Azure'da nasıl ayarlayacağını gösterir.
Bağlantı dizelerini ve iç içe geçmiş değerleri nasıl ekleyeceğini gösterir, iç içe anahtarlar için çift alt çizgi (__) kullanır. Bu, geliştiricilerin hassas verilere erişmeden kodu koruyabilmesini sağlar—ideal bir DevOps senaryosu.
Endişelerin bu ayrımı, dağıtım otomasyonunun en büyük faydalarından biridir: geliştiriciler temiz kod gönderir ve yöneticiler ayarları güvenli bir şekilde yönetir.
Kod Değişiklikleri Olmadan Dinamik Yapılandırma
Tim, Azure'da yapılan değişikliklerin yeniden başlatmadan sonra etkili olabileceğini, yeniden derlemeye veya manuel olarak dağıtmaya gerek olmadığını vurgular. Bu, özellikle test ve üretim ortamlarında farklı değişkenlerin kullanılması gerektiğinde kullanışlıdır, yapılandırma hataları olasılığını azaltır.
Bu ayrıca uygulama ayarları geliştikçe devops ekiplerine otomasyonu sürdürme olanağı sağlar, kodu yeniden yazmadan birden fazla dağıtım ortamını desteklemeyi kolaylaştırır.
Kapanış: Dağıtım Otomasyonunun Faydaları
Videonun sonunda, Tim, yazılımdan kod yazmaya kadar tüm dağıtım otomasyon sürecinin yaklaşık 30 dakika sürdüğünü vurgular. Bir kez kavradığınızda, beş dakikadan az bir sürede yapılabilir.
Geliştiricileri, yazılım teslimini basitleştirmek, hataları azaltmak ve yeni özelliklere veya sorunlara daha hızlı yanıt vermeyi sağlamak için bu otomatik dağıtım tekniklerini küçük projelerde bile uygulamaya teşvik eder.
İster Azure, AWS ister Google Cloud ile çalışıyor olun, dağıtım otomasyonunu anlamak ve benimsemek daha ölçeklenebilir ve güvenli yazılım projeleri için temeli oluşturur.
Sonuç
Tim Corey'nin videosu, tamamen otomatik bir dağıtım süreci 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ı hiç olmadığı kadar otomatik hale getirmeyi, manuel çalışmayı azaltmayı ve geliştirme, test ve üretim ortamlarında güvenilirliği artırmayı kolaylaştırır.

