Kampanya günü sitenin yavaşlaması ya da ödeme adımında hata vermesi, reklam bütçesinin ve kampanya emeğinin boşa gitmesi demektir. Bu yüzden birçok ekip kampanyadan önce yük testi yapar. Asıl zorluk testi çalıştırmak değil, çıkan rakamları doğru okuyup karara bağlamaktır. Bu yazıda e-ticaret altyapısı yük testi sonuçlarını hangi ölçütlerle değerlendireceğinizi ve bulguların ölçekleme, önbellek ve veritabanı gibi altyapı kararlarına nasıl dönüştüğünü adım adım anlatıyoruz.
01E-ticaret altyapısı yük testi için önce hedef yükü yazın
Test sonucunu yorumlamak için karşılaştıracağınız bir hedef olmalı. Hedefiniz 1.200 eş zamanlı oturumsa “sistem 500 kullanıcıyı kaldırdı” cümlesi iyi haber değildir. Hedefi üç girdiyle çıkarın:
- Geçmiş veri: önceki kampanyanın ya da yoğun bir günün zirve saatindeki eş zamanlı oturum sayısı ve saniyedeki sipariş sayısı. Kaynağınız analitik araçlarınız ve sunucu günlükleridir.
- Büyüme beklentisi: pazarlama ekibinin reklam, bülten ve SMS planından çıkardığı trafik çarpanı.
- Güvenlik payı: tahmin hatasına karşı eklenen tampon.
Varsayımsal bir örnek: geçen kampanyanın zirvesinde 300 eş zamanlı oturum gördünüz, bu kez trafiğin 3 katını bekliyorsunuz ve yüzde 30 pay istiyorsunuz. Hedef yük 300 × 3 × 1,3 = 1.170 oturum olur.
Senaryo karışımını da gerçeğe yaklaştırın. Zirve trafik çoğunlukla ana sayfa, kategori ve arama sayfalarında toplanır. Sepet ve ödeme adımlarını ise ayrı senaryolar olarak ölçün; bu adımlar önbelleğe alınamaz ve veritabanına yazar. Ödeme sağlayıcısının canlı sistemine yük bindirmeyin; test ortamını ve sağlayıcının kullanım koşullarını kullanın.
02Yük testi sonuçlarında bakılacak beş ölçüt
Rapordaki tek bir ortalama sayı çoğu zaman yanıltır. Aşağıdaki beş ölçütü birlikte okuyun:
| Ölçüt | Ne gösterir? | Uyarı işareti |
|---|---|---|
| Yüzdelik gecikme (p95, p99) | İsteklerin yavaş kuyruğunu; kullanıcıların kötü yaşadığı kesimi | p95 ile ortalama arasındaki fark yük arttıkça açılıyor |
| Hata oranı | 5xx yanıtları, zaman aşımları, reddedilen bağlantılar | Hata oranı belirli bir yükte basamak yapıyor |
| Verim (throughput) | Saniyedeki başarılı istek ve sipariş sayısı | Yük artarken verim düzleşiyor ya da düşüyor |
| Kaynak kullanımı | CPU, bellek, disk G/Ç, bağlantı havuzu, veritabanı | Tek bir kaynak tavana dayanırken diğerleri boşta |
| Toparlanma | Yük düşünce gecikme ve hatanın normale dönmesi | Yük bitse de gecikme yüksek kalıyor |
Sunucu tarafındaki gecikme, kullanıcının tarayıcıda gördüğü hızın yalnızca bir parçasıdır. Kullanıcı deneyimi ölçütlerini ayrıca izlemek için web.dev üzerindeki Core Web Vitals açıklamasına bakabilirsiniz.
Geçti/kaldı eşiklerini testten önce yazılı olarak belirleyin. Örnek bir eşik: ödeme adımında p95 gecikme 2 saniyenin altında, hata oranı yüzde 1'in altında. Bu değerler yalnızca örnektir; kendi iş hedefinize ve müşteri beklentinize göre belirleyin. Eşik sonuçtan sonra belirlenirse rapor kendini doğrulamaya başlar.
03Bir test raporu adım adım nasıl okunur?
Kademeli artış testi (yükü basamak basamak yükselten test) yaptığınızı ve hedefin yukarıdaki 1.170 oturum olduğunu varsayalım. Rapor şunları gösteriyor:
- 400 oturum: p95 gecikme yaklaşık 0,8 sn, hata yok denecek kadar az.
- 800 oturum: p95 gecikme yaklaşık 1,3 sn, hata oranı yüzde 0,3.
- 1.200 oturum: p95 gecikme yaklaşık 5,1 sn, hata oranı yüzde 4, verim 800 oturum seviyesinde düzleşmiş.
- Aynı anda veritabanı CPU'su tavanda, uygulama sunucularının CPU'su ise yarının altında.
Okuma sırası şöyle olabilir:
- Kırılma noktasını bulun. Sistem 800 ile 1.200 arasında bozuluyor. Hedefiniz bu aralığın üst ucunda olduğu için mevcut yapı güvenli değil.
- Eşikle karşılaştırın. 1.200 oturumda hem gecikme hem hata oranı eşiği aşıyor. Sonuç “kaldı”.
- Darboğazın yerini belirleyin. Uygulama sunucuları boştayken veritabanı doyduğu için sınırı veritabanı belirliyor.
- Yanlış çözümü eleyin. Uygulama sunucusu sayısını artırmak bu tabloda sorunu çözmez, hatta veritabanına gelen bağlantı sayısını artırarak durumu kötüleştirebilir.
- Düzeltip yeniden ölçün. Bir darboğaz giderilince bir sonrakisi görünür hâle gelir. Aynı senaryoyu tekrar koşmadan kapasite kararı vermeyin.
04Bulguyu altyapı kararına çevirmek
Aşağıdaki tablo, sık görülen bulguları olası nedenleri ve karar adaylarıyla eşleştirir. Kesin teşhis için kendi sisteminizin izleme verisine ve sorgu analizine ihtiyaç vardır; tablo bir başlangıç noktasıdır.
| Bulgu | Olası neden | Karar adayı |
|---|---|---|
| Veritabanı CPU'su tavanda, uygulama sunucuları boşta | Yavaş sorgular, eksik indeks, yoğun okuma yükü | Sorgu ve indeks iyileştirmesi, okuma kopyası, sık okunan verinin önbelleğe alınması |
| Uygulama CPU'su tavanda, verim düzleşiyor | İşlem gücü yetersiz | Yatay ölçekleme, otomatik ölçekleme kuralları |
| Kategori ve ürün sayfalarında yüksek gecikme | Her istekte sayfanın baştan üretilmesi, ağır statik varlıklar | CDN, sayfa ve parça önbellekleme, görsel optimizasyonu |
| Ödeme adımında zaman aşımı | Dış sağlayıcı yavaşlığı, bağlantı havuzu sınırı | Zaman aşımı ve yeniden deneme sınırları, kuyruklu işleme, havuz ayarı |
| Yük bitse de toparlanma yok | Kuyruk birikimi, bellek sızıntısı | Kuyruk tüketici sayısının gözden geçirilmesi, bellek profili, sağlık kontrolleri |
Otomatik ölçeklemeye güvenmeden önce ölçeklemenin ne kadar hızlı tepki verdiğini testte ölçün. Yeni sunucu örneğinin hazır olması dakikalar sürebilir; kampanya saatinde trafik saniyeler içinde yükselirse otomatik ölçekleme geç kalabilir. Bu durumda kampanyadan hemen önce kapasiteyi bilinçli olarak artırmak (önceden ölçekleme) daha güvenli bir karardır. Ölçekleme için bir üst sınır koyun; hem maliyeti hem de veritabanı gibi ölçeklenmeyen bağımlılıkları korur.
Yük altındaki davranışı tasarım ilkeleri açısından gözden geçirmek için AWS Well-Architected Framework ve otomatik ölçekleme tarafında Microsoft'un Azure otomatik ölçekleme rehberi iyi birer başlangıç kaynağıdır. Hangi bulut sağlayıcıyı kullanırsanız kullanın, sağlayıcının kendi sınır ve kota belgelerini de kontrol edin.
05Sık sorulan sorular
Yük testini canlı ortamda mı yapmalıyız?
Mümkünse canlıya yakın bir hazırlık ortamında yapın; yapı, veri hacmi ve ayarlar canlıdan çok farklıysa sonuçlar yol göstermez. Canlıda test yapacaksanız düşük trafikli saati seçin, yazılı onay alın, test siparişlerini gerçek verilerden ayırın ve bulut ile üçüncü taraf sağlayıcıların test politikalarını önceden kontrol edin.
Testi ne zaman yapmalı, ne kadar önce tekrarlamalı?
İlk testi kampanyadan birkaç hafta önce yapın ki bulgulara göre düzeltme yapacak zaman kalsın. Her düzeltmeden sonra aynı senaryoyla kısa bir doğrulama koşun. Kod dondurma sonrasında da son bir test yapmak, son anda eklenen bir değişikliğin kapasiteyi bozmasını yakalamaya yardım eder.
Test başarılı geçti ama kampanyada yine yavaşlama yaşanırsa?
Test senaryosu gerçek trafikten farklı olabilir: önbelleğin soğuk ya da sıcak olması, tek bir ürüne yoğunlaşan talep, bot trafiği ve sayfaya eklenen üçüncü taraf betikleri sık görülen nedenlerdir. Bu yüzden testin yanında canlı izleme panosu ve uyarı eşikleri de hazırlayın; ilk belirtiyi kullanıcı şikâyetinden önce görmelisiniz.
06Sonuç: kampanya haftası için karar listesi
Yük testi sonucu bir not değil, karar girdisidir. Kampanyadan önce şu listeyi gözden geçirin:
- Hedef yük, geçmiş veri ve trafik çarpanıyla yazılı olarak belirlendi mi?
- Geçti/kaldı eşikleri testten önce tanımlandı mı?
- Rapor ortalamaya değil p95/p99 gecikmeye, hata oranına ve verim düzleşmesine göre okundu mu?
- Darboğaz bir bileşene (veritabanı, uygulama, önbellek, dış sağlayıcı) bağlandı mı?
- Düzeltmeden sonra aynı senaryo yeniden koşuldu mu?
- Kampanya günü için izleme panosu, uyarı eşikleri, ölçekleme üst sınırı ve geri dönüş planı hazır mı?
Kampanya öncesi bulut mimarisi, ölçekleme ve izleme kararlarında dış destek almak isterseniz OPEIS'in Bulut Çözümleri sayfasından hizmet kapsamını inceleyebilirsiniz.
DESTEK
Bu konuda destek alın
Yazıdaki yaklaşımı kendi altyapınıza uyarlamak için ekibimize yazın. 1 iş günü içinde dönüş yapıyoruz.
İletişime geçin