Canary Deployment
- Okunuşu
- kıneri diploymınt
Kısaca
Canary deployment, yeni bir yazılım sürümünü önce kullanıcıların küçük bir bölümüne sunar, sağlığını kontrol eder ve ardından kademeli olarak herkese yayar.
Canary deployment nedir?
Canary deployment, uygulamanın yeni sürümünün mevcut sürümün yanında çalıştığı ancak gerçek trafiğin yalnızca küçük bir dilimini, örneğin kullanıcıların %5'ini aldığı bir yayın stratejisidir. Yeni sürüm iyi davranırsa payı adım adım artırılır ve sonunda tüm trafiği karşılar. Sorunlar ortaya çıkarsa trafik eski sürüme geri yönlendirilir ve yalnızca küçük bir kullanıcı grubu etkilenmiş olur.
Trafik bir yük dengeleyici, bir ingress controller ya da bir service mesh ile bölünerek çalışır. Her adımda ekipler canary'yi kararlı sürümle hata oranı, gecikme ve CPU kullanımı gibi metrikler üzerinden karşılaştırır; birçok pipeline de bu sayılara göre canary'yi otomatik olarak terfi ettirir ya da geri alır. Bu otomatik karşılaştırmaya çoğunlukla canary analizi denir.
Ad, madencilerin bir zamanlar yeraltına taşıdığı kanaryalardan gelir: kuşlar zehirli gaza insanlardan önce tepki vererek erken uyarı sağlardı. Aynı şekilde ilk küçük kullanıcı grubu da kötü bir sürüm için erken uyarı sistemi görevi görür. Canary dağıtımları, bir hatanın tüm kullanıcılara birden ulaşmasının maliyetli olacağı büyük web servislerinde ve API'lerde yaygındır.
Canary deployment sıklıkla blue-green deployment ile karıştırılır. Blue-green iki tam ortam çalıştırır ve tüm trafiği eskiden yeniye tek seferde geçirir; canary ise trafiği kademeli olarak kaydırır ve başlangıçta kullanıcı kitlesinin yalnızca bir kısmını yeni sürüme maruz bırakır. Ayrıca, kullanıcıları farklı sürümlere yönlendirmek yerine bir özelliği aynı dağıtılmış sürümün içinde gizleyen feature flag'den de farklıdır.
Önemli noktalar
- Canary, trafiğin küçük bir yüzdesini önce yeni sürüme gönderir.
- Metrikler izlenirken trafik adım adım artırılır.
- Kötü bir sürüm yalnızca birkaç kullanıcıyı etkiler ve hızla geri alınabilir.
- Otomatik canary analizi, hata oranlarını ve gecikmeyi kararlı sürümle karşılaştırır.
- Blue-green deployment'ın aksine geçiş tek seferde değil kademelidir.
Örnek
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: web-app
spec:
parentRefs:
- name: main-gateway
rules:
- backendRefs:
- name: web-app-stable
port: 80
weight: 90
- name: web-app-canary
port: 80
weight: 10Sık sorulan sorular
Canary ile blue-green deployment arasındaki fark nedir?
Blue-green deployment tüm trafiği eski ortamdan yeniye tek adımda geçirir; canary deployment ise trafiği küçük bir yüzdeyle başlayarak kademeli olarak taşır. Canary'ler bir hatayı kaç kullanıcının göreceğini sınırlar; blue-green ise geçişi ve geri almayı basit ve anlık hale getirir.
Bir canary trafiğin yüzde kaçını almalı?
Ekipler genellikle trafiğin %1 ile %10'u arasında başlar, ardından %25, %50 ve %100 gibi adımlarla artırır. Doğru başlangıç noktası ne kadar trafiğiniz olduğuna bağlıdır, çünkü canary'nin anlamlı metrikler üretmek için yeterli isteğe ihtiyacı vardır.
Buna neden canary deployment deniyor?
Adını, madencilerin tehlikeli gazı erken algılamak için yanlarında taşıdığı kanaryalardan alır. Yeni sürümü ilk alan küçük kullanıcı grubu, sorunlar için erken uyarı görevi görür.
Sık karşılaştırılanlar
İlgili sayfalar
- Blue-Green DeploymentDevOps ve Bulut, s. 4Blue-green deployment, iki özdeş canlı ortam kullanan ve tüm trafiği eski sürümden yeni sürüme tek seferde geçiren bir yayın stratejisidir.
- RollbackDevOps ve Bulut, s. 43Rollback, yeni bir dağıtım hatalara, kesintilere ya da beklenmedik başka sorunlara yol açtığında yazılımı önceki, sorunsuz sürüme döndürme işlemidir.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- GözlemlenebilirlikDevOps ve Bulut, s. 22Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- Service MeshDevOps ve Bulut, s. 47Service mesh, mikroservisler arası trafiği yöneten; kod değiştirmeden şifreleme, yeniden deneme, yönlendirme ve izleme ekleyen bir altyapı katmanıdır.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin