Teknoloji

WooCommerce ve Laravel için Blue-Green Deployment

Blue-Green Deployment ile Kesintiyi Azaltmak

Yoğun satış dönemlerinde bir WooCommerce mağazası ya da onlarca müşteriye hizmet veren bir Laravel SaaS uygulaması yönetiyorsanız, “güncelleme yapacağım ama siteyi kapatmak istemiyorum” cümlesini muhtemelen defalarca düşündünüz. Eklenti, tema veya framework güncellemeleri, veritabanı migrasyonları ve yeni özelliklerin devreye alınması sırasında oluşan kesintiler, alışverişi yarıda bırakabilir ve müşteri memnuniyetini olumsuz etkileyebilir. İşte tam bu noktada Blue-Green deployment yaklaşımı, WooCommerce ve Laravel projelerinde güncelleme riskini azaltmaya yardımcı olabilir.

Bu yazıda, Blue-Green modelini, hem WooCommerce (WordPress) hem de Laravel uygulamaları için adım adım ele alacağız. Uygulama kodu, veritabanı, cache, DNS ve load balancer tarafında nelere dikkat etmeniz gerektiğini somut örneklerle anlatacağız. Ayrıca Blue-Green yaklaşımının, geliştirme–staging–canlı süreçlerinizle, CI/CD hattınızla ve felaket senaryolarıyla nasıl uyumlu çalıştığını da netleştireceğiz.

Blue-Green Deployment Nedir, Mantığı Neye Dayanır?

Blue-Green deployment, mevcut uygulama sürümüyle yeni sürümü ayrı dizinlerde veya sunucularda hazır tuttuğunuz bir dağıtım yöntemidir. Ortamların bağımlılıkları ve davranışları karşılaştırılabilir olmalıdır; veritabanı ve dosyalar ise seçilen mimariye göre paylaşılabilir. İki kod kopyası, bütün sistemin yalıtıldığı veya her güncellemenin kesintisiz olacağı anlamına gelmez.

  • Blue: Mevcut üretim sürümü.
  • Green: Hazırlanan yeni kod sürümü. Yazma testleri önce üretimden ayrılmış veri ve entegrasyonlarla yapılır; ortak canlı şemadaki değişiklikler Blue’yu da etkiler.

Yeni versiyonu Green ortamda hazırlayıp test edersiniz. Doğrulama tamamlanınca yeni trafiği Blue’dan Green’e yönlendirirsiniz; devam eden istekler geçiş sırasında Blue’da kalabilir. Sorun çıkarsa, Blue sürümü güncel veritabanı ve paylaşılan durumla hâlâ uyumluysa yönlendirmeyi tekrar Blue’ya alarak hızlı rollback yapabilirsiniz. Trafiği geri almak, veritabanında yapılan değişiklikleri geri almaz. Böylece:

  • Uyumlu veritabanı değişiklikleri ve doğru trafik geçişiyle bakım sayfası ihtiyacını azaltabilirsiniz.
  • Yeni kodu gerçek trafiği almadan önce üretim benzeri bir ortamda test edebilirsiniz.
  • Blue sürümü geri dönüşe hazır ve veriyle uyumlu kaldığında rollback süresini kısaltabilirsiniz.

Blue-Green modelini daha geniş bir akış içinde görmek isterseniz, tavsiye edilen geliştirme–staging–canlı mimarilerini anlattığımız WordPress ve Laravel geliştirme, staging ve canlı ortam rehberimize da göz atabilirsiniz.

WooCommerce ve Laravel’de Klasik Güncelleme Sorunları

Blue-Green’e geçmeden önce, WooCommerce ve Laravel projelerinde karşılaşılabilecek tipik güncelleme problemlerini netleştirmek faydalı:

WooCommerce tarafında yaşananlar

  • Eklenti ve tema güncellemeleri sırasında siteye bakım modu konması, ödeme adımında sepetlerin bozulması.
  • WooCommerce veritabanı yapısına (tablo, sütun, index) müdahale eden güncellemelerde beklenmedik hata sayfaları.
  • Staging’de test edilip canlıya “elle” aktarılan değişikliklerin eksik veya farklı versiyonlarda kalması.
  • Önbellek (page cache, Redis/Memcached) ile yeni kodun uyumsuzluğundan kaynaklı karışık HTML veya oturum sorunları.

