Azure Container Apps’ta Blue-Green Deployment: Canlı Geçiş Artık Bu Kadar Kolay
Blue-Green Deployment Nedir, Ne Değildir?
İnanın,
Daha önce duydun mu bilmiyorum ama “blue-green deployment” lafı ilk anda insanın kafasını biraz karıştırıyor. Renklerle ne alaka, değil mi? Bak şimdi, işin özü şu: sistemde eski sürüm blue oluyor, yeni sürüm green oluyor ve trafiğin hangisine gideceğine sen karar veriyorsun; istersen bir anda çeviriyorsun, istersen yavaş yavaş alıyorsun. Amaç net. Canlıya güncelleme atıyorsun, kullanıcı da çoğu zaman fark etmiyor. Garip ama işe yarıyor.
Vallahi,
İlk kez bu modeli büyük ölçekli bir yerde kurduğumda ben de biraz afallamıştım. Şöyle söyleyeyim; trafik değişimini elle yönetmeye kalkınca insanın eli ayağı birbirine dolanıyor (özellikle ortam büyüyünce), sonra bir bakıyorsun ufak bir hata yüzünden geri dönüş planı da dağılıvermiş. AKS gibi yerlerde bunu manuel yapmak ise ayrı dert; hata üstüne hata geliyor, niye geçti niye dönmedi derken gün bitiyor.
Şimdi sıkı dur. Mevzu Azure Container Apps (ACA) tarafında biraz daha rahatlıyor.
Azure Developer CLI ile Blue-Green Deployment Nasıl Çalışıyor?
Bak şimdi, Azure Developer CLI’dan (azd) bir süredir uzak kaldıysan küçük bir haber vereyim: ACA desteği geldi sayılır. Daha doğrusu revision bazlı dağıtımlar için iş baya toparlanmış durumda.
azd up diyorsun; elindeki en yeni Bicep dosyasını ve pipeline tanımını tek hamlede kaldırıp ayağa kaldırıyor, ekstra uğraş çıkarmıyor sana.Eskiden PowerShell aç, portalda gez, orada burada tıkla derken ben baya yoruluyordum — şimdi iş daha düz gidiyor.
Burası önemli. Eski versiyonu blue olarak açıyorsun mesela; sonra green’i yanına ekliyorsun. Trafiği istersen oraya akıtıyorsun, istersen testte bekletiyorsun. Kodla fazla oynamadan yapabiliyorsun bunu.
Bence En Güzel Yani Şu:
- Kod bağımsızlığı: Önceden build ettiğin container’ı hiç kurcalamadan yepyeni ortama deploy edebiliyorsun; kulağa basit geliyor ama sahada baya rahatlatıyor.
- Sıfır downtime isteyenlere iyi geliyor: Hele bankacılık ya da sigorta gibi alanlarda “canlı kesilmez” baskısı varsa, insan biraz daha sakin nefes alıyor.
- Trafik yönetimi esnek kalıyor: Canary rollout mı istersin rollback mi — hepsi elinin altında duruyor.
Kodu Kurcalamadan Canlıya Çıkmak Mümkün mü? Deneyim Aktarıyorum!
Yakın zamanda bir projede Python mikroservisini taşırken ACA ile azd ikilisini denedik. Anlatması kolay gibi duruyor ama yaşayınca insan gerçekten “ha demek buymuş” diyor.
Peki neden?
Bak hele; koda dokunmadık, sadece environment variable’larla oynadık (BLUE_COMMIT_ID, GREEN_COMMIT_ID, LATEST_COMMIT_ID, PRODUCTION_LABEL) ve iş çözüldü. Kod sabit kalınca kombinasyonlar rahatça yönetildi, şaşırdım açıkçası.
Bu metodu ilk denerken var ya… Eskiden “deploy ettik de ters giderse geri dönemeyiz” korkusu bende ciddi ciddi vardı.
Label’ı bir oynattım hop trafik eski revizyona döndü — bütün olay birkaç saniyede halloldu!
Bunu yaşayan biri olarak söyleyeyim, Peki işler sahada nasıl ilerliyor?
- Mavi ortam herkese hizmet ediyor:
azd env set BLUE_COMMIT_ID fb699ef azd env set LATEST_COMMIT_ID fb699ef azd up - Yeşili gizlice hazırlıyorsun; henüz kimse fark etmiyor:
azd env set GREEN_COMMIT_ID c6f1515 azd env set LATEST_COMMIT_ID c6f1515 azd env set PRODUCTION_LABEL blue azd deploy - Sorunsuzsa trafiği Green’e yöneltiyorsun:
azd env set PRODUCTION_LABEL green azd deploy - Sorunda panik yok; label’ı tekrar blue’a çekiyorsun ve herkes eski sürümü görmeye devam ediyor.
Rahatlık tam olarak bu.
Bicep Dosyasındaki Trafik Yönlendirme Mantığına Bir Bakış
Mutfaktaki işi merak edenler buraya gelsin 🙂 Baştan söyleyeyim, ilk bakışta kafa biraz karışabiliyor. Bicep tarafında her şey condition logic ile dönüyor.
| Aşama/Label | Trafik Yüzdesi (%) | |
|---|---|---|
| Mavi (blue) | 100 / 0* | |
| Yeşil (green) | 100 / 100* | |
| *production_label nerede ise büyük çoğunluk trafik oraya akıyor—sistem aslında bu kadar düz kurulmuş. | ||
Şunu söyleyeyim, Eldeki senaryo kabaca şöyle çalışıyor:
Hem blueCommitId hem greenCommitId doluysa (!empty(blueCommitId) && !empty(greenCommitId)) traffic array’i oluşuyor;
Kimin adı production_label’da geçiyorsa yükün tamamı ona gidiyor.
Peki Ya Dezavantajları? Her Gülün Dikeni Vardır!
- Ciddi pipeline yönetimi istiyor — ekip alışkın değilse “bu ne şimdi?” tepkisi gelebiliyor valla.
- Aynı anda birkaç environment variable tutman gerektiğinde configuration drift kapıda bekliyor gibi hissediyorsun.
- Bicep bilmeyene kod Matrix gibi görünebilir; hangi label hangi revision’a bağlı kaçırırsan sürpriz çıkar.
- Küçük işlerde bazen fazla gelir; tek endpoint için devasa akış kurmak biraz abartılı durabilir. (bu kritik)
Azd ile ACA’da Blue-Green Deployment İçin Pratik İpuçları ve Sık Yapılan Hatalar
- Dikkat! Label karışıklığı yaygın hata kaynağıdır:
Yanlışproduction_labelseçiliyse trafiğin neden hâlâ akmadığını anlamak zorlaşır. Başınıza gelebilir — bana geldi mesela! Yeşil deployment tamam sanırsınız ama trafik usul usul maviye devam eder… Dönüp bakarsınız ki label olduğu yerde duruyordur. - Tüm commit/revision id’lerini kenara hemen not alın:
Geri saracağınız gün kafa karışmasın diye hangi imajın hangi ortama denk geldiğini bilmek yeter.
— ciddi fark yaratıyor - Bicep’i canınızdan çok sevmiyorsanız önce test ortamında deneyin:
Aksi hâlde prod’da patlayınca toparlaması yoruyor; testte ise her şeyi rahatça kurcalayabilirsiniz naparsanız yapın 🙂 - Daha fazla CLI detayı lazımsa şu yazıya da göz at mutlaka:
Azure Developer CLI Sonunda Olmuş: Uzantılar, Foundry ve Pipeline Devrimi. - Slot swap ya da daha pratik deployment işleri görmek istiyorsan ikinci kaynak:
Azure App Service Slot Swap: Tek Komutla Değişim‘i inceleyebilirsin.

