Azure App Service ile Web Uygulamasını Yayına Almak ve Yönetmek
Beceri rehberi

Azure App Service ile Web Uygulamasını Yayına Almak ve Yönetmek

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Azure App Service, sunucu yönetmeden web uygulaması ve API barındırmanızı sağlar. İlk yayını komut satırından yapmayı, uygulama ayarlarını ve günlükleri yönetmeyi, staging slot ile kesintisiz sürüm geçişini anlatır.

Bir bakışta

  1. App Service, web uygulamasını altyapıyı yönetmeden çalıştıran bir platformdur. Windows ve Linux üzerinde .NET, Java, Node.js, Python ve PHP çalıştırır; konteyner de yayınlanabilir.
  2. İlk yayın tek komutla yapılabilir, ama kalıcı düzen için yöntem seçmek gerekir. Hızlı deneme, zip dağıtımı ve sürekli dağıtım farklı ihtiyaçlara hizmet eder.
  3. Uygulama ayarları kodun dışında tutulur ve ortama göre değişir. Gizli değerleri kaynak koda gömmek yerine ayar olarak tanımlamak hem güvenli hem esnektir.
  4. Slot kullanmak yayını kesintisiz ve geri alınabilir hale getirir. Yeni sürüm hazırlık slotunda ısıtılır, sonra üretimle yer değiştirilir; sorun çıkarsa aynı takas geri alır.
  5. Yayın sonrası günlükleri izlemeyi bilmek, ilk sorunu hızla bulmayı sağlar. Günlük akışı komut satırından açılır ve canlı hataları gösterir.

App Service ne işe yarar ve ne zaman seçilir?

Azure App Service, web uygulamaları, mobil arka uçlar ve REST API'leri, altlarındaki sunucuları yönetmeden çalıştırmanız için tasarlanmış bir platformdur. İşletim sistemi yamaları, çalışma zamanı güncellemeleri ve sunucu bakımı platformun işidir; sizin işiniz uygulamanızı yazmak, yayınlamak ve ayarlamaktır.

Platform .NET, Java, Node.js, Python ve PHP uygulamalarını hem Windows hem Linux üzerinde çalıştırır. Uygulamanız konteynerlaştırılmışsa özel konteyner olarak da yayınlanabilir. Özel alan adı, yönetilen sertifika, otomatik ölçekleme, kimlik doğrulama entegrasyonu ve sürekli dağıtım gibi özellikler hazır gelir.

Tam sunucu denetimi gerekiyorsa sanal makine, konteyner orkestrasyonu gerekiyorsa başka bir hizmet daha uygun olabilir. Web uygulamanız standart bir çalışma zamanında koşuyorsa ve altyapı yönetimini azaltmak istiyorsanız App Service çoğu zaman doğal başlangıçtır. Seçim kararı Azure'ın hesaplama hizmetleri karşılaştırma rehberinde de ele alınır.

Yayına almadan önce verilecek kararlar

Birinci karar çalışma zamanı ve işletim sistemidir: uygulamanızın dili ve sürümü, Linux ya da Windows tercihi. Komut satırından desteklenen çalışma zamanlarını listeleyebilirsiniz.

İkinci karar plan katmanıdır. Plan, CPU ve bellek miktarını, ölçekleme seçeneklerini ve özellikleri belirler. Deneme için küçük bir katman yeterlidir; fakat dağıtım slotları, otomatik ölçekleme gibi özellikler belirli katmanlardan itibaren açılır. Slot kullanacaksanız başlangıçta bu katman şartını hesaba katın. Katmanın fiyatı ve kapasitesi için Azure'ın güncel sayfasına bakın.

Üçüncü karar dağıtım yöntemidir. Aşağıdaki karar yapısı hangi yöntemin hangi ihtiyaca uyduğunu özetler.

Şekil 1

Dağıtım yöntemi ihtiyaca göre seçilir

Yayın yöntemi

Uygulamayı hangi yöntemle yayınlamalı?
  1. Hızlı deneme, ilk kez Azure'a çıkışaz webapp upKaynak grubu, plan ve uygulamayı tek komutta oluşturur ve kodu gönderir.
  2. Hazır bir zip paketi yayınlanacakaz webapp deploy ile zip dağıtımı
  3. Her kod değişikliğinde otomatik yayın isteniyorSürekli dağıtım (GitHub Actions, Azure Pipelines)
  4. Uygulama konteyner olarak paketlendiÖzel konteyner dağıtımı
Kaynak: Microsoft Learn: App Service genel bakış ve Python hızlı başlangıçMindset Institute

İlk yayın: az webapp up ile tek komutta

Azure CLI'yi kurup az login ile oturum açtıktan sonra uygulama klasöründe tek komut yeterlidir:

az webapp up --runtime <çalışma zamanı> --sku <katman> --logs

Çalışma zamanı ve katman parametreleri sizin seçtiğiniz değerlerle doldurulur. Komut, resmî belgeye göre varsayılan bir kaynak grubu, bir App Service planı ve belirttiğiniz adla bir uygulama oluşturur, klasördeki dosyaları zip olarak gönderir ve derleme otomasyonunu etkin tutar. Parametreleri yerelde bir yapılandırma dosyasına kaydeder; aynı klasörden sonraki çalıştırmalarda yeniden belirtmeniz gerekmez.

Bu komut ilk deneme ve küçük projeler için hızlıdır. Üretim ortamında kaynakların adlarını, bölgesini ve planını bilinçli seçmek ve altyapıyı kodla tanımlamak daha sürdürülebilirdir. Hazır bir zip paketini yayınlamak için az webapp deploy komutu, kaynak yolu parametresiyle kullanılır.

Şekil 2

Tek komut, kaynakları oluşturur ve kodu yayınlar

az webapp up akışı

  1. Kaynak grubuVarsayılan bir kaynak grubu oluşturulur.
  2. App Service planıPlan oluşturulur.
  3. UygulamaBelirtilen adla web uygulaması oluşturulur.
  4. Zip dağıtımıKlasördeki dosyalar derleme otomasyonuyla gönderilir.
  5. Yerel kayıtParametreler sonraki yayınlar için saklanır.
Kaynak: Microsoft Learn: Python hızlı başlangıçMindset Institute

Ayarlar ve günlükler: yayın sonrası ilk yönetim işleri

Yayına çıkan uygulama çoğunlukla yapılandırma ister: veritabanı bağlantısı, API anahtarı, ortam adı. Bunlar kod içine yazılmaz, uygulama ayarı olarak tanımlanır ve uygulamaya ortam değişkeni olarak ulaşır. Komut satırında bu iş az webapp config appsettings set ile ad ve değer çiftleri verilerek yapılır. Gizli değerlerin kaynak koduna, depoya ya da sohbet kanallarına yazılmaması temel kuraldır.

Uygulama açılmıyor ya da hata veriyorsa ilk bakılacak yer günlüklerdir. Önce web sunucu günlüklerini dosya sistemine yazdıracak şekilde az webapp log config ile yapılandırırsınız, sonra az webapp log tail ile akışı canlı izlersiniz. Başlangıç hatası, eksik ayar ya da bağımlılık sorunu çoğu zaman bu akıştan görünür.

Uygulamanın durumunu sürekli izlemek için Azure'ın izleme hizmetleriyle uyarılar kurulabilir; bu ayrı bir konudur ve yayın sonrası sağlıklı işletimin parçasıdır.

Kesintisiz yayın için dağıtım slotları

Doğrudan üretim uygulamasına yayın yapmak, hatalı bir sürümün kullanıcıya hemen ulaşması demektir. Dağıtım slotu bu riski azaltır. Slot, uygulamanın kendi adresi olan ayrı bir canlı kopyasıdır. Yeni sürüm önce hazırlık slotuna yayınlanır, orada doğrulanır ve ısıtılır. Hazır olduğunda hazırlık slotu üretim slotuyla takas edilir; trafik yönlendirmesi kesintisiz değişir.

Slotlar Standard, Premium ya da Isolated katmanında kullanılabilir. Komut satırında slot oluşturmak için az webapp deployment slot create, takas için az webapp deployment slot swap komutu kullanılır; hedef slot olarak üretim verilir. Takas sonrası sorun çıkarsa aynı iki slotu hemen yeniden takas etmek, son çalışan sürüme dönüş sağlar.

Dikkat edilecek bir nokta ayarların takas sırasında slotla birlikte hareket edip etmemesidir. Veritabanı bağlantı dizesi gibi ortama özgü bir değerin slota yapışık kalması isteniyorsa, ayar slot ayarı olarak işaretlenir. Aksi halde hazırlık ortamının değeri üretime geçebilir. Trafiğin bir kısmını yeni sürüme yönlendirerek kademeli deneme de yapılabilir.

