Bir e-ticaret işletmecisi veya teknik yöneticisi için kabus tanımı çok nettir: Günlerce hazırlığı yapılan Black Friday veya dev bir sosyal medya kampanyası başlar, siteye binlerce anlık ziyaretçi akar ve tam o anda ekranda o soğuk mesaj belirir: 504 Gateway Timeout veya 500 Internal Server Error.
Sepetler yarıda kalır, reklam bütçesi boşa gider, en önemlisi de markanın güvenilirliği bir anda yerle bir olur.
Peki, yüz binlerce ürünün yer aldığı ve aynı anda on binlerce kişinin sepete ürün eklemeye çalıştığı e-ticaret siteleri nasıl oluyor da milisaniyeler içinde yanıt verip ayakta kalabiliyor? İşin sırı sadece daha pahalı bir sunucu kiralamak değil. Asıl mesele; doğru kurgulanmış, ölçeklenebilir ve darboğaz yaratmayan bir yazılım ve sunucu mimarisi kurmaktır.
Bu yazıda, yüksek trafikte çökmeyen bir e-ticaret altyapısının arkasındaki teknik mimariyi ve mühendislik yaklaşımlarını adım adım inceliyoruz.
1. Monolitik Yapılardan Uzaklaşmak: Yükü Böl ve Yönet
Klasik e-ticaret yazılımlarının çoğu, tüm sistemin tek bir veritabanı ve tek bir uygulama sunucusu üzerinde çalıştığı Monolitik bir yapıya sahiptir. Ziyaretçi sayısı normal seviyedeyken bu yapı harika çalışır. Ancak aniden gelen yüksek trafikte:
- Görselleri yükleyen sunucu,
- Sepet hesaplamalarını yapan işlemci,
- Ürün stoklarını sorgulayan veritabanı
aynı kaynakları tükettiği için sistem kilitlenir.
Çözüm: Mikroservisler ve Modüler Yapı
Yüksek trafikli e-ticaret altyapılarında sistemi modüllere ayırmak şarttır. Ödeme sistemi, ürün kataloğu, üyelik yönetimi ve arama motoru gibi kritik bileşenlerin birbirinden bağımsız çalışması gerekir. Böylece arama yapan kullanıcıların oluşturduğu yoğunluk, ödeme adımındaki sunucuyu yavaşlatmaz.
2. Veritabanını Rahatlatmak: Okuma ve Yazma Operasyonlarını Ayırın
E-ticaret sitelerindeki trafiğin %90’ı okuma işlemidir. Yalnızca %10’luk kısım yazma işlemidir.
Tüm bu trafiği tek bir MySQL veya PostgreSQL sunucusuna yönlendirmek, yüksek trafikte veritabanı kilitlenmelerine yol açar.
Uygulanması Gereken Strateji:
Master-Replica Mimarisi: Ana veritabanı sadece yeni sipariş alma veya stok güncelleme gibi yazma işlemlerini üstlenir. Ürün listeleme gibi okuma işlemleri ise senkronize çalışan yedek veritabanlarına dağıtılır.
Önbellekleme: Fiyatlar, ürün detayları ve kategori ağacı gibi sık değişmeyen veriler doğrudan veritabanından çekilmemelidir. Bellek içi çalışan Redis gibi sistemler sayesinde veritabanı sorgu sayısı %80-90 oranında düşürülür.
3. Statik İçerik Yönetimi: CDN ve Akıllı Görsel Optimizasyonu
Bir e-ticaret sayfasında aktarılan verinin %70'inden fazlasını görseller, CSS ve JavaScript dosyaları oluşturur. Sunucunuzun ana işlemcisini ürün fotoğraflarını istemciye göndermekle meşgul etmek büyük bir kayıptır.
CDN Kullanımı: Cloudflare, AWS CloudFront veya Fastly gibi sistemler, sitenizin statik dosyalarını dünyanın ve ülkenin dört bir yanındaki kenar sunucularda saklar. Ziyaretçi görseli sizin ana sunucunuzdan değil, kendisine en yakın CDN lokasyonundan indirir.
Geç Yükleme ve WebP/AVIF Dönüşümü: Sayfa açılışında sadece ekranda görünen görseller yüklenmeli, alt kısımdaki görseller kullanıcı aşağı kaydırdıkça çağrılmalıdır.
4. Trafiği Dengelemek: Load Balancer ve Otomatik Ölçekleme
Trafik dalgası gelmeden önce hazırlık yapmak imkansız gibidir. Saat 20:00'de başlayacak bir kampanya için sunucu kapasitesini 50 katına çıkarıp, gece boyunca aynı maliyete katlanmak mantıklı değildir.
Load Balancer: Gelen ziyaretçi trafiğini Nginx, HAProxy veya bulut servislerinin yük dengeleyicileri ile arkadaki onlarca uygulama sunucusuna eşit olarak dağıtır. Sununculardan biri çökerse, trafik anında sağlıklı çalışan diğer sunucuya yönlendirilir.
Auto-Scaling: AWS, Google Cloud veya Azure gibi bulut altyapılarında işlemci kullanımı %70’in üzerine çıktığında sistem otomatik olarak yeni sunucular başlatır. Trafik çekildiğinde ise bu sunucuları kapatarak maliyeti düşürür.
5. Sıra Yönetimi ve Asenkron İşlemler
Müşteri siparişi onayla butonuna bastığında arka planda onlarca işlem gerçekleşir:
- Stok güncellenir.
- Fatura/Sipariş kaydı oluşturulur.
- Banka POS'una istek atılır.
- Müşteriye SMS ve E-posta gönderilir.
- ERP/Kargo entegrasyonuna veri aktarılır.
Tüm bu adımların kullanıcının ekranında eşzamanlı olarak beklenmesi, sunucuyu kilitler.
Blog Kategorileri