Laravel tarafında yaşananlar

  • php artisan migrate çalışırken tablolara kilit gelmesi ve API’nin anlık 500 hatalar vermesi.
  • Queue çalışanlarının (queue:work, Horizon) eski kodla, web isteklerinin yeni kodla çalışması ve sürüm karmaşası.
  • Env dosyası değişikliklerinin kontrolsüz yapılması, config cache’in güncellenmemesi.
  • Deployment sırasında vendor klasörünün yarım kalması ve fatal error’lar.

Bu riskler, Blue-Green deployment’i özellikle yoğun trafikli WooCommerce ve Laravel projelerinde iş sürekliliğini destekleyen seçeneklerden biri haline getiriyor.

Blue-Green Mimarinin Temel Bileşenleri

Başarılı bir Blue-Green kurgusu için altyapıda bazı net bileşenlerin olması gerekiyor:

1. İki ayrı uygulama ortamı

  • Aynı sunucuda iki uygulama dizini: /var/www/site-blue ve /var/www/site-green.
  • Veya iki ayrı VPS/dedicated sunucu: örnek erişim adları blue.example.com ve green.example.com.
  • Uyumlu PHP sürümü, uzantılar, sistem bağımlılıkları ve web sunucusu ayarları. PHP yükseltmesi de yapılıyorsa her uygulama sürümünü hedef çalışma ortamıyla ayrıca test edin.

2. Trafik yönlendirme katmanı

Blue’dan Green’e geçişi yönetmek için:

  • Nginx veya Apache sanal host’larında tek bir symlink kullanabilirsiniz (örn. /var/www/current → blue/green).
  • Bir reverse proxy / load balancer (örneğin farklı backend’e yönlenen upstream’ler) tercih edebilirsiniz.
  • İleri seviye senaryolarda DNS tabanlı geçiş yaparken TTL stratejilerini kullanarak geçişi planlayabilirsiniz; DNS tabanlı geçiş tüm istemcilerde aynı anda gerçekleşmez.

3. Ortak ya da uyumlu veritabanı katmanı

Bu rehberdeki modelde Blue ve Green ortamlar aynı canlı veritabanını paylaşır. Ancak bu, şema ve veri değişikliklerinin geçiş ve rollback süresince her iki kod sürümüyle de uyumlu olması gerektiği anlamına gelir. Ayrı uygulama dizinleri, ortak veritabanını test işlemlerinden yalıtmaz. Alternatif olarak, ileri seviye senaryolarda her ortam için farklı veritabanı ve replikasyon, online schema değişikliği kurguları da mümkündür. Bunu özellikle WooCommerce ve Laravel için detaylı anlattığımız MySQL’de sıfır kesinti şema değişiklikleri ve Blue-Green rehberinde bulabilirsiniz.

WooCommerce İçin Blue-Green Deployment Adımları

Örnek olarak, yönetim yetkinizin ve iki sürümü çalıştıracak kapasitenizin bulunduğu bir VPS üzerindeki WooCommerce mağazasını ele alalım. Hedef, yeni kodu canlı dosyaların üzerine yazmadan hazırlamak ve kontrollü geçiş yapmaktır.

1. Yerleşim: Blue ve Green dizinlerini ayırmak

  • Şu an çalışan site: /var/www/woocom-blue
  • Yeni sürüm için hazırlanacak kopya: /var/www/woocom-green
  • Web sunucusunun DocumentRoot’u: /var/www/current (bu bir symlink)

Başlangıçta current → woocom-blue olacak. Geçiş anında symlink’i woocom-green dizinine çevireceğiz.

2. Blue’dan Green’e dosya kopyalama