Nihai Yorumum – Hakikaten Olay Öldü mü?
Çok samimi söylüyorum bak — yıllardır sistem işiyle uğraşıyorum. Böyle rahat bir blue-green kurgu çok az gördüm.
Eskiden rollback lafını duyunca içim sıkılırdı, şimdi label kaydırıp kurtuluyorum; eğer olay buysa tamamdır diyorum.
Azd ile Bicep birleşince sanki sistem benim hatalarıma bile tolerans gösteriyor gibi hissediyorum.
Bir düşünelim: herkes klasik “git pull && docker compose up” düzeninden geldiyse burası gerçekten çağ atlatır mı?
Yorumlara beklerim açıkçası çünkü tartışması keyifli konular bunlar hani…
Toparlayayım o zaman:
Senelerdir “canlıya geçirirken stres oldum” diyorsanız Azure Container Apps && azd ikilisi kesin listenizin üst sıralarına girer.
(Azıcık iddialıyım evet.)
Bir sonraki içerikte gerçek dünya pipeline örneklerine giriyoruz ha! Sorunuz varsa aşağıdan yazabilirsiniz..
Unutmadan:
Developera otomasyon lazım… Sabaha kadar debug yerine kahvesini bitirsin daha iyi 🙂.

Kaynak:
Blue-green deployment in Azure Container Apps using Azure Developer CLI;>
Sıkça Sorulan Sorular
Blue-Green Deployment ne oluyor ve Azure Container Apps’te nasıl çalışıyor?
Blue-Green Deployment, hani eski (blue) ve yeni (green) sürümlerin aynı anda ayakta olduğu, trafik yönlendirmesini istediğin gibi değiştirebildiğin bir yöntem aslında. Azure Container Apps’te bunu yapmak için Azure Developer CLI kullanıyorsun; tek komutla trafiği değiştirip sıfır kesintiyle geçiş yapabiliyorsun. Bence bu kısmı özellikle seveceksiniz.
Çok konuştum, örnekle göstereyim.
Azure Developer CLI (azd) ile Blue-Green Deployment yapmak zor mu?
Şunu fark ettim: Açıkçası hayır. Eskiden bu işlemler gerçekten uzun. Baş ağrıtıcıydı, ama azd sayesinde sadece birkaç komutla yeni sürümü deploy edip trafiği istediğin gibi yönlendirebiliyorsun. Ben denedim, yani gerçekten işleri çok kolaylaştırıyor.
Blue-Green Deployment yaparken kodda değişiklik yapmak zorunda mıyım?
Hayır, hiç gerek yok. Mesela sadece environment variable’lar ile trafik yönetimini halledebiliyorsun, kod tarafına hiç dokunmana gerek kalmıyor. Böylece güvenle yeni sürümü test edip, bir sorun çıkarsa hızlıca eski sürüme dönebiliyorsun (buna dikkat edin)
Sıfır downtime garantisi gerçekten mümkün mü?
Evet, mümkün. Azure Container Apps ve azd ile bu sağlanabiliyor. Tecrübeme göre trafik geçişleri saniyeler içinde gerçekleşiyor; yani kullanıcılar bunu fark etmiyor bile. Baya fena olmayan açıkçası.
Blue-Green Deployment ile rollback nasıl yapılır?
Rollback gerçekten çok kolay. Tek yapman gereken trafiği eski (blue) sürüme geri almak, hepsi bu. CLI komutlarıyla anında oluyor, ayrıca herhangi bir kod değişikliği de gerekmiyor. Bence bu en rahatlatıcı kısım.
Kaynaklar ve İleri Okuma
Azure Container Apps Deployment Strategies
Hani, Azure Container Apps Documentation
Şöyle ki, Azure Developer CLI GitHub Repository
İntroducing Blue-Green Deployments for Azure Container Apps
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.








Yorum gönder