Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Rolling Deployment: Sunucuları Sırayla Güncellemek, Kubernetes'te maxSurge ve maxUnavailable
Rolling deployment filoyu parça parça günceller; doğru yapılırsa kesinti olmaz ama iki sürüm bir süre yan yana yaşar. Nginx arkasında üç instance: naif script 90 GET'in 2'sini düşürdü, drain + readiness kontrollü script 237 GET ve 90 POST'u hatasız geçirdi. Kubernetes'te maxSurge/maxUnavailable ve minReadySeconds seçimi, progressDeadlineSeconds aşılınca otomatik geri dönüş olmadığı ve rolling'in uygun olmadığı durumlar.
Blue-Green Deployment: Nginx ile İki Environment, App Service Slot'ları ve Anında Geri Dönüş
Blue-green yeni sürümü boştaki ortama kurup smoke test'ten geçirir ve trafiği tek reload ile çevirir; geri dönüş de aynı reload'dur. Nginx'te preview portu, sürüm kontrollü smoke test, switch ve geri dönüşte hatasız probe, reload sırasında blue'da tamamlanan 4 sn'lik istek; App Service slot swap'ının warm-up ve slot setting tuzakları, Kubernetes'te Service selector değişimi ve ortak veritabanının getirdiği sınır.
Canary Release: Trafiği Yüzdeyle Açmak, Metrik ile Karar Vermek ve Otomatik Analiz
Canary yeni sürümü trafiğin küçük bir payıyla çalıştırır ve aynı anda çalışan control ile karşılaştırarak karar verir. Nginx'te weight (900/100, yapışkan değil), split_clients ile kullanıcıya yapışan canary ve boş anahtar tuzağı, 1.30'un sticky cookie'si; 4.000 istekte %4,80'e %0 fark ama 19 istekte anlamsız sonuç, WAIT/ABORT/PROMOTE veren gate, Gateway API weight'leri ve Argo Rollouts'un hatalı sürümü otomatik durdurması.