Teknik

E-pin Satış Yazılımı Yatay Ölçekleme Seçenekleri: Sunucuyu Büyütmek Yerine Çoğaltan Bayilerin Kampanya Günü Neden Hiç Çökmediğini Anlatalım

Kampanya gününde çöken sitelerin ortak hatası dikey büyümek. E-pin satış scriptini yatay ölçekleme: yük dengeleme, oturum, kuyruk, stok kilidi ve okuma kopyası.

E-pin Satış Yazılımı Yatay Ölçekleme Seçenekleri: Sunucuyu Büyütmek Yerine Çoğaltan Bayilerin Kampanya Günü Neden Hiç Çökmediğini Anlatalım

Çoğu işletme sahibi trafik arttığında ilk refleks olarak sunucu paketini büyütür. Daha fazla çekirdek, daha fazla RAM, daha hızlı disk. Bu bir noktaya kadar işe yarar ve sonra aniden yaramaz olur. Çünkü kampanya gününde siteyi diz çöktüren şey çoğunlukla işlemci gücü değil, aynı anda aynı satıra uzanan yüzlerce isteğin birbirini beklemesidir.

Yatay ölçekleme tam da bu yüzden var. Tek makineyi devleştirmek yerine işi birden fazla makineye bölersin. Kulağa büyük bir altyapı projesi gibi gelir ama bir e-pin satış yazılımı için adımlar oldukça nettir ve çoğu, aylık maliyeti ciddi biçimde artırmadan uygulanabilir. Bu yazıda hangi katmanın nasıl çoğaltılacağını, hangi sırayla ilerleyeceğini ve nerede tuzak olduğunu tek tek gözden geçiriyoruz.

%70Kampanya çöküşlerinde veritabanı kaynaklı darboğaz payı
3 katİki uygulama sunucusuyla elde edilen eşzamanlı istek kapasitesi
180 msDoğru önbellekle ürün listesinde hedeflenen yanıt süresi
1 satırÇifte teslimatın kaynağı: kilitlenmemiş tek stok kaydı

Dikey büyümenin duvarı tam olarak nerede başlar?

Dikey büyüme, yani sunucuyu güçlendirmek, tek bir işlemin süresini kısaltır. Ama e-pin satışında asıl sorun tek işlemin yavaşlığı değil, işlemlerin sıraya girmesidir. Bir kupon kampanyası duyurduğunda binlerce kişi aynı saniyede aynı ürünün stok satırına dokunmaya çalışır. Veritabanı bu satırı kilitler, diğerleri bekler, bekleyenler bağlantı havuzunu doldurur ve site yanıt vermez hale gelir.

Bu tabloda daha güçlü bir işlemci sadece felaketin gelişini birkaç dakika geciktirir. Çözüm işi paralelleştirmek ve kritik kaynağa dokunan süreyi kısaltmaktır. Yani dikey büyüme hız verir, yatay ölçekleme dayanıklılık verir. İkisi rakip değildir; sıralamaları farklıdır. Önce uygulamayı çoğaltılabilir hale getirir, sonra gerekirse makineleri güçlendirirsin.

Uygulama katmanını durumsuz hale getirmeden hiçbir şey çoğaltılamaz

Yatay ölçeklemenin ilk şartı şudur: uygulama sunucusu hiçbir kalıcı bilgi tutmayacak. Oturum dosyaları diske yazılıyorsa, kullanıcı ikinci sunucuya düştüğünde oturumu düşer. Yüklenen ürün görselleri yerel klasördeyse, ikinci sunucuda görsel görünmez. Kurulum sırasında üretilen geçici dosyalar yereldeyse, iki sunucu birbirinden habersiz iki farklı gerçeklik yaşar.

Bu yüzden ilk iş oturumu merkezi bir depoya taşımaktır. Bellek içi bir anahtar-değer deposu ya da paylaşımlı bir veritabanı tablosu iş görür. İkinci iş, yüklenen dosyaları paylaşımlı bir depolama alanına ya da nesne depolamaya almaktır. Üçüncüsü, zamanlanmış görevlerin yalnızca tek bir sunucuda çalışmasını garanti etmektir; aksi halde iki sunucu aynı siparişi iki kez işler.