Şekil 3

Slot ayarı, değerin takasta yerinde kalıp kalmayacağını belirler

Takasta ayarlar

Slot ayarı değilSlot ayarı
Takasta davranışİçerikle birlikte diğer slota geçerBulunduğu slotta kalır
Uygun kullanımSürümle birlikte taşınması gereken ayarOrtama özgü değer, örneğin veritabanı bağlantısı
Yanlış seçimin sonucuHazırlık değeri üretime geçebilirÜretim değeri hazırlık slotunda kalır ve test bozulabilir
Kaynak: Microsoft Learn: hazırlık ortamları kurmaMindset Institute

Sık yapılan hatalar

App Service yayınlarında hatalar genellikle kolaydan hızlıya geçilen yerlerde çıkar:

  • Üretim uygulamasına doğrudan yayın yapmak: Hatalı sürüm anında kullanıcıya ulaşır. Slot ve takas kullanın.
  • Gizli değerleri koda yazmak: Depoya girer ve sızar. Uygulama ayarı ve gizli yönetim hizmeti kullanın.
  • Slot katmanı şartını unutmak: Planı küçük seçip sonradan slota ihtiyaç duymak katman değişikliği gerektirir.
  • Günlükleri yapılandırmamak: Hata olduğunda bakacak veri yoktur. Yayından hemen sonra günlük akışını açıp deneyin.
  • Tek komutlu hızlı yöntemi kalıcı düzen sanmak: Hızlı yöntemin oluşturduğu varsayılan adlar kurumsal standartlara uymayabilir.
  • Test ettiğiniz kaynakları silmeyi unutmak: Gereksiz kaynaklar maliyet doğurur. Deneme bitince kaynak grubunu silmek hepsini birlikte kaldırır.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Mindset kataloğundaki Microsoft Azure Eğitimi, Azure kaynaklarını oluşturma ve yönetme, kimlik ve erişim yönetimi, izleme ve teşhis, güvenlik ve uygulama dağıtımı ile entegrasyon başlıklarını kapsar. App Service ile yayını, bu başlıklarla birlikte düşünerek bir bulut projesinin bütününe yerleştirmek isteyen geliştiriciler ve altyapı ekipleri için uygundur.

İlgili Mindset programı

Microsoft Azure Eğitimi

Sık sorulanlar

Sık sorulan sorular

App Service ile sanal makine arasındaki temel fark nedir?

Sanal makinede işletim sistemini, yamaları ve çalışma zamanını siz yönetirsiniz; tam denetim sizdedir. App Service'te altyapı yönetimini platform üstlenir, siz uygulamayı ve ayarlarını yönetirsiniz. Standart web uygulamalarında App Service yönetim yükünü azaltır, özel yazılım ya da özel işletim sistemi ihtiyacında sanal makine daha esnek olur.

Bir App Service planında birden fazla uygulama çalışabilir mi?

Evet. Plan, işlem gücü ve özellik katmanını belirleyen kaynaktır ve aynı plana birden çok uygulama bağlanabilir. Bu uygulamalar planın kaynaklarını paylaşır. Kritik bir uygulamanın diğerlerinden etkilenmesini istemiyorsanız onu ayrı bir plana almak daha güvenlidir.

Dağıtım slotu kullanmak ek ücret getirir mi?

Microsoft belgesine göre slot kullanımının kendisi için ek ücret yoktur; slotlar belirli plan katmanlarında desteklenir, bu nedenle katman seçimi önem taşır. Güncel koşullar için resmî fiyatlandırma ve limit sayfalarına bakılmalıdır.

Takastan sonra sorun çıkarsa ne yapılır?

Aynı iki slotu hemen yeniden takas ederek son çalışan siteye dönülür. Takas sonrası hazırlık slotunda önceki üretim sürümü kalır, bu yüzden geri dönüş hızlıdır. Uygulama kodunuzun, takas sırasında yeniden başlayan işçi süreçlerine karşı dayanıklı olması da önemlidir.

Azure CLI yerine portaldan yayın yapılabilir mi?

Evet. Portal, Visual Studio Code ve diğer geliştirme araçları da yayın yapabilir. Komut satırı tekrarlanabilirlik ve otomasyon açısından avantaj sağlar; aynı komutlar betiğe ve sürekli entegrasyon hattına konabilir. Portal ise ilk keşif ve kontrol için kolaydır.

Azure App Service ile Web Uygulaması Yayınlama