Yayın Stratejileri — Hatalı Sürüm Kaç Kişiye Dokunur?
Önce şunu oku: Docker Katman Cache ve İmaj Boyutu
30 saniyede özet
Aynı yeni sürüm dört yolla yayına çıkabilir: hepsini durdurup başlatmak, pod pod değiştirmek, ikinci bir ortama geçmek ya da önce küçük bir dilime açmak. Seçim; kesintiyi, hatanın kaç kişiye dokunacağını ve geri dönüş hızını belirler.
Dört şeritli bir köprüyü yenilemen gerekiyor. Bütün köprüyü kapatabilir, şerit şerit değiştirebilir, yanına yenisini yapıp trafiği bir anda çevirebilir ya da önce birkaç aracı yeni şeritten geçirebilirsin. Hepsi aynı köprüyle biter ama yolculuk çok farklıdır.
-
Bayt: Yeni sürümü yayına aldım. Bütün pod'ları durdurdum, yenilerini başlattım.
-
Sen: O arada istekler ne oldu?
-
Bayt: Birkaç saniye hepsi düştü. Üstelik yeni sürüm hatalıymış, herkes gördü!
-
Bayt: Hatalı sürüm her zaman çıkabilir. Asıl soru, kaç kişiye dokunacağı.
Dört yol
Recreate eski pod’ların hepsini durdurur, sonra yenilerini başlatır. Basittir ama arada hiç pod yoktur ve istekler düşer.
rolling deployUygulama kopyalarını tek tek yeni sürüme geçiren dağıtım. Bir süre eski ve yeni kod aynı veritabanıyla birlikte çalışır.Sözlükte gör → pod’ları teker teker değiştirir: yenisi hazır olunca bir eskisi kapanır. Kesinti olmaz; geçiş sırasında bir pod fazlası gerekir.
Kafam karıştı, daha basit anlat
Recreate hepsini birden değiştirir ve trafik durur. Rolling birer birer değiştirir ve trafik akmaya devam eder.
Recreate stratejisinin en belirgin bedeli nedir?
maxSurge: 1 ve maxUnavailable: 0 olan bir rolling update ne yapar?
Hatalı sürüm kaç kişiye dokunur?
Yeni sürümde havaleleri bozan bir hata var ama pod'lar ayakta ve readiness probe 'hazır' diyor. Rolling deploy pod pod ilerliyor. Rollout kendiliğinden durur mu? Cevabı göster
Hayır. Readiness probe yalnızca pod’un istek alabildiğini kontrol eder; iş mantığındaki hatayı göremez. Rollout, biri hata oranını fark edip durdurana kadar ilerler.
Adım adım oku
- Köprüyü kapatıp yenisini açmak: trafik durur.
- Şerit şerit değiştirmek: trafik akar.
- İkinci köprüyü kurup trafiği bir anda çevirmek: geri dönmek kolay.
- Önce birkaç araç denesin: sorun yalnızca onlara dokunur.
blue-green deploymentYeni sürüm için ikinci bir tam ortam kurup trafiği tek anahtarla çevirmek. Geri dönüş saniyelerdir; bedeli geçiş sırasında iki kat kapasitedir.Sözlükte gör → yanına tam bir ikinci ortam kurar ve trafiği tek anahtarla çevirir. Hatalıysa anahtar geri çevrilir; ama o ana kadar herkes yeni sürümü görmüştür.
canary releaseYeni sürümü önce trafiğin küçük bir dilimine açıp hata oranını eski sürümle karşılaştırmak. Hatalı sürüm yalnızca o dilime dokunur.Sözlükte gör → yeni sürümü önce küçük bir dilime açar ve readiness probeKubernetes'in "bu pod şu an trafik almaya hazır mı?" sorusu. Düşerse pod yeniden başlatılmaz, yalnızca load balancer'dan çıkarılır.Sözlükte gör →’un göremeyeceği şeye, hata oranına bakar. Hatalı bir sürüm yalnızca o dilime dokunur.
Kafam karıştı, daha basit anlat
Blue-green herkesi bir anda taşır ama bir anda geri döner. Canary önce birkaç kişiye açar ve hatayı küçük tutar.
Yeni sürümde iş mantığı hatası var ama pod ayakta. Readiness probe rollout'u durdurur mu?
Blue-green ile canary arasındaki temel fark hangisi?
Kendin gör
v2 yayına çıkıyor
Tohum 862776v2 payı: %0
Oynat ya da adımla.
Şu an ne oldu?
Recreate (hepsini durdur, yenisini başlat)
Aynı v2, dört farklı yolla yayına çıkıyor. Kesinti, etkilenen kullanıcı, fazladan kapasite ve geri dönüş hızı değişiyor.
Görevler0/3
Hatalı sürümü bütün kullanıcılara gösteraçık
İpucu
Varsayılan ayarlar yeter; bir yolu daha var.
Hatalı sürümü kullanıcıların en fazla %5'ine gösteraçık
İpucu
Önce küçük bir dilim.
Herkese açılan hatalı sürümden saniyeler içinde dönaçık
İpucu
Eski ortamı ayakta tutan strateji.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Recreate ve hatalı sürüm: kesinti ve bütün kullanıcılar hatayı gördü.
- Rolling’e geç. Kesinti yok, ama hata fark edilene kadar kullanıcıların yarısı etkilendi.
- Blue-green’e geç. Herkes gördü, ama geri dönüş saniyeler sürdü.
- Canary’ye geç. Hatayı yalnızca yüzde 5 gördü.
- “v2 hatalı”yı kapat. Dördünün kesinti ve kapasite bedellerini karşılaştır.
Hatalı bir sürümü en az kullanıcının görmesi için hangi strateji seçilir?
Blue-green'in en büyük maliyeti nedir?
Tuzaklar
İki sürüm aynı anda. Rolling ve canary sırasında eski ve yeni sürüm birlikte çalışır. Veritabanı şeması ve mesaj biçimi ikisini birden desteklemeli; şema değişikliği bu yüzden adım adım yapılır.
Bakılmayan canary. Dilimi açıp metriklere bakmamak, canary’yi yavaş bir rolling’e çevirir. Karar bir ölçüte bağlı olmalı: hata oranı ve gecikme eski sürümle karşılaştırılır.
Geri dönüşü hiç denememek. Geri dönüş komutu ilk kez kriz anında çalıştırılmamalı. Sakin bir günde bir kez dene.
Kafam karıştı, daha basit anlat
İki sürüm bir süre birlikte yaşar; canary’ye bak; geri dönüşü önceden dene.
Rolling update sırasında eski ve yeni sürüm aynı veritabanına yazıyor. Yeni sürüm bir kolonu silen bir migration getiriyor. Risk nedir?
Aşağıdaki örnek bir bankanın ödeme API’sinden: Kubernetes’te rolling ayarları, iş mantığını da kontrol eden bir hazırlık sinyali ve canary kararının ölçütü.
Derinleş · Ödeme API'si: kesintisiz rolling ve ölçüte bağlı canary 4 dosya · ~53 satır · ilk okumada atlayabilirsin
Kendini sına
Recreate stratejisinde eski ve yeni sürüm arasında kısa bir kesinti olur.
Canary yüzde 5'te, ama kimse metriklere bakmıyor ve otomatik bir ölçüt yok. Ne olur?
Aklında kalacak üç şey
- 1 Recreate bütün eski pod'ları durdurup yenilerini başlatır ve arada kesinti olur. Rolling pod pod değiştirir ve kesinti olmaz.
- 2 Blue-green ikinci bir tam ortam kurar ve trafiği tek anahtarla çevirir: geri dönüş saniyelerdir, ama hatalı sürümü bir anda herkes görür ve iki kat kapasite gerekir.
- 3 Canary yeni sürümü önce küçük bir dilime açar ve metrikleri karşılaştırır. Hatalı bir sürüm yalnızca o dilimdeki kullanıcılara dokunur.
4 kart sonraki derste seni bekliyor
Bu dersin üstüne kurulanlar
Bunlar bu dersi temel alıyor; hazır olduğunda devam edebilirsin.