← Tüm yazılar

Mühendislik4 dk okuma

Kesintisiz deploy nasıl çalışır

Yeni sürüm sağlıklı olmadan trafik ona geçmez; geçemezse eski sürüm yayında kalır. Arka planda olanlar.

Bir deploy sırasında kullanıcılarının hata sayfası görmemesi gerekir. OnScalable’da her deploy aynı sırayı izler.

Adım adım

  • Build: kod çekilir, imaj build edilir ve platformun registry’sine itilir. Aynı servisin aynı anda tek build’i çalışır; sırada bekleyen eski deploy’lar yenisi gelince iptal edilir.
  • Başlatma: yeni sürüm, instance sayısı kadar kopya olarak başlatılır. Bu sırada trafik hâlâ eski sürümdedir.
  • Sağlık kontrolü: her yeni instance health check yolundan başarılı yanıt verene kadar beklenir.
  • Geçiş: tüm yeni instance’lar sağlıklıysa trafik yeni sürüme geçer. Eski instance’lar kısa bir boşaltma süresinden sonra durdurulur; o anda işlenen istekler yarıda kesilmez.
  • Başarısızlık: health check zaman aşımına uğrarsa, uygulama çökerse ya da bellek limitini aşarsa yeni instance’lar silinir ve eski sürüm yayında kalır. Deploy FAILED olarak işaretlenir ve bildirim gönderilir.

Rollback

Daha önce başarılı olan herhangi bir deploy’a tek tıkla dönebilirsin. Rollback yeniden build etmez; o sürümün imajı doğrudan yayına alınır, bu yüzden saniyeler içinde tamamlanır. Geçiş yine aynı sağlık kontrolünden geçer.

Restart ve ölçekleme

Ortam değişkeni, plan ya da instance sayısı değiştiğinde yayındaki imaj build edilmeden yeniden başlatılır. Otomatik ölçekleme açıksa instance sayısı CPU ve bellek hedeflerine göre yeniden deploy olmadan artar ya da azalır.

Uygulamanda yapman gerekenler

  • Gerçekten hazır olduğunda 200 dönen bir health check yolu ekle.
  • SIGTERM geldiğinde yeni istek kabul etmeyi bırakıp açık istekleri bitir.
  • Veritabanı şema değişikliklerini geriye uyumlu yap: eski ve yeni sürüm kısa bir süre aynı anda çalışır.