Azure Container Apps’ta Blue-Green Deployment: Canlı Geçiş Artık Bu Kadar Kolay
Blue-Green Deployment Nedir, Ne Değildir?
Daha önce duydun mu bilmiyorum ama “blue-green deployment” lafı insanın kafasını karıştırmak için ideal. Gerçekten; renklerle ne alaka ya? Hemen bir örnek: Sistemde eski (blue). Yeni (green) diye iki ayrı uygulama ayağa kalkıyor ve hangisine trafik gideceğine anlık karar veriyorsun. İstersen bir anda şak diye değiştir, istersen yavaş yavaş geçiş yap. Amaç net: Canlıya güncelleme at, milletin haberi bile olmasın (ciddiyim). O kadar sinsi yani!
Bence,
İlk kez bu modeli büyük ölçekli bir yerde kurduğumda… Şöyle söyleyeyim; sunucu üstünde trafik değişimini ellerimle yapmaya kalkıştım (en azından benim deneyimim böyle). Sonuç? Saçlarımı yoluyordum, ciddiyim. Kaldı ki özellikle Azure Kubernetes Service (AKS) gibi ortamda bu işin elle yapılması tamamen felaket: Hata üstüne hata çıkarıyor vay efendim niye geçti niye dönmedi diye deli oluyorsun.
Şimdi sıkı dur – mevzu Azure Container Apps (ACA)! İşler burada çok daha çabuk rayına oturuyor canım.
Azure Developer CLI ile Blue-Green Deployment Nasıl Çalışıyor?
Son zamanlarda Azure Developer CLI’dan (azd) uzak kaldıysan haber vereyim dedim; ACA desteği çıktı sayılır! Daha güzeli de geldi diyebilirim çünkü “revision” bazlı dağıtımlar özel destek kazanmış durumda.
azd up diyorsun; elindeki en yeni Bicep dosyasını ve pipeline’ı ekstra çile çekmeden kaldırıp geri indiriyor sana kara sevda yaşatmıyor artık.Eskiden PowerShell aç, portala gir uğraş derken cinnet getiriyordum — şaka gibi kolay oldu şimdi.
Burası önemli bak! Eski versiyonunu blue olarak açıyorsun misal; sonra tek tuşla green’i yanına ekledin mi tamamdır — ister ciddi ciddi yüzde doksan trafiği oraya akıt ister test et bırak boşver demek kadar rahat… Üstelik kodu parmağınla oynamadan!
Bence En Güzel Yanı Şu:
- Kod bağımsızlığı: Önceden build ettirdiğin container’dan milim oynatmadan yepyeni ortama deploy… Kulağa masal gibi geliyor ama değil; yaşadım gördüm!
- Sıfır downtime isteyenlere bulunmaz nimet: Hele bankacısın sigortacısın falan “Hayatta canlı kesilmez!” dense bile rahat uyursun.
- Trafik yönetiminde limitsiz özgürlük: Canary rollout mı istersin rollback mi — hepsi tık tık elinde hazır.
Kodu Kurcalamadan Canlıya Çıkmak Mümkün mü? Deneyim Aktarıyorum!
Yakın zamanda bir projede Python mikrosersivisi taşırken ACA ve azd ikilisini denedik mesela. Yani anlatması basit ama yaşarken insana “vay be” dedirtiyor pek çok kere!
Bak hele — elimizi koda sürmedik, sadece environment variable değiştik (BLUE_COMMIT_ID, GREEN_COMMIT_ID, LATEST_COMMIT_ID, PRODUCTION_LABEL) işleri çözdük. Kod sabit kalınca her türlü kombinasyon hayatta çalıştı resmen.
Bu metodu ilk denerken var ya… Eskiden “deploy ettik de geçerse eyvah geri dönemeyeceğiz!” korkusu sıfırlandı bende.
Label’ı bir oynattım hop trafik eski revizyona – hepsi üç beş saniye sürdü!
Bence, Peki işler sırayla nasıl işliyor sahada dersin?
- 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 - Tamam bakalım sorun yoksa tam gaz Green’e yöneltiyorsun herkesi:
azd env set PRODUCTION_LABEL green azd deploy - Sorunda panikleme! Sadece label’ı tekrar blue’a çek—herkes yine eski versiyonu görür.
Rahatlık budur!
Bicep Dosyasındaki Traffik Yönlendirme Mantığına Bir Bakış
Mutfaktaki büyüyü merak edenler buraya yaklaşsın 🙂 İtiraf edeyim baştan kavraması kafa yakabiliyor! Bicep tarafında her şey condition logic diyor artık.
| Aşama/Label | Trafik Yüzdesi (%) |
|---|---|
| Mavi (blue) | 100 / 0* |
| Yeşil (green) | 100 / 100* |
| *production_label nerede ise tüm trafik oraya akıyor—o kadar düz sistem kurulmuş. | |
Eldeki senaryo şöyle işliyor aslında:
Hem blueCommitId hem greenCommitId doluysa (!empty(blueCommitId) && !empty(greenCommitId)) traffic array’i pat diye oluşuveriyor;
Kimin adı production_label’da varsa %100 ona paslanıyor bütün yük.
Peki Ya Dezavantajları? Her Gülün Dikeni Vardır!
- Ciddi pipeline yönetimi gerektiriyor — ekip alışkın değilse “bu ne?” diye ortalık karışabilir valla.
- Aynı anda on tane environment variable tutman gerektiğinde configuration drift geliyorum diyor, dikkat edin!
- Bicep bilmeyene kod Matrix gibi gelir (“hangi label hangi revision?” kaçırırsan moral bozan süprizlerle karşılaşırsın).
- Küçük çaplı işlerde abartıya döner (“tek endpoint var deyip devasa trafikli yapı kurmak komik olabilir”).
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_label seçiliyse trafiğin neden hala akmadığını anlayamazsınız. Başınıza gelebilir – bana geldi mesela! Yeşil deployment tamam dediniz fakat trafik kıllanmadan maviye devam eder… Dön bak ki label olduğu yerde durmuş hala. - Tüm commit/revision id’lerini kenara hemen not alın:
Geri saracağınız güne küfür etmemek için hangi imaj hangi ortama denk geliyor bilin yeter. - Bicep’i canınızdan daha çok sevmiyorsanız test ortamında oynayın önce:
Aksi halde prod’da patlayınca toplamaktan yorulursunuz; testte her halt yapılabilir naparsan yap 🙂 - 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 veya çok pratik deployment işleri görmek istiyorsan da ikinci kaynak:
Azure App Service Slot Swap‘i inceleyebilirsin.

Nihai Yorumum – Hakikaten Olay Oldu Mu?
Çok samimi söylüyorum bak – yıllardır sistemciyim ben kardeşim böyle rahat blue-green setup görmedim.
Eskiden rollback adı duyunca yüzüm ekşirdi şimdi sadece label kaydırıp kurtuluyorum olay buysa tamam diyorum.
Azd ile Bicep birleşince benim hatalarıma bile tahammülü oluyor sanki sistemlerin.
Bir düşünelim herkes klasik “git pull && docker compose up” tarzıyla bugüne geldiyse burası gerçekten çağ atlatır mı?
Yorumlara beklerim açıkçası çünkü tartışması çok zevkli konular bunlar hani…
Toparlayayım o zaman:
Senelerdir “canlıya geçirirken stres oldum” diyorsanız Azure Container Apps && azd ortaklığı kesin listenizin ilk üçüne 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 patlatabilirsiniz..
Unutmadan:
Developera otomasyon candır… Sabaha kadar debug yerine kahvesini bitirsin varsın 🙂.

Kaynak:
Blue-green deployment in Azure Container Apps using Azure Developer CLI
İçeriği paylaş:


Yorum gönder