Çoğu işletme sahibi kapasite sorununu bir sunucu sorunu sanır: site yavaşladıysa RAM artırılır, CPU çoğaltılır, mesele kapanır. Sonra kampanya gecesi gelir, sunucu kaynakları yarı boşken site yine tıkanır. Çünkü çöken sunucu değildir; çöken, aynı anda işlenmeye çalışan iş sayısıdır. Kapasite planlama donanım satın almak değil, işlerin nerede beklediğini bilmektir.
E-pin ve dijital ürün satışında bu daha da keskindir, çünkü yükün şekli düzgün değildir. Normal bir günde saatte yüz sipariş alırsın, indirim duyurusundan sonraki ilk on dakikada üç yüz sipariş gelir. Ortalamaya göre kurulmuş bir e-pin satış scripti ortalama günü rahat taşır ama o on dakikada teslimat kuyruğu, ödeme geri dönüşleri ve stok düşümü aynı satırlarda birbirini bekler. Bu yazıda o on dakikayı hesaplamayı ve ona göre ölçeklemeyi anlatıyorum.
Sunucu çökmez, kuyruk çöker: darboğaz nerede?
Bir satış isteği geldiğinde sistem sırayla şunları yapar: ürünü okur, stoğu kilitler, ödemeyi doğrular, siparişi yazar, kodu havuzdan çeker, teslimatı loglar, bildirimi kuyruğa atar. Bu adımların çoğu hızlıdır; ikisi değildir. Stok kilidi ve teslimat kuyruğu sıralı çalışmak zorundadır, çünkü aynı kodun iki kişiye gitmesini engellemek başka türlü mümkün olmaz. Yük arttığında işte bu iki sıralı nokta tıkanır.
Pratik sonuç şudur: CPU kullanımı yüzde otuzda dururken site cevap vermez hâle gelir. Çünkü elli istek aynı satır kilidini bekler. Bu durumda sunucuyu büyütmek hiçbir şeyi düzeltmez; kilit kapsamını daraltmak, kuyruğu ayırmak ve teslimatı senkron akıştan çıkarmak düzeltir. İyi bir dijital ürün satış yazılımı ödeme onayını anında işler ama kod teslimini arka plandaki bir işçiye devreder; müşteri "hazırlanıyor" görür ve iki saniye sonra kodu alır. Böylece zirvede bekleyen istek sayısı doğrusal artmaz.
Zirve trafiğini nasıl hesaplarsın?
Hesap için üç sayıya ihtiyacın var: günlük sipariş sayısı, zirve çarpanı ve tek siparişin ürettiği iş adedi. Günde altı yüz sipariş alıyorsan ortalaman saatte yirmi beştir. Zirve çarpanını duyuru geçmişinden çıkarırsın; e-pin işinde dört makul bir başlangıçtır. Yani zirvede saatte yüz sipariş, dakikada bir buçuk sipariş beklersin. Bu sayı ürkütücü değildir ama tek siparişin altı ayrı işi tetiklediğini hatırla: dakikada dokuz iş, on dakikalık pencerede doksan iş.
Sonra bu işlerin en yavaşını ölç. Tedarikçiden kod çekme çağrısı iki saniye sürüyorsa, tek işçi dakikada otuz iş yapabilir; üç işçi doksan iş. Yani üç arka plan işçisi bu zirveyi taşır. Bu hesabı yaptığın an kapasite planlama tahminden çıkar, aritmetik olur. Ölçmediğin adımı ölçekleyemezsin kuralı burada devreye girer: her adımın süresini loglamıyorsan hangi işçiyi çoğaltacağını bilemezsin.
| Yük profili | Günlük sipariş | Zirve/dakika | Arka plan işçisi | Veritabanı önerisi |
|---|---|---|---|---|
| Başlangıç | 0-100 | 1 | 1 | Paylaşımlı, günlük yedek |
| Büyüyen | 100-600 | 2 | 2-3 | Ayrı kaynak, saatlik yedek |
| Yoğun | 600-2.000 | 6 | 4-6 | Ayrı sunucu, okuma kopyası |
| Kampanya odaklı | Dalgalı | 15 | Esnek 3-10 | Kuyruk ayrı, önbellek zorunlu |
| Bayi ağırlıklı | 200-800 | 4 | 3-4 | API hız sınırı ve kota |
Zirve anında kaynak tüketiminin dağılımı
- Veritabanı sorgu ve kilit 50%
- Dış servis çağrıları 22%
- Sayfa oluşturma 18%
- Disk ve log yazımı 10%
Veritabanı mı uygulama mı disk mi: hangisini büyütmelisin?
Tabloya göre yükün yarısı veritabanındadır, o yüzden ilk kazanç orada. Ama büyütmek yerine önce düzeltmek gerekir. Sipariş listesi ekranında tarih ve durum sütunlarında indeks yoksa her yönetici sayfası tüm tabloyu tarar; zirvede on yönetici sekmesi tek başına siteyi yavaşlatabilir. Aynı şekilde raporlar canlı tablodan çalışıyorsa satış anında rapor açmak kuyruk oluşturur.
Uygulama katmanında en büyük kazanç önbelleklemedir. Ürün listesi ve kategori sayfaları dakikalarca değişmez; bunları hazır HTML olarak sunmak zirvedeki sayfa oluşturma yükünün büyük kısmını siler. Diskte ise tek dikkat edilecek şey log yazımıdır: her isteği ayrıntılı loglayan bir epin yazılım kurulumu, yoğun anda kendi loguyla boğulur. Çözüm logu tamamen kapatmak değil, ayrıntı seviyesini yükseltip kritik olayları ayrı dosyaya yazmaktır.
Stok kapasitesi: e-pin havuzu tükenirse ne olur?
Kapasite planlamanın çoğu kez atlanan ayağı budur. Sunucun yetse de havuzunda kod yoksa satış duruyor. Daha kötüsü, havuz boşaldığında yazılım bunu bir hata olarak değil boş sonuç olarak döndürürse müşteri ödeme yapar, kod gelmez ve elinde iade yığını olur. Bu yüzden stok eşiği sunucu eşiği kadar önemlidir.
Kurgulaman gereken üç kural var. Birincisi, her ürün için eşik altı uyarısı: havuz tahmini bir günlük satışın altına düşerse bildirim gitsin. İkincisi, sıfır stokta ürünün otomatik olarak satıştan çekilmesi. Üçüncüsü, tedarikçi çağrısının başarısız olduğu durumda siparişin "beklemede" statüsünde açılıp ödemenin bloke edilmesi. Bu üçü kuruluysa stok tükenmesi bir kriz değil, planlı bir duraklama olur. Fiyat ve paket seçimini yaparken bu otomasyonların hangi seviyede geldiğine bakmak işine yarar; fiyat bölümünde hangi kapasite araçlarının standart olduğunu görebilirsin.
Ölçek basamaklarını önceden yazmak neden işini kolaylaştırır?
Kapasiteyi krizde büyütmek en pahalı yöntemdir, çünkü aceleyle alınan kararlar hep fazla ödemeye yol açar. Onun yerine basamakları önceden yaz: hangi ölçümde ne yapacaksın. Böylece karar anında düşünmek yerine uygulama yaparsın. Aşağıdaki tablo doğrudan kullanabileceğin bir basamak planıdır.
| Tetikleyici ölçüm | Eşik | Yapılacak hamle | Beklenen kazanç |
|---|---|---|---|
| Sipariş yanıt süresi | 400 ms üstü | Sorgu indeksleri gözden geçir | 2-4 kat hız |
| Kuyrukta bekleyen iş | 200 üstü | Arka plan işçisi ekle | Doğrusal rahatlama |
| Veritabanı bağlantısı | %80 doluluk | Havuz ayarı ve okuma kopyası | Kilit azalması |
| Ürün sayfası yükü | Toplam isteğin yarısı | Sayfa önbelleği aç | %40 yük düşüşü |
| Stok havuzu | 1 günlük satış altı | Otomatik uyarı ve tedarik | Satış kesintisi yok |
| Disk doluluk | %75 | Log rotasyonu ve arşiv | Ani kesinti riski azalır |
Zirve hacminin yarısını on dakika boyunca yapay olarak üret ve kuyruk uzunluğunu izle. Kuyruk sürekli büyüyorsa kapasite yetmiyor; düzleşiyorsa hazırsın.
Zirveyi taşıyan bir altyapıyla çalış
Pinova, e-pin ve dijital ürün satan işletmeler için geliştirilmiş lisanslı satış yönetim yazılımıdır. Ayrılmış teslimat kuyruğu, stok eşiği uyarıları ve önbellekli vitrin yapısıyla kampanya gecelerini planlanabilir kılar.
Kapasite için önce sunucu mu büyütmeliyim?
Hayır. Önce ölç. Yükün yarısı veritabanı kilidi ve sorgudan geliyorsa daha büyük sunucu sorunu çözmez, sadece maliyeti artırır.
Zirve çarpanını nasıl bulurum?
Son üç duyurunun ilk on dakikasındaki sipariş sayısını normal saatlik ortalamana böl. Çıkan sayı senin gerçek çarpanındır.
Kaç arka plan işçisi gerekir?
Zirvedeki dakikalık iş sayısını, bir işçinin dakikada tamamladığı iş sayısına böl ve yukarı yuvarla. Bir de yedek işçi ekle.
Stok tükenmesini kapasite planına neden dahil ediyoruz?
Çünkü sonuç aynıdır: satış durur. Sunucu yetse de havuz boşsa ciro kesilir, üstüne iade yükü gelir.
Kapasite planlama, kampanya gecesini heyecan yerine rutine çeviren şeydir. Basamakları yaz, ölçümleri kur, işçi sayısını aritmetikle belirle. Kuyruk, stok eşiği ve önbellek ayarlarının panelde nasıl göründüğünü kendi gözünle görmek istersen canlı demo üzerinden bu ekranları açıp kendi zirve hesabını üzerine oturtabilirsin.

