Sıfır Kesinti Süresi dağıtımları
(Bölüm: Mimari ve Protokoller)
1) Sıfır Kesinti Süresi nedir ve neden gereklidir?
Sıfır Kesinti Süresi (ZDT), bir uygulamanın yeni sürümlerini, hizmet kullanıcılar tarafından kullanılamadan ve istekleri kaybetmeden serbest bırakmanın bir yoludur. Hedefler:- Müşteriler ve entegrasyonlar için sıfır kesinti süresi.
- Öngörülebilir sürümler, hızlı geri dönüşler ve yönetilebilir risk.
- SLO/SLI'nin (gecikme, hatalar, kullanılabilirlik) sözleşmelerin sınırları dahilinde korunması.
ZDT'nin anahtarı bir "sihirli" teknik değil, teslimat modelleri, veri uyumluluğu ve yetkili trafik yönlendirmesinin bir kombinasyonudur.
2) Temel Sıfır-Kesinti prensipleri
1. Sürüm uyumluluğu: Yeni ve eski sürümler trafik ve verileri aynı anda doğru şekilde işlemelidir.
2. Operasyonların idempotency: yeniden işleme durumu bozmamalıdır.
3. Zarif kapatma ve bağlantı drenajı.
4. Adım adım sağlık kontrolü: hazırlık/canlılık testleri, sağlık-uç noktaları.
5. Birinci sınıf vatandaş olarak geri alma: Geri alma, hotfix'ten daha kolay ve hızlıdır.
6. Tasarıma göre gözlemlenebilirlik: yayın işaretleri, tek panolar, SLO uyarıları.
7. Otomasyon: Serbest bırakma ve geri alma senaryoları koddur, manuel talimatlar değildir.
3) Kesinti süresiz teslimat modelleri
3. 1 Rolling Güncelleme
Eski sürümün örneklerinin bir kısmını trafikten yavaş yavaş kaldırın, yenisine güncelleyin ve havuza geri döndürün.
Artıları: altyapıda ekonomik, sadece k8s/ASG.
Eksileri: Bir süre için küme aynı anda iki sürümle çalışır (sürüm eğriltme).
3. 2 Mavi-Yeşil
İki tam prod: aktif (Mavi) ve aday (Yeşil). Trafik değiştirme - atomik çevirme.
Artılar: anında geri alma, temiz izolasyon.
Eksileri: ↑ altyapı maliyetleri, stateful ile daha zor.
3. 3 Kanarya/Aşamalı sunum
Metriklere göre kapılar ile yeni versiyona küçük bir trafik payı (1-5-10-25-50-100 %) veriyoruz.
Artıları: minimum patlama yarıçapı, veri odaklı çözümler.
Eksileri: Olgun gözlemlenebilirlik ve akıllı yönlendirme gerekir.
3. 4 Gölge trafik/Karanlık başlatma
Gerçek istekleri yeni sürüme yansıtın (kullanıcıya cevap vermeden) veya metrikleri toplamak için gizli başlatın.
Artılar: Sorunların erken tanımlanması.
Eksileri: bağımlılıklarda çift yük, yan etkileri kontrol etmeniz gerekir.
4) Trafik ve bağlantı yönetimi
4. 1 Hazırlık/Yaşam
Liveness orkestracıya "beni yeniden başlat'der.
Hazırlık - "trafiği yönlendirmeyin, henüz hazır değilim".
Doğru hazırlık mantığı ve zaman aşımları olmadan serbest bırakılamaz.
4. 2 Bağlantı Drenajı
Bir örneği havuzdan çıkarmadan önce:- Yeni bağlantıları kabul etmeyi bırak,
- aktif tamamlanmasını bekleyen,
- "Asılı" zaman aşımını kes.
4. 3 Yapışkan oturumlar ve L7 yönlendirme
Yapışkan, durumsal senaryolar için kullanışlıdır, ancak yük dengesini zorlaştırır.
L7 kuralları (yol, başlık, çerez, API sürümleri) kanarya/halka için uygundur.
4. 4 Uzun ömürlü bağlantılar
WebSocket/gRPC akışı: güncellemeden önce boşaltma modunu + "GOAWAY" sinyalini açın.
Pencereleri akışlardan ve istemci kazısından daha ağır basacak şekilde planlayın.
5) Veri uyumluluğu ve veritabanı geçişi
5. 1 Expand-Migrate-Contract
1. Genişlet: eski sürümü bozmadan yeni sütunlar/indeksler/tablolar ekleyin.
2. Migrate: Arka planda ve idempotently (gruplar, kontrol noktaları) veri aktarıyoruz.
3. Sözleşme: sadece stabilizasyondan sonra eskisini silin.
5. 2 Uygulamalar
Serbest bırakma penceresinde özel DDL kilitlerinden kaçının.
Sürüm API/olay sözleşmeleri (şema kaydı, CDC).
Ağır göçler için - çevrimiçi araçlar, kopyalar, aşamalı anahtarlama.
Yalnızca veri tekilleştirme ve idempotent tüketicilerle çift yazma.
Kuyruklar aracılığıyla güvenilir entegrasyon için Giden Kutusu/Gelen Kutusu.
6) Önbellekler, oturumlar ve arka plan işleri
Oturumlar ve önbellek haricidir (Redis/Memcached), böylece sürümler değiştirilebilir.
Havuzlamadan önce önbellek/jit/tempo indekslerini ısıtın.
Arka plan kuyruklarını sürüme göre bölün veya yarıştan kaçınmak için liderliği kullanın.
7) Gözlemlenebilirlik ve SLO kapıları
Altın sinyaller: p95/p99 gecikme, hata oranı, RPS, doygunluk, kuyruk gecikmesi.
İş SLA'sı: yetkiler, dönüşümler, başarılı ödemeler, huni adımlarıyla reddetme.
Gates: Kullanıma sunma yalnızca kanarya ≤ taban çizgisi + bozulma eşikleri ve hata bütçesi yanmazsa teşvik edilir.
8) Güvenli tamamlama ve geri alma
Geri alma aynı boru hattıdır, sadece ters yönde: sabit komutlar, "manuel kraft'değil.
Mavi-yeşil için - geri çevirin; Kanarya için - kilo kaybı %0 veya önceki kararlı adım.
Veri: işlemleri dengeleme, yeniden işleme, olay tekilleştirme.
9) Sıfır-Kesinti kontrol listeleri
Serbest bırakılmadan önce
- Bir imzalı eser (değişmez), SBOM ve bağımlılık kontrolü toplanır.
- Hazırlık/canlılık uygulanmış ve test edilmiştir.
- Genişletme modunda geçiş planı, tersinirlik onaylandı.
- Yeni sürüm için gösterge panoları ve uyarılar hazır, sürüm işaretleri atıldı.
- Rollback evreleme/ön prod için kontrol edildi.
Serbest bırakma sırasında
- Bağlantı drenajı etkinleştirildi, zaman aşımları yeterli.
- Trafik kanarya/halka veya flip (mavi-yeşil).
- Metrikler taban çizgisiyle karşılaştırılır, kapı eşikleri karşılanır.
Serbest bırakıldıktan sonra
- İzleme sonrası N saat, olay yok.
- Tamamlanmış sözleşme göçleri, kaldırılmış geçici bayraklar/yollar.
- Retrospektif, oyun kitabı güncellemesi.
10) Anti-desenler
İstek molaları ⇒ drenaj ve hazır olmadan yeniden oluşturun-dağıtın.
Hazırlıksız DDL, prime time'da kilitleri ve zaman aşımlarını ⇒.
Hizmet sürümleri arasında uyumsuz şemaların karıştırılması.
İşleyiciler ve işçilerde idempotency eksikliği.
Kapılar olmadan "hissederek dışarı çıkın've temel çizgiyle karşılaştırın.
Mavi-yeşil ile uzun DNS-TTL, bu yüzden flip saatlerce sürer.
Rolling/canary ile örnek bellekte yerel oturumlar/önbellek.
11) Uygulama senaryoları
11. 1 Kubernetes (yuvarlanma + kanarya)
Dağıtım с 'maxUnavailable = 0', 'maxSurge = 25 %'.
Hazırlık ısınma için bekliyor (önbellek başlatma, küçük geçiş).
Ağırlıklı yönlendirmeli Service-mesh/Ingress (1-5-10-25-50-100 %).
Uyarılar: p95, 5xx, kuyruk gecikmesi, iş hunisi.
11. 2 Bulutta Mavi-Yeşil
Dengeleyicinin arkasında iki yığın var:'mavi. örnek. com 'и'yeşil. örnek. com '.
Isınmak yeşil, duman/gerileme, sonra dinleyici/rota takas (veya düşük TTL ile DNS anahtarı).
Sorun durumunda - anında geri çevirin.
11. 3 Durumsal hizmet
Veri kopyaları + çevrimiçi geçişler; Doğrulama ile çift okuma.
Arka plan jabları "liderlik" veya bölünmüş kuyruklar tarafından taşınır.
Örneğin dışındaki oturumlar/önbellek; Yapışkan yalnızca geçici olarak etkinleştirilir.
12) Ficheflags ve istemci uygulamaları
Yeni özellikler bayraklarla etkinleştirilir (segmentler: çalışanlar - beta - hepsi).
Mobil/masaüstü istemcileri için, protokol uyumluluk sınırlarını ve eski bozulma politikasını (sunucu tarafı geri dönüşü) göz önünde bulundurun.
13) Performans ve maliyet
Haddeleme daha ucuzdur, ancak dikkatli uyumluluk gerektirir.
Blue-Green, piyasaya sürüldüğü sırada daha pahalıdır, ancak geri dönüş anında gerçekleşir.
Kanarya risk ve maliyeti dengeler, ancak güçlü gözlemlenebilirlik gerektirir.
Geçici önizlemeler ve otomatik temizleme standları ile kaydedin.
14) Minimum referans boru hattı ZDT
1. Yapı: tek eser, imza, SBOM.
2. Test: birim/entegrasyon/sözleşme + güvenlik.
3. Evreleme: duman, yükleme, göçleri genişletme, geri alma kontrolü.
4. Prod: gölge - kanarya (kapılar) veya mavi-yeşil flip.
5. Görev sonrası: gözetim, sözleşme temizliği, retro.
15) Kısa özet
Sıfır Kesinti Süresi bir disiplindir: uyumlu sürümler + doğru yönlendirme + yönetilen geçişler + gözlemlenebilirlik ve hızlı geri alma. Bağlam için bir desen seçin (yuvarlanma, mavi-yeşil, kanarya), SLO kapılarını otomatikleştirin, verileri idempotent tutun - ve sürümler bir olay olmaktan çıkacak ve güvenilir bir rutin sürece dönüşecektir.