Logo GH

Mavi-Yeşil ve Kanarya

(Bölüm: Mimari ve Protokoller)

1) Neden "güvenli kullanıma" ihtiyacımız var?

Modern sistemlerde, sürüm sadece kod teslimi değil, aynı zamanda satışlarda kontrollü bir denemedir: aynı anda riski en aza indiririz (kullanıcıları kırmayız) ve geri bildirim süresini kısaltırız (etkiyi hızlı bir şekilde görün). İki klasik strateji - Mavi-Yeşil ve Kanarya - bunu farklı şekillerde çözer, ancak ortak bir hedefle: sıfır kesinti süresi, hızlı geri dönüş, SLO tarafından gözlemlenebilirlik.

2) Temel tanımlar

Mavi-yeşil

Üretim ortamının tam teşekküllü iki kopyasını tutuyoruz: aktif (Mavi) trafiğe hizmet ediyor, pasif (Yeşil) yeni bir sürüm hazırlıyor. Anahtarlama, dengeleyici/yönlendirici düzeyinde atomiktir (anahtar/çevirme). Daha da kötüleşirse, hemen Mavi'ye döneriz.

Kanarya

Parçalar halinde yayıyoruz: önce trafiğin küçük bir %'sine (örneğin, %1-5), metrikleri/SLO'yu gözlemleyin, sonra adım adım payı artırın (%10 - %25 - %50 - %100). Bozulma sırasında - önceki kararlı adımda geri alma veya durdurma.

3) Hangi yaklaşımın en iyi olduğu zaman

Mavi-Yeşil - şunlardan birini seçin:
  • Karmaşık manevralar olmadan anında bir geri dönüşe ihtiyacımız var.
  • Mimari/bütçe, ikili altyapı çoğaltmasına izin verir.
  • Büyük ölçekli geçişleri veya platform güncellemelerini (OS/JDK/çalışma zamanı) ayrı olarak gerçekleştirmek istiyoruz.
  • Uygulama/bağlantı havuzları kademeli bir "karışık" duruma duyarlıdır.
Kanarya - seçerseniz:
  • Patlama yarıçapını en aza indirmeniz ve kullanıcıların payındaki davranışı görmeniz gerekir.
  • Yüksek serbest bırakma oranı, normal olarak aşamalı teslimat.
  • Olgun gözlemlenebilirlik ve otomatik kapılar vardır (hata bütçesi, gecikme, dönüşüm).
  • Ürün ekibi hipotezleri test etmek istiyor: dönüşüm, elde tutma, LTV, vb.

4) Başarılı bir sürüm için genel ilkeler

Idempotent yapı eserleri: tüm aşamalarda aynı görüntü/paket.
Deterministik yapılandırma: kod olarak yapılandırma, ortamların karşılaştırılabilirliği.
Tasarım ile gözlemlenebilirlik: günlükler, metrikler, izler, uyarılar; SLI/SLO önceden.
Hızlı, otomatik geri alma: Geri alma düğmesi/komutu, manuel sihir değil, boru hattının bir parçasıdır.
Uyumlu şema değişiklikleri: Expand-migrate-contract stratejisi (bkz. § 10).
L7 yönlendirme (arzu edilir): API başlıkları/çerezler/yollar/sürümler üzerinde esneklik.

5) Mavi-Yeşil: Mimari ve Süreç

5. 1 Topoloji

İki ürün yığını: Mavi (aktif) ve Yeşil (aday).
Ortak dış bağımlılıklar: CDN, harici API'ler, kuyruklar; DB özel bir durumdur (bkz. § 10).
Anahtar noktası: dengeleyici/Giriş/Ağ Geçidi.

5. 2 Adım adım akış

1. Green'i yeni bir eser (vNext) altında yetiştiriyoruz, smok testleri yapıyoruz.
2. Green'e karşı Autotest çalışması (e2e, sözleşme, regresyon).
3. Önbelleği/oturumları ısıtın (varsa), arka plan jablarını/kuyruklarını senkronize edin.
4. Trafiği Yeşile çevirin: atomik çevirme (DNS TTL düşük, Rota/Dinleyici takası, Giriş ağırlığı = %100).
5. SLO'yu ilk dakikalarda/saatlerde gözlemliyoruz (altın sinyaller: gecikme, hatalar, doygunluk + iş metrikleri).
6. Sorun durumunda - Mavi'ye anında dönüş (geri çevirme).

5. 3 Artıları/Eksileri

Artıları: anında geri dönüş, basit zihinsel model, saf izolasyon.
Eksileri: Altyapıyı ikiye katlamak, durumsal bileşenlerle ilgili zorluklar ve veri geçişleri.

6) Kanarya Mimarisi ve Süreci

6. 1 Topoloji

Tek üretim kümesi; Tek bir cephenin arkasındaki hizmetin birkaç versiyonu (kararlı ve kanarya).
Trafik ağırlıklara (1-5-10-25-50-100 %) veya hedeflere (başlık/çerez/ID) bölünür.

6. 2 Adım adım akış

1. Kanarya sürümlerini aynı küme/ASG/NSG'ye dağıtın.
2. Bazı trafiği (örneğin, %1-5) kanaryaya yönlendirin.
3. SLI/SLO ve iş metriklerinin otomatik kontrolleri; CI/CD'de kapılar (hata oranı, p95 gecikme, CPU/RES, dönüşüm, reddetme/geri dönüş).
4. Kapıları geçerken trafik payında adım adım artış.
5. %100'e tam dağıtım ve eski versiyonun devre dışı bırakılması; Bozulma durumunda - otomatik geri alma.

6. 3 Artıları/Eksileri

Artıları: Çoğu kullanıcı için minimum risk, veri odaklı çözüm.
Eksileri: Olgun gözlemlenebilirliğe, yetkin yönlendirmeye, örnekler arasında "sürüm eğrilmesi" riskine ihtiyacımız var.

7) Trafik yönlendirme

Katman L4: IP/bağlantı noktalarına göre denge; Basit ama az esneklik.
Seviye L7: HTTP/S kuralları - yolda, ana bilgisayar, başlık, çerezler, Kullanıcı Aracısı, GeoIP, SNI.

Teknisyenler:
  • Ağırlıklı yönlendirme (ağırlıklar %1-100).
  • Başlık tabanlı/Çerez tabanlı.
  • Oturum yapışkanlığı (durum bilgisi/önbelleğe alınmış komut dosyaları için önemlidir).
  • Gölge/Trafik yansıtma (yeni sürüme ayna istekleri "sessizce").

8) Araçlar ve uygulamalar (örnekler)

Kubernetes: Giriş (NGINX, Kontur), Servis Mesh (Istio/Linkerd), Argo Rollouts, Flagger.
Облака: AWS ALB/ELB, Route 53 ağırlıklı kayıtlar, ECS/EKS; GCP Yük Dengeleme + NEG; Azure Ön Kapı/Uygulama Ağ Geçidi.
CD platformları: Spinnaker, Argo CD, GitHub Eylemleri + Aşamalı Teslimat eklentileri, GitLab/CD.

💡 Birinci ilke: sürüm - kod, trafik - politika, promosyon - otomatik SLO kapıları.

9) Gözlenebilirlik, SLI/SLO ve kapılar

Altın sinyaller: Gecikme (p95/p99), Hata oranı (5xx/4xx по типам), RPS, Doygunluk (CPU/Bellek/GC), Kuyruk gecikmesi.
İş metrikleri: dönüşüm, yetkilendirmeler, ödemeler/başarılar, ortalama kontrol, huni adımlarıyla reddetme.

