Azure App Service Slot Deployments Artık azd ile Çocuk Oyuncağı mı? Deneyimlerim ve Gerçekler
Deployment Slot’lar: Bulutun Gizli Kahramanları
İtiraf edeyim, Açıkçası, Azure App Service’in bana göre en gizli silahı deployment slot’ları diyebilirim. Hani yıllardır “Blue/Green deployment lazım” diye anlatıyoruz ya, ‘sıfır downtime’, risksiz geçiş filan (evet, doğru duydunuz). Ama iş yazılımı gerçekten o slot’a ellemeden, tek komutla gönderme kısmına gelince çoğumuz dağılıyor (buna dikkat edin). Ne oluyor? Bir bakmışız PowerShell scriptlerle debeleniyoruz veya portaldan tık-tık ilerlerken başka bir sayfada kaybolmuşuz — hiç pratik değil.
Peki ya şöyle düşün! Bir komutla, mesela “azd deploy”, doğrudan istediğin slota anında atsan? Dürüst olayım; ilk okuduğumda abartılmıştır sandım. Yani genelde kulağa güzel gelen her bulut yeniliğinde bir sürü ama’sı çıkar. Sınırlama, eksik uçlar… “Yok canım, bu kadar kolay olamaz,” dedim. Sonra bizzat deneyip yanıldım – çünkü şaşırttı bu sefer.

azd deploy Şimdi Gerçekten Akıllı mı?
Dürüst olmak gerekirse, Daha geçen hafta canlıya çıkmadan önce migration için deneme yaparken bir tesadüfle “azd deploy”daki slot desteğini denedim ki… Şimdi şöyle sorayım – önceden ne vardı elimizin altında? Hep production’a otomatik gönderirdi azd; diğerlerine (mesela “staging”) gitmek için türlü numaralar çevirmek gerekiyordu (ki bu çoğu kişinin gözünden kaçıyor). Çözüm arayanlar bazen kendini pipeline’da custom script yazar buluyordu.
Yeni özelliğiyle beraber, Bicep dosyasında birden fazla slot tanımlandığında azd bunu hemen algılıyor ve doğal olarak “Hadi bakalım, hangisine deploy etmek istersin?” diye soruyor! Bu kadar mı kolay dersin… Vallahi aynen öyle! Üstelik daha ilk deploy’da hem production hem tanımlanan tüm slot’lara kodu paylaştırabiliyor — sanki ekstra çaba harcamadan olmuş gibi.
PowerShell betiklerine veya karmaşık workaround peşinde koşmaya elveda demek isteyenlere haber vereyim:Bicep içinde dilediğiniz kadar slot tanımlayın yeter — bundan sonrası tamamen azd’in derdi!
Bicep ile Slot’u Nasıl Tanımlarsınız?
Kod gözünüze büyüyorsa hemen korkmayın — bak örnek üzerinden gidelim:
// Temel web app tanımı
resource webApp 'Microsoft.Web/sites@2021-03-01' = {
name: 'my-appservice'
location: resourceGroup().location
kind: 'app'
properties: { serverFarmId: myPlan.id }
}
// Staging için ek slot
resource stagingSlot 'Microsoft.Web/sites/slots@2021-03-01' = {
name: '${webApp.name}/staging'
location: webApp.location
properties: {}
}
Büyük ekipte misiniz? O zaman modül mantığı ile Azure Verified Modules da hayli rahatlatıyor (özellikle elde çok proje varsa):
// App service modülü şeklinde
module appservice 'br/public:app-service:1.3.2' = {
name:'my-appservice'
params:{ /* ... */ }
}
module stagingSlot 'br/public:web-app-deployment-slot:1.0.2' = {
name:'staging'
params:{ appServiceName : appservice.outputs.name }
}
“Staging mi Production mı?” Kararı Otomatikleştirmek
Diyelim birden fazla slot var; sürekli prompt penceresi açılıp senaryo seçiyorsun — biraz yorucu olabiliyor cidden! Hele bir de acelem olduğunu farz et… İşte burada minicik ama oyunu değiştiren bir detay çıktı karşıma:
- Konsoldan otomasyon zamanı:Sadece aşağıdaki env değişkenini sete çekiyorsun:
azd env set AZD_DEPLOY_MYAPI_SLOT_NAME staging
Böylelikle ister lokalde manuel çalıştır ister CI/CD sürecine göm; hangi slota gideceğini kesin şekilde söylüyorsun, karışıklık da bitiyor.
Bence sık build/deploy yapan takımlar için müthiş ferahlık bu!

