2024-12-05Hünkar Döner

EKS İçin Zero Downtime Deployment Stratejileri

DeploymentEKSZero DowntimeRolling UpdateBlue/Green
E

EKS İçin Zero Downtime Deployment Stratejileri

Günümüz kullanıcılarının kesintiye tahammülü yoktur. Uygulamanızın yeni versiyonunu yayınlarken (deploy), servisinizin bir saniye bile durmaması gerekir. Amazon EKS üzerinde "Sıfır Kesinti" (Zero Downtime) sağlamak için kullanabileceğiniz stratejileri inceleyelim.

1. Rolling Update (Varsayılan)

Kubernetes Deployment'larının varsayılan stratejisidir.

  • Nasıl Çalışır? Eski podları yavaş yavaş kapatır ve yenilerini açar. Örn: 10 podunuz varsa, 2 tanesini kapatır, v2 versiyonunda 2 yeni pod açar. Bunlar hazır olunca (Ready), diğer 2'sine geçer.
  • Avantajı: Ekstra kaynak gerektirmez. Kolaydır.
  • Dikkat: readinessProbe ayarlarınızın doğru olması şarttır. Aksi takdirde trafik henüz hazır olmayan yeni podlara gider ve hata alınır.

2. Blue/Green Deployment

  • Nasıl Çalışır? Mevcut versiyonun (Blue) aynısından, yeni versiyonla (Green) bir kopya daha oluşturursunuz. Testler bittiğinde, Load Balancer (Service) trafiğini tek seferde Blue'dan Green'e çevirirsiniz.
  • Avantajı: Anında geçiş ve anında geri alma (Rollback).
  • Dezavantajı: Kısa süreliğine kaynak kullanımını (maliyet) ikiye katlar. Argo Rollouts gibi araçlarla EKS üzerinde kolayca yönetilebilir.

3. Canary Deployment

  • Nasıl Çalışır? Trafiğin küçük bir kısmını (örn: %5) yeni versiyona yönlendirirsiniz. Hata oranı artmazsa, trafik oranını yavaş yavaş artırırsınız (%20, %50, %100).
  • Avantajı: Riski en aza indirir. Gerçek kullanıcı trafiği ile test imkanı sağlar.
  • Gereksinim: Istio, Linkerd veya AWS App Mesh gibi bir Service Mesh veya gelişmiş bir Ingress Controller (Gateway API) gerekir.

EKS üzerinde kesintisiz dağıtım, sadece bir teknik değil, bir sanattır. Doğru strateji, uygulamanızın kritiklik seviyesine ve bütçenize göre değişir.