Gates:
  • Hata eşiği (örneğin, kanarya ≤ taban çizgisi + % X hata oranı).
  • P95 gecikmesi, Δ'den daha fazla taban çizgisinden daha kötü değildir.
  • İş eşiği (örn. Dönüşüm düşüşü
  • SLO hata bütçesi daha hızlı yanmamalıdır.

Adım süresi: İstatistiksel anlamlılık için yeterli minimum süre (trafiğe bağlıdır).

10) Veritabanı geçişleri ve şema uyumluluğu

Ana kural: ileri ve geri sürümler uyumluysa sürümler güvenlidir.

Sözleşme genişletme-taşıma stratejisi:

1. Genişlet: eski sürümü bozmadan yeni sütunlar/indeksler/tablolar ekleyin.

2. Uygulama vNext'i dağıtın (yeni şemaya okur/yazar, ancak eskisiyle nasıl çalışılacağını bilir).

3. Veri taşıma (arka plan/toplu iş, idempotent, denetim noktalarıyla).

4. Sözleşme: Stabilizasyondan sonra eski alanları/özellikleri silin.

Anti-desenler: Mavi-Yeşil anahtar noktasında özel engelleme gerektiren geçişler; Şemayı düşürememe; veri tekilleştirme olmadan "çift yazma".

11) Geri alma ve acil durum planları

Mavi-Yeşil: Mavi anında çevirme; Yeşil arka plan işlerinin kuyruklarını izleyin.
Kanarya: ağırlık geri dönüşü (örneğin, %25'ten %5'e veya %0'a); Uyarılar üzerine otomatik iptal.
Veri: iyi düşünülmüş bir tekrar/telafi politikası (idempotency anahtarları, "gelen kutusu/giden kutusu" deseni, mesaj veri tekilleştirme).
Ficheflags: Kısmen yuvarlanmış fırsatları kapatmak için hızlı bir öldürme anahtarı.

12) Devlet ve oturumlarla çalışmak

Kanaryalar için yapışkan oturumlar veya oturumları harici olarak depolamak (Redis/Memcached), böylece sürümler değiştirilebilir.
Önceden ısınmak için önbellek (Yeşil ısınma) ve çevirirken geçersiz kılmayı dikkate alın.
Arka plan çalışanları: Sürümler arasında "yarışlara" izin vermeyin - sürüme göre kuyruk ayrımı veya "liderlik".

13) Güvenlik ve uyumluluk

Green/Canary'ye Erişim - Zero Trust tarafından: hizmet hesapları, minimum gerekli roller.
Sırlar ve anahtarlar - KMS/Secrets Manager aracılığıyla; rotasyonu açın.
Trafik - sadece TLS; Uç nokta sürümleri açıkça işaretlenmiştir; Denetim yönlendirme ve serbest bırakma faaliyetleri.

14) Maliyet ve performans

Mavi-Yeşil altyapıyı iki katına çıkarır (serbest bırakıldığında veya sürekli olarak) - bütçe.
Kanarya daha ekonomiktir, ancak otomatikleştirmek için gözlemlenebilirlik araçları ve mühendislik zamanı gerektirir.
Optimizasyon: Otomatik ölçeklendirme, kısa ömürlü ortam, sürümlerin paralel varoluş penceresini kısaltma.

15) Kontrol listeleri

Serbest bırakılmadan önce

  • Görüntü/yapı tek bir kaynaktan terfi, imzalar doğrulandı.
  • Test planı, uyarılar ve SLO kapıları yapılandırılmıştır.
  • Veritabanı geçişleri - genişletme modunda, düşürme planları mevcuttur.
  • Geri alma planı - evreleme/üretim benzeri kontrol edildi.

Serbest bırakma sırasında

  • Metrikler ve günlükler taban çizgisiyle karşılaştırılır.
  • Kanarya için, adımlar ve eşikler sabittir; Mavi-Yeşil için - flip-back hazırlığı.
  • Çağrı komutları biliyorum, bir geri bildirim penceresi var.