Neden Bu Kadar Önemli?
- Sıfır Downtime: Deploy sırasında kullanıcı laf arasında hata ekranıyla karşılaşmaz.
Kelimeyle anlatayım:
Gerçekten. - Kademeli Yayın/Test: Kodu önce test-slotunda gezdirip özgürce deneme imkanı sunuyor.
- Acil Rollback: Swap tuşuna basınca eski haline dönmek çocuk oyuncağı resmen.
- Kullanıcı hatalarını azaltmak: Yanlış ortam kaygısı azalıyor ciddi biçimde!
Küçük Tüyolar & Pratik Deneyimlerimden Kesitler
E paha biçilmez avantaj anlattık ama her güzelliğin ufak dokundurması vardır tabii…
- BASIC/FREE/SHARED planlarda heveslenmeyin hiçbir şey yok – zamanınızı yakmayın.(Not al!)
- Tüm slotlara ve product’a aynı anda kod göndermek kafa karıştırmasın; bazen farkında olmadan canlıya atıp paniğe kapılabilirsiniz – dikkat baştan şart.
- Kodu slota yolluyorsun tamam ama swap işi hâlâ manuel tetikliyor; yani live site’ta değişiklik için ayrı adım var bilesin.(Swap bekleyenlere duyurulur.)
- Ekip bazlı çalışma varsa — özellikle herkeste farklı env variable aktif kaldıysa — yanlış yere kod atan efsanevi (!) anılardan biri de size ait olabilir – bunu yaşamak istemezsiniz inanın!
- Bicep’te modül bağı kurmadan iş çevirmeye kalkarsanız arka planda “environment drift” belasından nasibini alırsınız… Birkaç kez başıma geldiği için diyorum 🙂
Daha detayına bakmak isteyenler için kendi blogumdan şurayı bırakıyorum:
Azure App Service Slot Swap Artık Tek Komutla?.
Peki Gerçekten Kullanmalı mısınız? Son Söz ve Minik Bir Karşılaştırma Tablosu
| Yöntem | Kurulum Kolaylığı | Esneklik/Destek | Risk/Dikkat Noktası |
|---|---|---|---|
| Manuel Portal Deploy | Orta | Düşük | Yanlış slota kolay deploy |
| El Yapımı Scriptlerle Deploy | Zor | Yüksek (ama bakım maliyetli) | Script hataları/karmaşa |
| azd + Bicep ile Deploy | Çok Kolay | Yüksek (slot seçimi dahil) | Tek dikkat slot adını doğru set etmek! |

Daha Fazlası İçin Nereleri Takip Etmeli?
Eğer Azure Developer CLI tarafındaki yeni özellikleri ben kaçırmam diyorsanız şu linkte bomba içerikler bıraktım:
Azure Developer CLI’de Şubat 2026 Bombaları….
Laf uzun oldu belki ama sonuç net:
Azd ile deployment slot işi nihayet olması gerektiği gibi akıcı gidiyor—tamam harika değil her şey ama yine de ciddi yol aldı bence.
Ya sizde durumlar nasıl?
Hiç yanlışlıkla prod’a kod attığınız oldu mu?
Ben şahsen artık gönül rahatlığıyla “azd up!” diyorum ve dönüşleri heyecanla izliyorum!
Kaynak alınacak resmi açıklama şurada:
Deploy to Azure App Service deployment slots with azd ↗️️🔥😏📦🟢️️️️📑✔︎✔︎✔︎̧̦̼̜̱̲̻͚͙̻͕͎̣͇↗️.
İçeriği paylaş:







Yorum gönder