Bir dijital ürün satış scriptinin kurulum belgesinde "oturum sürücüsü" ve "depolama sürücüsü" ayarlarını görüyorsan bu iyi haberdir; yazılım zaten çoğaltılmayı düşünerek yazılmıştır.

KatmanYatay ölçekleme yöntemiZorlukTipik kazanç
Web / PHP katmanıYük dengeleyici arkasında 2+ düğümDüşükÇok yüksek
OturumMerkezi bellek deposuDüşükZorunlu ön adım
Statik dosya / görselCDN veya nesne depolamaDüşükYüksek
Okuma sorgularıOkuma kopyası (replica)OrtaYüksek
Yazma sorgularıTek birincil, kısa işlemYüksekOrta
Teslimat / mail / APIKuyruk + ayrı işçi süreçlerOrtaÇok yüksek

Yük dengeleyici arkasında iki düğüm: en hızlı kazanç

Uygulama durumsuz hale geldiyse ikinci düğüm eklemek şaşırtıcı derecede kolaydır. Önüne bir yük dengeleyici koyar, gelen isteği iki sunucuya dağıtırsın. Burada dikkat edilecek üç ayrıntı var.

Birincisi, yapışkan oturum kullanma. Oturumu zaten merkezileştirdiysen buna ihtiyacın yoktur ve yapışkanlık, dağılımı bozar. İkincisi, sağlık kontrolü uç noktası tanımla; sadece "sayfa 200 döndü mü" değil, "veritabanına ulaşabiliyor mu" sorusunu da soran bir kontrol yaz. Üçüncüsü, dağıtımı iki sunucuya aynı anda yap. Sürüm farkı olan iki düğüm, bulması en zor hatayı üretir: aynı kullanıcı yenilediğinde farklı davranan bir site.

Bu üç ayrıntıya dikkat ettiğinde kampanya günü kapasiteni neredeyse doğrusal biçimde artırırsın ve bakım için tek düğümü sıraya alıp kapatabilirsin. Site kesintisiz kalır.

Yüksek trafikte yanıt süresinin nereye harcandığı

  • Veritabanı sorgu ve kilit bekleme 45%
  • Dış servis çağrıları (ödeme, tedarikçi) 25%
  • Şablon ve sayfa üretimi 20%
  • Ağ ve statik içerik 10%

Okuma kopyası mı, önbellek mi? Sıralamayı yanlış yapma

Veritabanı darboğaza girdiğinde herkesin aklına ilk gelen okuma kopyası eklemektir. Oysa çoğu e-pin sitesinde daha ucuz ve daha etkili adım önbellektir. Ürün listesi, kategori ağacı, döviz kuru ve ana sayfa bileşenleri saniyede yüzlerce kez sorgulanır ama dakikalarca değişmez. Bunları bellekte tutmak, veritabanı yükünün büyük kısmını bir çırpıda siler.

Önbellek doygunluğa ulaştığında ve hâlâ okuma baskısı varsa okuma kopyası mantıklı olur. Burada kritik kural şudur: satın alma akışındaki hiçbir sorgu kopyadan okunmamalı. Kopyalar birincil sunucunun birkaç yüz milisaniye gerisindedir. Stok kontrolünü gecikmeli bir kaynaktan yaparsan biten ürünü satarsın. Kopyaları raporlama, listeleme ve arama için kullan; sepet, ödeme ve teslimat için daima birincil sunucuya git.

Kilidi kısa tut

Stok satırını kilitleyip içeride ödeme sağlayıcısına istek atma. Dış servis yavaşladığında kilit dakikalarca açık kalır ve tüm sitenin o ürünü satması durur. Önce kodu rezerve et, kilidi bırak, sonra ödemeyi doğrula.

Kuyruk: e-pin işinde en çok göz ardı edilen ölçekleme aracı

Bir siparişin tamamlanması için mutlaka o istek içinde yapılması gereken işler azdır: ödemeyi doğrula, kodu rezerve et, kullanıcıya göster. Geri kalan her şey beklemeye alınabilir. Bilgilendirme e-postası, fatura oluşturma, tedarikçiye stok yenileme çağrısı, mesajlaşma bildirimleri, analiz kaydı. Bunları kuyruğa atıp ayrı işçi süreçlere devrettiğinde kullanıcının gördüğü yanıt süresi dramatik biçimde düşer.

Kuyruğun ikinci faydası izolasyondur. Tedarikçinin API'si yavaşladığında sitenin tamamı değil, sadece o kuyruk birikir. Üstelik işçi sayısını artırarak birikmiş işi paralel eritirsin ki bu tam anlamıyla yatay ölçeklemedir. Bir e-pin scriptinde teslimat ve bildirim süreçlerinin kuyruğa uygun yazılmış olması, kampanya gününde en çok fark yaratan mimari kararlardan biridir. Hangi modüllerin kuyruk destekli çalıştığını özellikler bölümünden kontrol edebilirsin.

Ölçeklemeye başlamadan önce sıralı kontrol listesi

Yatay ölçeklemede sıra çok önemlidir. Aşağıdaki maddeleri yukarıdan aşağıya uygula; atlayarak ilerlersen ikinci sunucu sorunu çözmez, sadece hataları ikiye katlar.

SıraAdımTamamlanma ölçütü
1Yavaş sorgu günlüğünü aç ve ilk 10 sorguyu düzeltHiçbir sorgu 200 ms üstünde değil
2Oturumu merkezi depoya taşıSunucu yeniden başlayınca oturum düşmüyor
3Yüklenen dosyaları paylaşımlı depoya alHer düğüm aynı görseli görüyor
4Statik içeriği CDN'e verKaynak sunucu isteklerinin yarısı düştü
5Zamanlanmış görevleri tek düğüme sabitleAynı görev iki kez çalışmıyor
6Bildirim ve teslimat işlerini kuyruğa alSipariş yanıtı 500 ms altında
7İkinci uygulama düğümünü devreye alBir düğüm kapatılınca site ayakta
8Yük testiyle doğrulaHedef eşzamanlılıkta hata oranı %0,1 altı

Ölçeklenebilir bir altyapıyla başlamak en ucuz yoldur

Pinova, durumsuz uygulama katmanı, kuyruk destekli teslimat ve güvenli stok kilidiyle gelir. Büyüdüğünde yeniden yazmak zorunda kalmazsın.

Kaç ziyaretçiden sonra yatay ölçeklemeye geçmeliyim?

Ziyaretçi sayısı tek başına iyi bir gösterge değildir. Asıl ölçüt eşzamanlılıktır. Kampanya anında saniyede 30 ve üzeri sipariş denemesi bekliyorsan ya da yanıt sürelerin yoğunlukta iki katına çıkıyorsa hazırlığa başlamalısın.

Tek sunucuda kalıp sadece önbellek eklesem yetmez mi?

Trafiğin çoğu okuma ağırlıklıysa uzun süre yeter. Ancak tek sunucu tek arıza noktasıdır. Sunucu bakıma girdiğinde satış durur. Yatay ölçeklemenin performans kadar önemli faydası bu kesintisizliktir.

Yük dengeleyici arkasında ödeme dönüşleri sorun çıkarır mı?

Çıkarmaz, yeter ki iki koşul sağlansın: dönüş adresi sabit bir alan adına gelmeli ve doğrulama tamamen sunucu tarafında, ödeme kuruluşuna sorularak yapılmalı. Doğrulamayı oturuma bağlı yaparsan düğüm değiştiğinde işlem kaybolur.

Veritabanını da çoğaltmam gerekir mi?

Genellikle en son adımdır. Önce sorgu iyileştirme, önbellek ve kuyruk ile yazma baskısını azalt. Bunlar tükendiğinde okuma kopyası ekle; satın alma akışını yine de birincil sunucudan yürüt.

Yatay ölçekleme bir gecede kurulan bir şey değil, sırayla açılan bir dizi kapıdır. En büyük avantajı da ilk günden ölçeklenebilir yazılmış bir altyapıyla başlamaktır; sonradan dönüştürmek her zaman daha pahalıdır. Altyapının bu mimariyi nasıl karşıladığını görmek için canlı demo üzerinden panel akışını incele, ardından ihtiyacına uygun paketi fiyat bölümünden değerlendir.

Daha Fazlasını Keşfedin

Dijital ürün satışı ve otomasyon üzerine güncel rehberlere göz atın.

Tüm Yazıları Gör →
Bu yazıyı paylaşın
Bu yazıyı beğendiniz mi?
Teşekkürler!
← Tüm yazılar