Serbest bırakıldıktan sonra

  • SLO batmadı, hata bütçesi normal.
  • Tahliye sonrası göçler/temizlikler tamamlandı.
  • Retrospektif ve oyun kitabı güncellemesi.

16) Sık hatalar ve anti-desenler

Metrikler olmadan kullanıma sunma: veri yok - yönetilen çözüm yok.
Uyumsuz veritabanı şemalarını karıştırma, düşürme stratejisi eksikliği.
Rastgele trafik karıştırma: yapışkanlık yok, kullanıcılar sürümler arasında "atlıyor".
Gizli durum bağımlılıkları (yerel diskler, bellek içi önbellekler).
Uzun DNS-TTL, hızlı çevirme (Mavi-Yeşil) ile etkileşime girer.
Otogaz eksikliği: manuel "gözle" çözümler yavaşlar ve riskleri artırır.

17) Kombine yaklaşımlar

Mavi-Yeşil + Kanarya: Önce Yeşil'i, sonra Yeşil'in içinde bireysel hizmetler için Kanarya'yı açın.
Gölge/geçiş trafiği: Canary'den önce, yansıtılmış trafiği yeni sürüme çalıştırıyoruz.
Özellik bayrakları (aşamalı teslimat): işlevsellik, kararlı sürümün üzerine, segmentlere göre "karanlık" bayraklar tarafından dahil edilir.

18) Örnek senaryolar (eskizler)

Mavi-Yeşil (web + api):

1. Yeni Dinleyici/Giriş için Green'i (v2) dağıtın.

2. Önbellekleri ısıtın, hazır kontroller yapın, duman.

3. Ağırlığı Green = %100 olarak değiştiriyoruz.

4. SLO'yu 30-60 dakika gözlemleyin; Her şey yolundaysa - Mavi'yi kapatın.

Kanarya (ödeme mikro hizmeti):

1. Canary vNext'i dağıtın (kopyalar %5).

2. Dahili hesaplar/test segmenti için %5 trafik dahil ediyoruz.

3. Autogate: hata oranı ≤ taban çizgisi + 0. %3, p95 ≤ + 20ms.

4. Geçişleri geçerken her N dakikada %10 - %25 - %50 artırıyoruz.

5. Ficheflag'ı tüm segmentler için %100 tercüme ediyoruz; eski versiyonu siliniyor.

19) Farklı mimariler için varyasyonlar

Monolit: Mavi-Yeşil daha basittir, Kanarya özelliklerin bölünmezliği nedeniyle daha zordur; Ficheflags kullanın.
Mikro hizmetler: Kanarya doğaldır; Monitör tüketici odaklı sözleşmeler.
Durumsal hizmetler: Özenle hazırlanmış göçler ve yapışkanlık ile Mavi-Yeşil tercih edin.

20) Kısa karşılaştırma (özet)

Geri alma hızı: Mavi-Yeşil = anlık; Kanarya = hızlı ama ağırlığı bir geri çekilme ile.
Altyapı maliyeti: Mavi-Yeşil ↑; Kanarya ↔︎/↓.
Kullanıcılar için risk: Kanarya daha düşük (payı kontrol ediyoruz).
Uygulama zorluğu: Mavi-Yeşil başlamak daha kolaydır; Kanarya güçlü gözlemlenebilirlik ve otomasyon gerektirir.
Veri/devre uyumluluğu: her ikisi için de kritik; Planla genişlet-göç et-sözleşme.

21) Alt satır

Mavi-Yeşil ve Kanarya birbirini dışlayan stratejiler değil, ilerici teslimatın unsurlarıdır. Seçim maliyet kısıtlamalarına, gözlemlenebilirlik olgunluğuna ve değişikliklerin niteliğine bağlıdır. Yaklaşımdan bağımsız olarak, sürdürülebilir sürüm dört ayağa dayanır: otomasyon, gözlemlenebilirlik, geriye dönük uyumluluk ve hızlı geri dönüş.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.