Rolling update, blue-green ve canary deployment stratejileri arasındaki farklar nelerdir?

Cevap

Üçü de kesintisiz deploy (zero-downtime) hedefler; risk, maliyet ve geri dönüş hızı açısından farklıdırlar.

StratejiNasıl çalışırArtıEksi
Rolling updatePod'lar birer birer (veya gruplar halinde) yeni sürümle değiştirilirEk kaynak az, Kubernetes varsayılanıBir süre iki sürüm birlikte çalışır, rollback yine kademeli
Blue-greenYeni sürüm (green) tamamen ayrı ayağa kalkar, trafik tek seferde çevrilirAnında geçiş ve anında rollbackGeçici olarak iki kat kaynak
CanaryTrafiğin küçük bir yüzdesi (%1, %5, %25...) yeni sürüme verilir, metrikler izlenerek artırılırHata az kullanıcıyı etkiler, gerçek trafikle doğrulamaMetrik altyapısı ve trafik bölme (service mesh, ingress) gerekir

Kubernetes rolling update ayarı

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%        # aynı anda fazladan açılabilecek pod
      maxUnavailable: 0    # kapasite hiç düşmesin

Canary ve blue-green için genellikle Argo Rollouts, Flagger veya bir service mesh (Istio, Linkerd) kullanılır; canary analizinde hata oranı ve p99 gecikme eşik değerleri aşılırsa otomatik rollback yapılır.

Her stratejide geçerli kritik nokta: geriye uyumluluk

Rolling ve canary'de eski ve yeni sürüm aynı anda çalışır. Bu yüzden:

  • DB şeması değişiklikleri expand/contract yaklaşımıyla yapılır: önce yeni kolonu ekle (iki sürüm de çalışır), kodu deploy et, veriyi taşı, en son eski kolonu sil.
  • Kuyruk mesaj formatları ve API sözleşmeleri her iki sürümle uyumlu olmalıdır.

Feature flag ile farkı

Deployment stratejileri kodun yayınını yönetir; feature flag'ler ise deploy edilmiş bir özelliğin kime açılacağını yönetir. İkisi birlikte kullanılır: kod kapalı flag ile deploy edilir, sonra kademeli açılır.

  1. Distributed tracing nasıl çalışır? Trace context servisler arasında nasıl taşınır ve OpenTelemetry'nin rolü nedir?ZorDocker & DevOpsBackend
  2. Observability nedir? Log, metric ve trace arasındaki fark nedir ve her biri ne için kullanılır?KolayDocker & DevOpsBackend
  3. Ortam değişkenleri ve secret'lar (şifre, API anahtarı) güvenli şekilde nasıl yönetilir?OrtaDocker & DevOpsBackend
  4. CI/CD nedir? Tipik bir backend CI/CD pipeline'ının aşamaları nelerdir?OrtaDocker & DevOpsBackend
  5. İyi bir Dockerfile nasıl yazılır? Multi-stage build ne işe yarar?OrtaDocker & DevOpsBackend
  6. Docker Compose ne işe yarar? Basit bir örnekle açıklayın.KolayDocker & DevOpsBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle