Görsel: Pixabay · Pixabay Lisansı
Sorun
Klasik dağıtımda uygulama durdurulur, yeni sürüm kurulur, tekrar başlatılır. Bu sürede site erişilemez.
Kısa bir kesinti gibi görünür ancak yoğun saatte yapılan bir dağıtım, kayıp sipariş demektir.
Temel yöntem: yeni sürümü yanına koymak
Yeni sürüm ayağa kaldırılır, sağlıklı olduğu doğrulanır, trafik ona yönlendirilir, eski sürüm kapatılır.
Bu yaklaşım kapsayıcı tabanlı kurulumlarda doğal olarak uygulanabilir.
Sorun çıkarsa trafiği eski sürüme geri almak saniyeler sürer; bu, en değerli tarafıdır.
Sağlık kontrolü zorunludur
Uygulamanın gerçekten hazır olduğunu söyleyen bir uç nokta bulunmalıdır.
Bu uç nokta yalnız sürecin ayakta olduğunu değil, veritabanına bağlanabildiğini de doğrulamalıdır.
Sağlık kontrolü olmadan yapılan geçişlerde, henüz hazır olmayan bir sürüme trafik yönlendirilir ve kullanıcılar hata görür.
Veritabanı göçleri en zor kısım
Uygulama kodu ile veritabanı şeması aynı anda değişemez; geçiş anında iki sürüm bir arada çalışır.
Kural: şema değişiklikleri geriye uyumlu olmalıdır. Önce sütunu ekleyin, kod onu kullanmaya başlasın, ancak eski sütunu çok daha sonra kaldırın.
Sütun silme ve yeniden adlandırma işlemlerini aynı dağıtımda yapmayın. Bu, kesintisiz dağıtımın en sık ihlal edilen kuralıdır.
Oturumlar ve önbellek
Oturum bilgisi uygulama belleğinde tutuluyorsa, geçişte kullanıcılar oturumlarını kaybeder.
Oturum ve şifreleme anahtarlarını kalıcı ve paylaşılan bir yerde saklayın. Aksi halde her dağıtım, panel kullanıcılarını sistemden atar.
Statik dosyalar
Yeni sürümün stil ve betik dosyaları farklı adlarla sunulmalıdır. Aynı adla farklı içerik sunmak, tarayıcı önbelleği nedeniyle bozuk sayfalara yol açar.
Dosya adına sürüm bilgisi eklemek bu sorunu tamamen çözer.
Dağıtım betiği disiplini
Betik, ilk kurulum ile güncellemeyi aynı komutla yapabilmelidir. İki ayrı yol, biri test edilmediği için eninde sonunda bozulur.
Betiğin veri silen adımları olmamalıdır. Proje klasörünü silip yeniden oluşturan yaklaşımlar, bağlı veri klasörlerini de siler.
Geri alma planı
Her dağıtımın geri alınabilir olması gerekir. Önceki sürüm imajını saklayın.
Geri alma prosedürünü en az bir kez gerçekten deneyin. Kriz anında ilk kez denemek, en kötü senaryodur.
Dağıtım öncesi otomatik kontroller
Dağıtımdan önce çalışan testler, hatalı kodun üretime gitmesini engeller.
Asgari kontrol seti: derleme başarılı mı, testler geçiyor mu, yapılandırma dosyaları geçerli mi?
Bu kontroller geçilmeden dağıtımın başlamaması gerekir; elle atlanabilen kontroller eninde sonunda atlanır.
Dağıtım kayıtları
Her dağıtımın kaydı tutulmalıdır: ne zaman, hangi sürüm, kim tarafından, hangi değişiklikleri içeriyor.
Bir sorun çıktığında ilk bakılacak yer son dağıtımdır; bu kayıt olmadan teşhis uzar.
Dağıtım sonrası otomatik sağlık kontrolü çalıştırın ve sonucu kaydedin.
Otomatik dağıtım kullanıyorsanız, dağıtım çalıştırıcısının ayakta olduğunu da izleyin; çalışmayan bir çalıştırıcı, değişikliklerin sessizce yayınlanmamasına yol açar ve bu uzun süre fark edilmez.
Sık sorulanlar
Küçük projelerde kesintisiz dağıtım gerekli mi?
Trafik düşükse ve bakım penceresi ilan edilebiliyorsa şart değildir. Ancak sağlık kontrolü ve geri alma imkânı her ölçekte değerlidir.
Veritabanı göçü geri alınabilir mi?
Geriye uyumlu tasarlandıysa evet. Sütun silen veya veri dönüştüren göçler geri alınamaz; bu yüzden yıkıcı işlemler ayrı ve sonraki bir dağıtıma bırakılmalıdır.
Dağıtımı hangi saatte yapmalıyım?
Trafiğin en düşük olduğu saatte, ancak ekibin müdahale edebileceği bir zaman diliminde. Gece yarısı yapılan ve kimsenin izlemediği dağıtımlar, sorun çıktığında saatlerce fark edilmez.



