Bir senaryo üzerinden: yavaşlık nasıl ölçüldü, ne yapıldı, ne değişti?
Aşağıdaki senaryo, farklı şirketlerde tekrar eden bir örüntünün birleştirilmiş anlatımıdır. Belirli bir firmayı temsil etmez.
Durum
Orta ölçekli bir toptan satış firması. Bayilerine ve kurumsal müşterilerine çevrim içi sipariş imkânı sunan bir sitesi var. Ayrıca tanıtım sayfaları ve ürün kataloğu bulunuyor.
Şikâyet: Satış ekibi, müşterilerden "siteniz çok yavaş" geri bildirimi aldığını bildiriyor. Sipariş tamamlama oranı düşük.
İlk tepki (ve neden yanlıştı)
İlk öneri hosting paketini yükseltmek oldu. Bu karar verilmeden önce ölçüm yapılması istendi — doğru karar buydu.
Ölçüm aşaması
Farklı sayfalar ayrı ayrı ölçüldü:
| Sayfa | İlk bayt | Toplam süre | Boyut | İstek |
|---|---|---|---|---|
| Ana sayfa | Kabul edilebilir | Yüksek | Çok büyük | Çok fazla |
| Ürün listesi | Çok yüksek | Çok yüksek | Büyük | Fazla |
| Ürün detay | Yüksek | Yüksek | Orta | Fazla |
| Sipariş formu | Çok yüksek | Çok yüksek | Orta | Fazla |
Bulgu 1: Ana sayfada sorun sunucu değil, sayfa ağırlığıydı.
Bulgu 2: Liste ve sipariş sayfalarında sunucu tarafı darboğaz vardı.
Yani tek bir sebep yoktu; hosting yükseltmesi sorunun yalnız bir kısmını çözecekti.
Kök neden analizi
Ana sayfa
- Tam ekran döner görsel alanı, her biri çok büyük boyutlu görsellerle
- Görseller sıkıştırılmadan, orijinal boyutlarında yüklenmiş
- Sekiz farklı yazı tipi ağırlığı
- Beş ayrı üçüncü taraf kod
Ürün listesi
- Önbellek kullanılmıyor
- Her sayfada yüzlerce ürün gösteriliyor
- Her ürün için ayrı veritabanı sorgusu yapılıyor
- Filtreleme her seferinde tüm katalogu tarıyor
Sipariş formu
- Kullanıcıya özel olduğu için önbelleklenemiyor
- Her açılışta ağır bir fiyat hesaplaması yapılıyor
- Bu hesaplama önbelleklenebilir olduğu hâlde her seferinde tekrarlanıyor
Uygulanan iyileştirmeler
Aşama 1 — Görsel ve içerik (ilk hafta)
- Tüm görseller sıkıştırıldı ve doğru boyutta yeniden yüklendi
- Döner görsel alanı sadeleştirildi
- Yazı tipi ağırlıkları ikiye indirildi
- Kullanılmayan üçüncü taraf kodlar kaldırıldı
- Ekran dışındaki görseller geç yüklenecek şekilde ayarlandı
Aşama 2 — Önbellek (ikinci hafta)
- Sayfa önbelleği etkinleştirildi
- Ürün listesi sayfaları önbelleğe alındı
- Sipariş ve hesap sayfaları önbellek dışında tutuldu
- Fiyat hesaplama sonuçları için ayrı bir önbellek kuruldu
Aşama 3 — Veritabanı ve yapı (üçüncü hafta)
- Ürün listesinde sayfalama uygulandı
- Her ürün için ayrı sorgu yapan yapı düzeltildi
- Filtreleme sorguları iyileştirildi
- Eski kayıtlar temizlendi
Aşama 4 — Dağıtım (dördüncü hafta)
- CDN devreye alındı
- Sıkıştırma etkinleştirildi
- Tarayıcı önbellek süreleri ayarlandı
Sonuç
Her aşamadan sonra ölçüm tekrarlandı ve kaydedildi. Dört haftalık çalışmanın sonunda:
- İlk bayt süreleri belirgin biçimde düştü
- Sayfa boyutları büyük ölçüde küçüldü
- İstek sayıları azaldı
- Kaynak kullanımı düştü
- Sipariş tamamlama oranı yükseldi
- Satış ekibine gelen şikâyetler kesildi
Ve en önemlisi: Hosting paketi hiç değiştirilmedi. Planlanan yükseltme gereksiz hâle geldi ve kalıcı bir maliyet artışından kaçınıldı.
Çıkarılacak dersler
- Ölçmeden karar vermeyin. Ölçüm yapılmasaydı pahalı bir yükseltme yapılacak ve sorunun yarısı devam edecekti.
- Sayfa sayfa ölçün. Ana sayfa ile liste sayfasının sorunu farklıydı.
- İki tür sorun vardır. Sunucu tarafı ve site tarafı; ikisi ayrı ayrı ele alınmalıdır.
- Önbellek en büyük kazancı sağlar ama kullanıcıya özel sayfalarda dikkat gerektirir.
- Aşamalı ilerleyin ve her aşamada ölçün. Hangi değişikliğin ne kazandırdığı böyle görülür.
- Görsel disiplini kalıcı olmalıdır. İçerik ekibine yükleme kuralları verilmezse sorun geri gelir.
Kalıcılık için kurulan düzen
- ☐ İçerik ekibine görsel yükleme kılavuzu verildi
- ☐ Aylık hız ölçümü rutini kuruldu
- ☐ Yeni eklenti kurulumunda ölçüm zorunlu hâle getirildi
- ☐ Üçüncü taraf kod ekleme onaya bağlandı
- ☐ Ölçüm sonuçları düzenli olarak yönetime raporlanıyor
Son beş madde olmadan, performans iyileştirmeleri birkaç ay içinde geri döner.
Yorumlar (0)
Henüz yorum yok — ilk yorumu siz yazın.
Yorum yaz