Kesintisiz Yayına Alma: Mavi-Yeşil ve Kademeli Dağıtım Stratejileri

Doğrudan kopyalamanın riskleri, sembolik bağ yöntemi, mavi-yeşil yapı, kademeli dağıtım, veritabanı şeması ve geri dönüş planı. Kesintisiz Yayına Alma…

Kesintisiz Yayına Alma: Mavi-Yeşil ve Kademeli Dağıtım Stratejileri
İçindekiler
  1. Doğrudan Kopyalamanın Sorunları
  2. Sembolik Bağ Yöntemi
  3. Mavi-Yeşil Dağıtım
  4. Kademeli Dağıtım
  5. Veritabanı Değişiklikleri
  6. Önbellek ve Statik Dosyalar
  7. Geri Dönüş Planı
  8. Sonuç
  9. Sıkça Sorulan Sorular (SSS)
  10. En basit kesintisiz yöntem hangisi?
  11. Veritabanı değişikliklerini nasıl yönetmeliyim?
  12. Tek sunucuda mavi-yeşil yapılabilir mi?
  13. Yayın sonrası site bozuk görünüyor, neden?

Kesintisiz Yayına Alma: Mavi-Yeşil ve Kademeli Dağıtım Stratejileri

Yeni sürümü yayına alırken siteyi kapatıp dosyaları kopyalıyor, sonra tekrar açıyorsunuz. Bu birkaç dakika sürüyor ve o sırada gelen herkes hata görüyor. Oysa kesinti hiç olmayabilir.

Bu yazı, VDS sunucu üzerinde kesintisiz yayına alma yöntemlerini ele alıyor.

Doğrudan Kopyalamanın Sorunları

Dosyaları çalışan dizine doğrudan kopyalamak birkaç risk taşır:

  • Kopyalama sırasında karma durum oluşur. Yarısı eski, yarısı yeni.
  • Hata durumunda geri dönüş zordur. Eski sürüm üzerine yazılmıştır.
  • Veritabanı değişiklikleriyle senkron değildir.
  • Önbellek eski kodu tutuyor olabilir.

Birinci madde en tehlikelisidir: kopyalama devam ederken gelen bir istek, birbiriyle uyumsuz dosya sürümlerini bir arada çalıştırmaya çalışır ve öngörülemeyen hatalar üretir.

Sembolik Bağ Yöntemi

En basit ve en etkili çözüm, dizin değiştirmek yerine bağ değiştirmektir:

  1. Her sürüm kendi dizinine kurulur
  2. Web sunucusu bir sembolik bağa işaret eder
  3. Yeni sürüm tamamen hazırlanır
  4. Bağ yeni dizine çevrilir — anlık işlem
  5. Sorun çıkarsa bağ eski dizine geri çevrilir

Dördüncü adım kesintiyi ortadan kaldırır: sembolik bağı değiştirmek atomik bir işlemdir ve milisaniyeler sürer — karma durum oluşmaz.

Beşinci adım ise geri dönüşü saniyelere indirir. Eski sürüm dizini yerinde durduğu için, sorun görüldüğünde tek komutla geri alınır.

Bu yapıda paylaşılan öğeler ayrı tutulur: yükleme dizini, günlükler ve yapılandırma dosyası sürüm dizinlerinin dışında olmalı, her sürümden bağlanmalıdır.

Mavi-Yeşil Dağıtım

Daha kapsamlı bir yaklaşım, iki tam ortam bulundurmaktır:

Aşama Durum
Normal işletim Mavi ortam canlı, yeşil boşta
Hazırlık Yeni sürüm yeşile kurulur
Test Yeşil ortam denenir
Geçiş Trafik yeşile yönlendirilir
Bekleme Mavi bir süre korunur

Bu yapının değeri üçüncü aşamadadır: yeni sürümü gerçek sunucu ortamında, gerçek yapılandırmayla test edebilirsiniz — henüz kimse ona yönlendirilmemişken.

Maliyeti ise iki kat kaynaktır. Tek sunucuda çalışıyorsanız bu, iki uygulama örneğini aynı makinede farklı portlarda çalıştırmak anlamına gelir.

Kademeli Dağıtım

Birden fazla sunucunuz varsa üçüncü bir seçenek açılır:

  • Sunucular tek tek güncellenir.
  • Güncellenen sunucu havuzdan çıkarılır, sonra geri alınır.
  • Her adımda metrikler kontrol edilir.
  • Sorun görülürse kalanlar güncellenmez.

Dördüncü madde bu yöntemin en büyük avantajıdır: hatalı bir sürüm tüm kullanıcılara değil, yalnızca bir kısmına ulaşır ve yayılmadan durdurulabilir.

Bunun için sunucuların yük dengeleyici arkasında olması ve sağlık kontrolüne yanıt vermesi gerekir. Kaynakları esnek şekilde ölçeklendirebildiğiniz VDS sunucu yapılarında ikinci bir örnek eklemek bu modeli mümkün kılar.

Veritabanı Değişiklikleri

Kesintisiz dağıtımın en zor kısmı burasıdır. Kural şudur: veritabanı şeması hem eski hem yeni kod sürümüyle uyumlu olmalıdır.

Bunu sağlamak için değişiklikler bölünür:

  1. Önce ekle. Yeni sütun eklenir, eski kod etkilenmez.
  2. Sonra yaz. Yeni kod hem eski hem yeni sütuna yazar.
  3. Veriyi taşı. Arka planda dönüştürme.
  4. Okumayı değiştir. Yeni sütundan okunmaya başlanır.
  5. En sonda sil. Eski sütun kaldırılır.

Beşinci adım günler veya haftalar sonra yapılır: sütun silme işlemi, geri dönüş ihtimalinin tamamen ortadan kalktığından emin olduktan sonra yapılmalıdır.

Bu disiplin yavaş görünür ama tek alternatiftir. Tek adımda yapılan bir şema değişikliği, geri dönüşü imkânsız hâle getirir.

Önbellek ve Statik Dosyalar

Yayın sonrası sık yaşanan sorunlar:

Sorun Çözüm
Kod önbelleği eski dosyayı tutuyor Yayın sonrası önbelleği temizleyin
Tarayıcı eski stil dosyasını kullanıyor Dosya adına sürüm ekleyin
CDN eski içeriği sunuyor Geçersiz kılma tetikleyin
Uygulama önbelleği tutarsız Anahtarlara sürüm ekleyin

İkinci satır kullanıcıya en görünür sorundur: yeni HTML ile eski stil dosyasının birlikte yüklenmesi, sitenin bozuk görünmesine yol açar.

Çözüm, dosya adına içerik özeti eklemektir — içerik değiştiğinde ad da değişir ve tarayıcı yeni dosyayı indirmek zorunda kalır.

Geri Dönüş Planı

Her yayının bir geri dönüş yolu olmalıdır:

  • Geri dönüş tek komutla yapılabilmeli.
  • Kaç sürüm geride saklanacağı belirlenmeli.
  • Veritabanı geri dönüşü ayrı düşünülmeli.
  • Geri dönüş de test edilmeli.

Dördüncü madde ihmal edilirse plan kâğıt üstünde kalır: hiç denenmemiş bir geri dönüş prosedürü, kriz anında çalışacağının garantisi değildir.

Pratik bir alışkanlık: her ay bir yayın sonrası kasten geri dönüş yapıp tekrar ileri almak. Bu, prosedürün çalıştığını ve ekibin bildiğini doğrular.

Sonuç

Kesintisiz yayına almanın en kolay yolu sembolik bağ yöntemidir — bağı değiştirmek atomik bir işlemdir, karma durum oluşmaz ve geri dönüş saniyeler sürer. Mavi-yeşil yapı ise yeni sürümü gerçek ortamda test etme imkânı verir. En zor kısım veritabanıdır: şema hem eski hem yeni kodla uyumlu olacak şekilde adım adım değiştirilmeli, sütun silme işlemi en sona bırakılmalıdır. Ve geri dönüş prosedürünü düzenli olarak deneyin — hiç test edilmemiş bir plan garanti değildir.

Sıkça Sorulan Sorular (SSS)

En basit kesintisiz yöntem hangisi?

Sembolik bağ yöntemi. Her sürümü kendi dizinine kurar, web sunucusunu bir bağa yönlendirir ve yayın anında yalnızca bağı çevirirsiniz. İşlem atomiktir, milisaniyeler sürer ve sorun çıkarsa tek komutla geri alınır.

Veritabanı değişikliklerini nasıl yönetmeliyim?

Adımlara bölerek. Önce yeni sütunu ekleyin, sonra kodu hem eskiye hem yeniye yazacak şekilde güncelleyin, veriyi taşıyın, okumayı değiştirin ve eski sütunu en sonda silin. Tek adımda yapılan şema değişikliği geri dönüşü imkânsız kılar.

Tek sunucuda mavi-yeşil yapılabilir mi?

Yapılabilir — iki uygulama örneğini aynı makinede farklı portlarda çalıştırıp ters vekil üzerinden geçiş yaparsınız. Maliyeti iki kat kaynaktır, ama yeni sürümü gerçek yapılandırmayla test etme imkânı sağlar.

Yayın sonrası site bozuk görünüyor, neden?

Büyük olasılıkla tarayıcı eski stil dosyasını önbellekten kullanıyor. Yeni HTML ile eski CSS birleşince düzen bozulur. Çözüm, dosya adına içerik özeti eklemektir — içerik değiştiğinde ad da değişir ve tarayıcı yeni dosyayı indirmek zorunda kalır.