Yeni ve boş Green dizinine sabitlenmiş bir kod sürümü aktarın. Mevcut mağazadan ilk kopya alınacaksa aşağıdaki komutun tek başına tutarlı veritabanı veya medya yedeği üretmediğini dikkate alın:

  • Dosyaları rsync ile aktarın: rsync -a /var/www/woocom-blue/ /var/www/woocom-green/
  • wp-config.php içindeki veritabanı bağlantısını test için canlıdan ayrılmış bir veritabanı kopyasına yöneltecek şekilde planlayın; kopyalanan canlı ayarlarla Green’i çalıştırmayın. Test veritabanını daha sonra canlının üzerine taşımayın: bu sırada oluşan siparişler kaybolabilir. Ortak veritabanlı geçişte Green, testlerden sonra güncel canlı veritabanına bağlanacaktır.
  • wp-content/uploads klasörünü canlı geçişte iki ortam arasında ortak dizin veya symlink ile kullanabilirsiniz. Dosya değiştiren testler için ayrı bir medya kopyası kullanın; geçişte canlıya eklenen medyanın Green’den de erişilebilir olduğundan emin olun.

Özellikle büyük medya arşivlerinde, medya dosyalarını object storage’a taşıyarak deploy süreçlerini hızlandırmak için medya offload stratejisi rehberimize de göz atabilirsiniz.

3. Green ortamda güncellemeleri uygulamak

Canlı veritabanından ve dosya yazma hedeflerinden ayrılmış Green test ortamında, gerçek ödeme, e-posta, webhook ve zamanlanmış görevlerin üretim sistemlerine işlem göndermesini engelledikten sonra:

  • Gerekli tema ve eklenti güncellemelerini WP-CLI ile veya admin panel üzerinden uygulayın.
  • WooCommerce veritabanı güncellemeleri (yeni sürüm uyarısı) varsa önce izole veritabanı kopyasında deneyin. Canlı geçiş için ayrıca planlayın: Blue ve Green aynı veritabanına bağlıyken Green’den başlatılan güncelleme Blue’yu da etkiler. Eski kodla uyumluluk doğrulanamıyorsa bu güncelleme için kesintisiz geçiş veya yalnızca trafik yönlendirmesiyle rollback varsaymayın.
  • Önbellek katmanlarınızın (LiteSpeed Cache eklentisi, Nginx mikro önbelleği, vs.) ayarlarını yeni sürüme göre gözden geçirin.

Green’i yalnızca test erişimine açın. /etc/hosts ile alan adını Green’e ayrılmış bir IP’ye yönlendirebilirsiniz; bu dosya aynı IP’deki iki uygulama dizini arasında seçim yapmaz. Buradaki tek sunuculu dizin düzeninde, Green dizinine yönlenen ve dış erişimi kısıtlanmış ayrı bir test sanal host’u veya eşdeğer yönlendirme gerekir. Test adresinin gerçekten Green’i açtığını ve test için uygun URL/HTTPS ayarlarını doğrulayın.

4. Sağlık kontrolleri ve regresyon testi

Geçiş öncesinde şu işlemleri canlıdan ayrılmış Green test ortamında manuel veya otomasyonla test edin:

  • Ana sayfa, kategori, ürün detay sayfalarının açılış hızı ve hatasız çalışması.
  • Sepete ekleme, sepet görüntüleme, kupon kullanımı.
  • Ödeme adımı: Gerçek tahsilat yapmayan bir sandbox ödeme sağlayıcısıyla en az bir tam sipariş akışı.
  • Giriş/çıkış, üyelik oluşturma, şifre sıfırlama.

Log ve performans analizi konusunda daha derin bir bakış istiyorsanız, e-ticaret siteleri için log analizi rehberindeki dönüşüm kaybı ve 4xx/5xx incelemelerini sürecinize dahil edebilirsiniz.

5. Trafiği Blue’dan Green’e almak (symlink değişimi)

Geçişten önce Green’i güncel canlı veritabanına ve canlı medya alanına bağlayın; planlanan veritabanı değişikliklerinin Blue ile uyumunu doğrulayın. Teste özgü ödeme ve entegrasyon ayarlarını canlıya taşımayın. Üretim WordPress kimlik doğrulama anahtarları, salt değerleri ve çerez ayarlarını koruyun. Blue’dan gelen mevcut sepet ve oturumların Green’de sürdüğünü, önbelleğin iki sürüm arasında uyumsuz veri paylaşmadığını doğrulayın. Bu koşullar sağlandığında Nginx/Apache konfigürasyonunuz /var/www/current dizinine bakarken trafik geçişine hazırlanabilirsiniz:

  1. Dağıtımı tek süreçle yürütün; paralel deploy’ları kilitleyin. current mevcut bir sembolik bağlantı, current.next ise henüz bulunmayan bir ad olmalıdır. Linux ve GNU coreutils kullanılan, bağlantıların aynı yerel dosya sistemindeki aynı üst dizinde bulunduğu bu örnekte önce yeni bağlantıyı oluşturup sonra yeniden adlandırın:
    test -L /var/www/current &&
    test -d /var/www/woocom-green &&
    ln -sT /var/www/woocom-green /var/www/current.next &&
    mv -Tf /var/www/current.next /var/www/current

    -T hedefi bir dizinin içine taşıma olarak yorumlamayı önler. Aynı dosya sistemindeki rename, mevcut bağlantı adını arada kaybolmadan değiştirir; tüm HTTP isteklerini, dosya okumalarını ve veritabanı işlemlerini tek işlem yapmaz. Bir adım hata verirse devam etmeyin; kalan current.next bağlantısını inceleyin.

  2. Eski isteklerin tamamlanması için Blue dosyalarını tutun. PHP-FPM/OPcache ve gerçek dosya yolu çözümlemesinin yeni sürümü kullandığını doğrulayın; gerekiyorsa servisinizin kontrollü reload yöntemini kullanın. Yeniden başlatma ile kesintisiz geçişi eşdeğer saymayın.
  3. Önbelleği katman ve kapsam seçerek geçersizleştirin; ortak Redis veritabanını topluca boşaltmak oturumları, kuyrukları veya kilitleri silebilir. Kişiye özel sepet, ödeme ve hesap yanıtlarını ortak sayfa önbelleğine almayın.
  4. Uyumsuz değişiklik için bakım gerekiyorsa HTTP 503 yanıtı veren bir bakım sayfası kullanın. Bu süreyi kesinti olarak planlayın.

Geçiş süresi ve kullanıcıya etkisi, trafik yönlendirme, devam eden istekler ve önbellek davranışına bağlıdır; kesintisizliği geçiş sırasındaki hata ve gecikme ölçümleriyle değerlendirin.

Bağlantı değişiminin kapsamı için Linux rename belgesini; Laravel adımları için resmî dağıtım belgesini inceleyin.

6. Rollback stratejisi

Geçiş sonrası sipariş sayısında beklenmeyen bir düşüş veya hata oranı ve yanıt süresinde artış görürseniz:

  • Eski sürümün güncel veri, dosya, önbellek biçimi ve bekleyen işlerle uyumunu doğrulayın; ardından aynı geçici bağlantı ve rename yöntemiyle trafiği Blue’ya alın.
  • PHP süreçlerini ve sürüme bağlı önbellekleri geri dönüş planına göre koordine edin; sipariş veya oturum verilerini silmeyin.
  • Green’deki sorunu inceleyin; çalışan sürüm dizinini yerinde değiştirmek yerine yeni bir release hazırlayın.

Uyumlu eski sürüme trafik yönlendirmek, yedekten tüm sistemi geri yüklemekten daha hızlı olabilir. Ancak kod rollback’i veritabanı değişikliklerini geri almaz; veri kurtarma planını ayrıca hazırlayın. Eski veritabanını geri yüklemek yedekten sonra oluşan siparişleri kaybettirebilir; ödeme sağlayıcısındaki işlemler de kod geri dönüşüyle iptal olmaz. Kurtarma noktası ve dış işlemlerin mutabakatı için ayrı bir plan kullanın.

Laravel Uygulamaları İçin Blue-Green Deployment Adımları

Laravel’de sürüm dizinlerini, Artisan önbellek komutlarını ve süreç yöneticisini tek bir dağıtım akışına bağlayabilirsiniz. Örnek sıralama Laravel 12 belgelerindeki davranışları temel alır; kullandığınız sürümün komutlarını ve uygulamanızın Composer script’lerini doğrulayın.

1. Klasik “releases” + “current” yapısını benimsemek

Kod ile kalıcı veriyi ayıran örnek yapı:

  • /var/www/app/releases/202501010101: Blue kodu.
  • /var/www/app/releases/202501021200: Yeni Green kodu.
  • /var/www/app/current: Aktif release’e bağlantı.
  • /var/www/app/shared: Üretim yapılandırması ve kalıcı uygulama dosyaları. Laravel’in web kökü current/public olmalı; proje kökü internete açılmamalıdır.

Bu mantığı detaylı anlattığımız VPS için CI/CD rehberinde hem rsync hem de sembolik sürüm yönetimi örnekleriyle bulabilirsiniz.

2. Yeni sürümü Green ortama deploy etmek

Yeni commit geldiğinde CI sistemi (örn. GitHub Actions) şu adımları çalıştırabilir:

  1. Yeni, boş ve değişmez bir release dizinine incelenmiş commit’i, kilit dosyalarını ve varsa hazırlanmış frontend varlıklarını aktarın. Eski release’in oluşturulmuş config/cache dosyalarını kopyalamayın.
  2. Composer veya Artisan çalışmadan önce hedef ortama ait .env ya da sunucu ortam değişkenlerini hazırlayın. Üretim APP_KEY, oturum çerezi ayarları ve oturum backend’i sürümler arasında uyumlu kalmalıdır. Staging anahtarlarını veya sandbox ödeme ayarlarını üretime taşımayın.
  3. Kalıcı dosyalar ve gerekiyorsa dosya oturumları için paylaşılan depolamayı bağlayın. storage ve bootstrap/cache için gerekli süreç yazma izinlerini sağlayın; bootstrap/cache ve derlenmiş Blade görünüm dizinini release’e özel tutun. Tüm storage paylaşılırsa VIEW_COMPILED_PATH ile ayrı yazılabilir görünüm yolu tanımlayıp config cache’inden önce hazırlayın. Public disk kullanılıyorsa public/storage bağlantısını planlayın.
  4. Release dizininde composer install --no-dev --optimize-autoloader çalıştırın. Composer install sırasında uygulama script’leri çalışabileceğinden bunları önceden inceleyin; ortak canlı veriye erişen işlemleri hazırlıkla karıştırmayın. Frontend derlemesini kilitlenmiş bağımlılıklarla tamamlayın.
  5. Son ortam ayarlarıyla sırasıyla php artisan config:cache, php artisan route:cache ve php artisan view:cache çalıştırın; başarısız adımda dağıtımı durdurun. Config cache oluşturulduktan sonra .env değiştirmek yeterli değildir; cache yeniden üretilmelidir.
  6. İzole regresyon testlerini tamamlayın. Ortak canlı veritabanındaki migrasyonları aşağıdaki uyumluluk planıyla tek yetkili süreçte uygulayın; ardından Green üzerinde veri değiştirmeyen hazır olma kontrollerini ve geçiş önkoşullarını doğrulayın.

Laravel’i VPS üzerinde yayınlama tarafındaki en iyi pratikleri ve Nginx + PHP-FPM yapılandırmasını adım adım görmek isterseniz, Laravel uygulamalarını VPS’te yayınlama rehberimizi mutlaka inceleyin.

3. Veritabanı migrasyonlarını iki sürümle uyumlu planlamak

Laravel tarafında asıl kritik nokta migrations. Genel tavsiyemiz:

  • Önce şemayı eski kodla geriye uyumlu biçimde genişleten migrasyonları planlayın (yeni kolon ekleme, nullable alanlar, vs.). Eklemelerin eski sorguları ve yazma işlemlerini bozmadığını, kilit ve çalışma süresi etkisini doğrulayın.
  • Yeni kodun geçiş sırasında karşılaşacağı şema ve veri durumlarıyla uyumunu tasarlayın (feature flag, null toleransı). Kolon silme veya yeniden adlandırma gibi eski kodu bozacak değişiklikleri, Blue devreden çıktıktan ve rollback penceresi kapandıktan sonraki ayrı bir aşamaya bırakın.
  • Büyük tablolar için gh-ost veya benzeri araçları, veritabanı motoru, topoloji ve işlem desteğini doğrulayarak değerlendirin; online araçlar her değişikliği kilitsiz veya geri alınabilir yapmaz. Detaylar için tekrar MySQL Blue-Green şema değişikliği rehberine bakabilirsiniz.

Bu uyumluluk kontrolleri, Blue (eski sürüm) ve Green’in (yeni sürüm) geçiş boyunca aynı veritabanını kullanabilmesini hedefler; iki sürümün okuma ve yazma akışlarını birlikte test edin.

4. Queue, Horizon ve scheduler senkronizasyonu

Laravel projelerinde sık yapılan hata, sadece web isteklerini yeni sürüme alıp queue işçilerini eski sürümde bırakmak. Blue-Green’de şu stratejiyi uygulayın:

  • Önce Green’in kodunu, yapılandırmasını ve önbelleklerini hazırlayın. Bekleyen işlerin veri biçiminin her iki sürümle ve geri dönüşle uyumunu test edin.
  • Süreç yöneticisinde Blue işçilerinin yeni iş almasını durdurun, devam eden işleri bitirmesi için yeterli süre tanıyın ve otomatik yeniden başlamayı geçişle koordine edin. queue:restart işçileri mevcut işten sonra çıkarır; Horizon kullanılıyorsa horizon:terminate süreç yöneticisinin yeniden başlatmasına yönelik bir sinyaldir. Bu komutlar kalıcı durdurma kilidi değildir; yöneticinin eski release’i yeniden açmasını engelleyin. Yeniden başlatma sinyalinin kullandığı cache erişimini doğrulayın.
  • Web trafiğini Green’e alın; süreç yöneticisinin çalışma dizini ve komut yolunu Green release’e yöneltip kullanılan işçileri veya Horizon’ı başlatın. Eski web isteklerinin hâlâ iş üretebileceğini hesaba katın.
  • Bu basit modelde tek scheduler sahibi belirleyin. Cron’un aktif release’i kullanmasını sağlayın; eski dakikadan kısa schedule:run döngüleri varsa dağıtım sonunda php artisan schedule:interrupt ile bunları sonlandırın. Başlatılmış arka plan işlerinin tamamlandığını ayrıca izleyin.

Bu sıra, web ve arka plan süreçlerinin sürüm geçişini koordine eder; işçilerin durduğu aralıkta kuyruk işleme gecikebilir. Kuyrukta eski sürümün ürettiği işler kalabileceğinden yeni işçilerin bu işlerle, rollback halinde de eski işçilerin yeni iş biçimleriyle uyumunu doğrulayın.

CI/CD ile Blue-Green Deployment’ı Otomatikleştirmek

Manuel bir Blue-Green akışıyla başlayıp doğruladığınız hazırlık, geçiş ve gözlem adımlarını CI/CD içinde tekrarlanabilir hale getirebilirsiniz. Örneğin GitHub Actions kullanarak bir VPS’e otomatik deploy yapan bir pipeline düşünelim.

Örnek pipeline akışı

  1. İncelenmiş commit için GitHub Actions workflow’u tetiklenir; test, statik analiz ve lint kontrolleri çalışır.
  2. Deploy kilidi alınır; yeni release, bağımlılıklar, kalıcı depolama ve ortama uygun yapılandırma hazırlanır.
  3. Şema, oturum, önbellek ve iş uyumluluğu doğrulanır; yalnız onaylanmış migrasyon planı uygulanır.
  4. Green sağlık kontrolleri geçince işçiler ve scheduler koordine edilir, trafik Green’e alınır.
  5. Canlı hata oranı, gecikme, sipariş akışı ve kuyruklar izlenir; uyum koşulları sağlanıyorsa geri dönüş uygulanır.
  6. Eski release, devam eden istekler ve işler tamamlanana, geri dönüş penceresi kapanana kadar korunur.

Bu tarz bir akışı kurmak için GitHub Actions ile VPS’e deploy sürecini detaylı anlattığımız otomatik deploy rehberini temel olarak kullanabilirsiniz.

DNS, Load Balancer ve TTL Stratejileri

Blue-Green’de trafiği değiştirmek için her zaman symlink kullanmak zorunda değilsiniz. Özellikle iki farklı VPS veya dedicated sunucu kullanıyorsanız:

  • Önünüzde bir reverse proxy / load balancer varsa, backend IP’sini Blue’dan Green’e çekebilirsiniz.
  • DNS üzerinden A/AAAA kayıtlarını Blue sunucudan Green sunucuya taşıyabilirsiniz.

DNS tabanlı geçiş yaparken en kritik konu TTL yönetimi. Geçişten önce TTL’leri düşürüp önceki TTL süresinin dolmasını beklemek, önbellekteki eski DNS yanıtlarının kullanım süresini azaltmaya yardımcı olur; tüm istemcilerin aynı anda geçmesini garanti etmez. Blue’yu eski kayıtları kullanan trafik ve mevcut bağlantılar için erişilebilir tutun; geçiş kararlı hale gelince TTL’leri tekrar yükseltin. Bu konuyu adım adım ele aldığımız taşıma için TTL stratejileri rehberini Blue-Green planınıza mutlaka entegre etmenizi öneririm.

WooCommerce ve Laravel’de İzleme, Loglama ve Rollback

Blue-Green’in en önemli avantajlarından biri, yeni sürümü canlı trafiğe açmadan değerlendirebilme imkanıdır. Bu, riski ortadan kaldırmaz; özellikle ortak veritabanına yazan testler canlı veriyi etkileyebilir. İyi bir izleme ve log yapısı, geçişteki sorunları tespit etmeye yardımcı olur.

Geçiş öncesi ve sonrası metrikler

  • WooCommerce için sipariş sayısı, sepet terk oranı, 4xx/5xx hata oranları.
  • Laravel API’leri için hata oranı, response time, timeout sayıları.
  • Sunucu tarafında CPU, RAM, disk IO, database sorgu süreleri.

Metrikleri benzer trafik düzeyleri ve tanımlanmış gözlem süreleriyle karşılaştırın. Tek bir HTTP 200 yanıtı ödeme, veritabanı veya kuyruk sağlığını kanıtlamaz. Hazır olma kontrolü gereken bağımlılıkları sınamalı; hassas yapılandırma veya müşteri verisi göstermemelidir.

Rollback’i otomatikleştirmek mümkün mü?

Evet. CI/CD hattınız, tanımlanmış bir gözlem penceresinde belirli eşikler aşıldığında otomatik rollback tetikleyebilir. Eşik ve süreyi normal trafik düzeyine göre belirleyin; eski sürümün güncel veri ve bekleyen işlerle uyumlu olduğu doğrulanmamışsa otomatik geri dönüş yerine uyarı ve manuel değerlendirme kullanın. İlk etapta manuel onaylı (örneğin “rollback için onay ver” adımı olan) bir yapı ile başlamak, sonra tamamen otomatiğe geçmek daha güvenli bir yol olur.

Blue-Green İçin Doğru Altyapıyı Seçmek

Blue-Green deployment için illa devasa bir cluster kurmak zorunda değilsiniz. WooCommerce ve Laravel projelerinde kaynak kapasitesi, erişim yetkileri ve kullanılabilirlik gereksinimlerine göre şu seçenekler değerlendirilebilir:

  • Tek VPS, iki dizin: Kaynak kapasitesi uygunsa aynı VPS üzerinde Blue ve Green dizinleri ve symlink ile geçiş. Bu yapı sürüm geçişini kolaylaştırır, ancak iki ortam aynı sunucunun arızasından etkilenir.
  • İki VPS, tek veritabanı: Web trafiğini iki VPS arasında Blue/Green olarak değiştirip, ortak bir veritabanı sunucusuna bağlamak.
  • Uygulama + veritabanı ayrımı: Yüksek trafikli WooCommerce/Laravel projelerinde, uygulama ve veritabanını ayrı VPS veya dedicated sunucularda konumlandırmak.

Özellikle WooCommerce gibi I/O yoğun e-ticaret projelerinde CPU, RAM ve disk IOPS ihtiyacını doğru planlamak için WooCommerce kapasite planlama rehberindeki hesaplama metodlarını Blue-Green tasarımına entegre etmenizi tavsiye ederiz.

Özet: WooCommerce ve Laravel’de Blue-Green İçin Yol Haritası

Blue-Green deployment, WooCommerce ve Laravel projelerinde güncelleme riskini azaltmaya yönelik bir yaklaşımdır. Bir yanda trafiği alan Blue ortam, diğer yanda yeni sürümü güvenle hazırladığınız Green ortam var. Symlink, Nginx upstream veya load balancer ile hızlı geçiş hedeflenebilir; DNS değişikliğinde ise istemciler aynı anda geçmez. Blue’ya dönüşün güvenliği, eski sürümün güncel veriyle uyumuna; süresi de yönlendirme ve çalışan süreçlerin durumuna bağlıdır.

WooCommerce tarafında tema/eklenti güncellemeleri, veritabanı yapısı ve önbellek yönetimi; Laravel tarafında ise migrations, queue işçileri ve release yönetimi kritik noktalar. CI/CD akışı ve altyapı planı, bu bileşenlerin birlikte çalışmasını ve geri dönüş koşullarını kapsamalıdır; kesintisizlik hedefi uygulamaya özgü geçiş ve rollback testleriyle değerlendirilmelidir.

Altyapı seçimine geçmeden önce Blue ve Green’in yerini, paylaşılan veri alanlarını, trafik geçişini ve geri dönüşün hangi koşullarda güvenli olduğunu yazın. CPU, RAM, disk I/O ve iki release’in aynı anda bulunacağı kapasiteyi ölçün; DCHost hizmet seçeneklerini bu gereksinimlerle karşılaştırın. Kesintiyi azaltma hedefini, yedek geri yükleme tatbikatı ve uygulamaya özgü dağıtım testleriyle destekleyin.

Sıkça Sorulan Sorular

Her mağaza için zorunlu değildir. Yoğun satış akışı ve sık sürüm değişikliği varsa hazırlığı canlıdan ayırmak yararlı olabilir. Düşük trafikli bir mağazada test edilmiş yedek ve planlı bakım yeterli olabilir. Blue-Green, ortak veritabanı güncellemelerini veya ödemeleri kendiliğinden yalıtmaz; eski sürümle veri uyumu, oturumlar ve geri dönüş koşulları ayrıca doğrulanmalıdır.

Blue-Green, doğrulanan yeni sürüme yeni trafiğin yönlendirilmesini esas alır. Canary, önce sınırlı trafikle başlayıp sonuçlara göre payı artırır. Tercih yalnız proje boyutuna bağlı değildir; trafik yönlendirme, ölçüm ve operasyon yetenekleri belirleyicidir. Her iki modelde de veritabanı, oturumlar ve bekleyen işler eski ve yeni kodla uyumlu olmalıdır.

Hayır. Buradaki modelde iki uygulama sürümü aynı canlı veritabanını kullanır. Şema ve veri değişiklikleri, geçiş ve geri dönüş penceresinde iki kod sürümünü de desteklemelidir. Yazma testleri ayrı bir veritabanı kopyasında yapılır; bu kopya canlıya geri yüklenmez. Ayrı üretim veritabanları ise replikasyon, yazma yönü ve veri tutarlılığı için ayrıca tasarım gerektirir.

Hosting paketinin sembolik bağlantı, web kökü, SSH, PHP süreçleri ve zamanlanmış görevler üzerindeki yetkilerine bağlıdır. İki dizin oluşturabilmek tek başına güvenilir geçiş sağlamaz. Gerekli kontroller yoksa kontrollü bakım akışı daha uygun olabilir; VPS veya dedicated seçerken de yönetim yetkisi ve işletim sorumluluğunu doğrulayın.

İki release’i ve derleme işlerini canlı yükle birlikte taşıyacak CPU, RAM, disk alanı ve I/O kapasitesini ölçerek başlayın. Tek VPS sürüm geçişini kolaylaştırır, ancak aynı sunucunun arıza riskini paylaşır. Ayrı uygulama düğümleri, veritabanı, yük dengeleyici ve yedekleme gereksinimlerini belirleyip DCHost seçenekleriyle karşılaştırın; belirli bir paketin her proje için yeterli olduğunu varsaymayın.
↑