Performans Sorunu, Müşteri Kaybına Yol Açar
2024 araştırması gösteriyor ki, web sayfası 3 saniyeden fazla yüklenirse, kullanıcıların %40'ı sayfayı terk eder. E-ticaret sitesi için bu, her saniyede iki müşteri kaybı anlamına gelebilir.
Daha dramatik: Birden fazla kullanıcı aynı anda erişirse (hediye kuponu veya flash satış), sunucu çöker mi? 2024'te bir hava yolu web sitesi, biletlerin açılmamması yüzünden saatler boyunca down kalırken, $2 milyon gelir kaybetmiştir.
Performans sorunu, kalite sorunu kadar önemliyse de, çoğu zaman test edilmez. Kod yeşil renge dönüyor, "bitmiş" deniyor, üretim ortamında bomba patlatıyor.
Performans Test Türleri
1. Baseline Test (Temel Performans)
Sistemi normal yük altında test et. Ortalama yanıt süresi ne? Kaç işlem per saniye işlenebilir?
Örnek: Normal zamanlar, e-ticaret sitesine saniyede 100 ziyaretçi geliyor. Ortalama sayfa yükleme süresi 1.5 saniye. Bu temel.
2. Load Test (Yük Testi)
Yükü gradual olarak artır. Sistem kaça kadar yanıt verir?
Örnek: Saniyede 100 -> 200 -> 500 -> 1000 ziyaretçi. Yanıt süresi nasıl değişir? Sunucu ne zaman tepki vermeyi durdurmaya başlar?
3. Stress Test (Stres Testi)
Sistemi sınırının çok ötesine itmeye devam et. Çöküş noktası nedir? Ne kadar yük emir alıyor?
Örnek: Saniyede 10.000 ziyaretçi (normal trafiğin 100 katı). Sunucu çöker mi, yoksa graceful degradation yapıyor mu (bazı istekleri reddediyor ancak sistem ayakta kalıyor)?
4. Spike Test (Ani Yük Artışı)
Yük ani olararak artır. Flash satış örneği: Trafikten ani 10 kata çıkıyor. Sistem bunu göz atlayabilir mi, yoksa müşteriler timeout görüyor mu?
5. Endurance Test (Dayanıklılık Testi)
Saatlerce yüksek yük. Sistem hafıza sızdırıyor mu? Veritabanı bağlantıları tükenemiş mi?
Örnek: 8 saat boyunca saniyede 500 ziyaretçi. Sonra yanıt süresi yükselebilir mi? CPU, hafıza ne durumda?
6. Scalability Test (Ölçeklenebilirlik Testi)
Sunucu sayısını artırırsan, performans doğru oranda iyileşir mi? Bir sunucu saniyede 1000 istek işleyebiliyorsa, iki sunucu 2000 işleyebilmeli.
Performans Test Araçları
JMeter
Açık kaynak, Java tabanlı, en yaygın performans test aracı. GUI ve komut satırı desteği.
Avantajlar:
- Tamamen ücretsiz
- Tüm protokoller desteklenir (HTTP, FTP, JDBC, SOAP, JMS)
- Geniş plugin ekosistemi
- Dağıtılmış test desteği (birden fazla makine)
- Test raporlaması güçlü
Dezavantajlar:
- Ağır; çok sayıda sanal kullanıcı için RAM tüketimi yüksek
- GUI, başlangıçta kafa karıştırıcı
- Kurulum ve konfigürasyon biraz zaman alıyor
Uygun Durumlar: Geniş ölçekte şirketler, karmaşık test senaryoları, açık kaynak çözümleri tercih eden ekipler, tüm protokollerle uyumluluğa ihtiyaç duyan projeler.
k6
Modern performans test aracı. JavaScript'te yazılan testler, bulutta koşabilir.
Avantajlar:
- Kolay ve hızlı kurulum
- Kod temiz ve anlaşılır (JavaScript)
- Cloud-based (dünya genelinde load generation)
- Real-time metrikleri harika bir şekilde görselleştiriyor
- Open source ve managed servis seçeneği var
Dezavantajlar:
- JavaScript yazması bilenler gerekli
- Daha yeni, documentation daha az
- Çok protokol desteği sınırlı
Uygun Durumlar: Web uygulamaları, hızlı test yazımı ve yürütme gereksinimleri, bulut tabanlı dağıtık yük üretimi ihtiyacı.
Gatling
Scala tabanlı, yazılımcı-dostu performans test aracı. Kod tarafından yazılmış testler.
Avantajlar:
- Çok hızlı ve ölçeklenebilir
- Test kodları versiyon kontrolüne girebilir (Git'te tutulur)
- Harika HTML raporları
- Jenkins gibi CI/CD araçlarıyla entegrasyon
- Real-time metrik görselleştirmesi
Dezavantajler:
- Scala yazması bilenler gerekli (öğrenme eğrisi)
- Open source ücretsiz, ama enterprise desteği pahalı
- Java yığını gerektirir
Uygun Durumlar: Java ve Scala tarafında uzman ekipler, CI/CD pipeline'ında otomatikleştirilmiş performans testleri, HTML raporlama gereksinimleri.
Locust
Python tabanlı, yazılımcı-dostu performans test aracı.
Avantajlar:
- Python yazması kolay
- Dağıtılmış test desteği
- Web UI ile real-time izleme
- Açık kaynak
Dezavantajlar:
- Çok büyük yükler (10k+ sanal kullanıcı) için sınırlamalar
- Raporlama, diğer araçlar kadar güçlü değil
Uygun Durumlar: Python programlama dilinde uzman ekipler, orta ölçekli yük ve performans test gereksinimleri, web arayüzüyle real-time izleme ihtiyacı.
Hızlı Karşılaştırma Tablosu
| Özellik | JMeter | k6 | Gatling | Locust |
|---|---|---|---|---|
| Kurulum | Orta | Kolay | Kolay | Kolay |
| Dil | GUI/DSL | JavaScript | Scala | Python |
| Performans | İyi | Mükemmel | Mükemmel | İyi |
| Ölçeklenebilirlik | Sınırlı | Bulut | Mükemmel | Sınırlı |
| Raporlama | Güçlü | İyi | Mükemmel | Temel |
| CI/CD | Var | Var | Mükemmel | Var |
| Maliyeti | Ücretsiz | Ücretsiz + Paid | Ücretsiz + Paid | Ücretsiz |
Performans Test Planlaması
1. Hedefleri Tanımla
- Ortalama yanıt süresi hedefi: < 2 saniye
- percentile yanıt süresi: < 5 saniye
- Throughput hedefi: > 1000 req/sec
- Error oranı: < 0.1%
Bu hedefler işletme gereksinimleriyle çelişmemeli.
2. Realistik Yük Modelle
Sanal kullanıcı sayısını nereden bileceğiz? Tarihsel veri kullan.
Örnek: Sitenize günde 10.000 ziyaretçi geliyor, ortalama 30 dakika kalıyorlar. Aynı anda (concurrent) ziyaretçi sayısı:
(10.000 * 30 dakika) / (1440 dakika) = 208 concurrent user
Yük testinde, başlangıcı 100 concurrent user'dan başlat, 500'e çıkar, performansı gözlemle.
3. Test Ortamı Hazırla
Test ortamı, production'a olabildiğince yakın olmalı. Veritabanı türü, sunucu hardware, network hızı aynı olmalı.
Production'dan daha zayıfsa, sonuçlar yanıltıcı olacak.
4. Başla, Sonuçları Analiz Et
Testleri koş, metrikleri izle:
- Response time dağılımı (minimum, maximum, average, percentiles)
- Throughput (req/sec)
- Error oranı
- CPU ve RAM kullanımı
- Database connection pool durumu
Performans Sorunu Teşhisi
Yanıt süresi yavaşsa, neden?
- Network latency: Coğrafyanın ötesinden istek geliyor mu?
- Veritabanı sorgusu: Sorgu optimize edilmiş mi, yoksa yüzlerce satır tarama yapıyor mu?
- Sunucu işlemeci: CPU %100 kullanımda mı?
- Hafıza: Sunucunun RAM'ı bitmiş mi, disk swap'e gidiyor mu?
- I/O gecikmesi: Disk yazımı (log) çok mu yavaş?
- Third-party servisleri: Ödeme ağ geçidi, SMS servisi yavaş mı?
Her problemi teşhis etmek için profiling araçlarına ihtiyaç vardır. JVM için JProfiler, Python için cProfile, Node.js için clinic.js.
Performans Bütçesi Konsepti
Yazılım takımlarından performans bütçesi tanımlaması istenir. Bu, "yanıt süresi kesinlikle 2 saniyeyi geçmemeli" demek.
Her feature, bir performans maliyeti vardır. Login özelliği 0.5 saniye, search 1 saniye, report oluşturma 1.5 saniye. Toplam 3 saniye. Bütçe 3 saniyeyse, yeni bir özellik eklenemez.
Bottleneck Olarak Veritabanı
Çoğu web uygulamasında en büyük performans problemi, veritabanıdır.
Optimizasyon:
- Indeksler: Sık sorgulan alanlar indekslenmeli
- Query optimization: Sorgu yavaşsa, EXPLAIN PLAN kullan, optimize et
- Caching: Sık okunması veri Redis/Memcached'e koy
- Connection pooling: Veritabanı bağlantısı açmak pahalı, havuz kullan
- Read replicas: Yazma ve okuma operasyonlarını farklı sunuculara ayır
Performans testinin yazılım test sürecinin bütünü içindeki rolü hakkında daha fazla bilgi için, Yazılım Test ve Kalite Güvence rehberi adresini ziyaret edebilirsiniz.
Maliyeti Düşük Performans Test
Performans test pahalı değildir. Açık kaynak araçlar (JMeter, k6, Locust) var. Soruna giren şey, test ortamı hazırlamadır.
Daha ucuz yol:
- Production-like staging ortamı kur
- Açık kaynak aracı seç
- Haftalık küçük performans testleri koş (full regression değil, sadece kritik yollar)
- Trend takip et; yanıt süresi artıyor mu?
Performans Test Senaryo Örnekleri
Senaryo 1: E-ticaret Flash Sale
Durumu: Black Friday, normal trafiğin 50 katı, 30 saniye içinde 100.000 kullanıcı.
Test Planı:
- Baseline: Saniyede 100 kullanıcı (normal)
- Ramp-up: 30 saniye içinde 5.000 kullanıcıya çık
- Peak: 1 saat 5.000 kullanıcıyı sustain et
- Ramp-down: 30 saniye içinde kapat
Hedefler:
- Ortalama yanıt süresi: < 3 saniye
- 95% yanıt süresi: < 10 saniye
- Error oranı: < 2% (yüksek trafik nedeniyle kabul edilir)
- Database connection pool: 100-200 aktif bağlantı
Araç: k6 (cloud-based, 5.000 concurrent user kolay) Maliyet: 5.000-10.000 USD
Senaryo 2: Banking Mobile App Peak Usage
Durumu: Pazartesi sabah 9:00, 500.000 active user, 10 milyon tx/saat.
Test Planı:
- Baseline: 1 million tx/saat (normal)
- Ramp-up: 1 saat içinde 10 million tx'e çık
- Peak: 2 saat sustain
- Ramp-down: 30 dakika
Hedefler:
- 99th percentile latency: < 500ms
- Error rate: < 0.01% (finans sektörü çok katı)
- Database: < 2 saniye query time
Araç: JMeter (dağıtılmış, JDBC bağlantılar) Maliyet: 8.000-15.000 USD
Performans Test Sonuçlarının İş Değeri
Performans test, sadece rakamlar değil, müşteri memnuniyeti ölçer:
| Yanıt Süresi | User Perception | Bounce Rate | Conversion Rate |
|---|---|---|---|
| 0-1 sn | Hızlı, memnun | %0 | 100% |
| 1-3 sn | Uygun | %5 | 95% |
| 3-5 sn | Yavaş, ama kabul | %20 | 70% |
| 5-10 sn | Çok yavaş | %50 | 30% |
| 10+ sn | Çok sabırsız | %80 | %5 |
E-ticaret örneği: Sayfası 5 saniyeye düşüren şirket, conversion rate %5 artış görmüştür = aylık 100.000 USD ek gelir.
Bottleneck Tanımlama Araçları
Uygulama Bottleneck'i (APM)
New Relic, DataDog, Dynatrace:
- Fonksiyon-level profiling
- Database query performansı
- Memory leak tespiti
- Distributed tracing
Database Bottleneck'i
SQL Server, PostgreSQL, MySQL Araçları:
- Yavaş sorgu günlüğü
- EXPLAIN PLAN
- İndeks kullanım analizi
- Kilit izleme
Infrastructure Bottleneck'i
CloudWatch, Prometheus, Grafana:
- İşlemci, Bellek, Disk G/Ç
- Ağ gecikmesi
- Önbellek isabet oranı
- Kuyruk uzunluğu
Performans Test Otomasyon
Performans test'leri, her commit'te çalıştırılabilir mi?
Kısa yanıt: Hayır, ama düzenli olarak (günde, haftada) yapılmalı.
Full Regression: Saatler alır (pahalı) Quick Smoke Test: 5-10 dakika, critical path'lar (önerilen)
GitHub Actions'ta otomasyon, periyodik zamanlamalar kullanılır. Örneğin, her Pazar saat 2:00'de, k6 performans test script'i çalıştırılabilir. Bu şekilde, haftalık performans trendleri takip edilebilir. Pipeline'daki stage'lerde belirli zamanlar ayarlanır.
Aylık maliyeti: Sunucu saati 100 dolar civarında = 1.200 dolar/yıl
Performans Test Raporlaması
Test sonrası stakeholder'lara ne rapor edilmeli:
Teknik Rapor (Ekip için)
- Test profile: Concurrent user, ramp-up, duration
- Result: Response time distribution, throughput, errors
- Bottleneck: CPU, database, network nerede
- Recommendation: Ne optimize etmeliyiz
Executive Rapor (C-level için)
- System kaç concurrent user'ı handle edebilir?
- Black Friday'de sistem ayakta kalır mı?
- Ek sunucu, ne kadar tasarruf sağlar?
- Release'e hazırız mı?
Raporlama tool'ları: JMeter GUI Reports, k6 Cloud, Gatling Enterprise, custom Grafana dashboard'lar.
Yaygın Performans Test Hatalar
Test ortamı, production'dan çok farklı: Veritabanı boyutu 1/10, sunucu hardware düşük
- Çözüm: Test ortamı production'a benzer yapı
Caching atlama: Production'da Redis, test'te yoksa sonuçlar yanıltıcı
- Çözüm: Test ortamında same caching layer
Realistic veri kullanmama: Test veri 1000 user, production'da milyonlarca
- Çözüm: Production-scale test data
Single point of failure test etmeme: Database master down, sistem çöker
- Çözüm: Failover scenario'lar test et
Test sonuçlarını etkin şekilde kullanmama: Test tamamlandı, rapor yazıldı, ama optimize etmedi
- Çözüm: Test sonrası action items, tracking
Ölçeklenebilirlik Planlaması
Sistem şimdi 1.000 concurrent user'ı handle ediyor. 5 yıl sonra 10.000 ise?
Horizontal Scaling: Sunucu sayısını artır
- Avantaj: Sınırsız (teorik), load balancer ile manage
- Dezavantaj: Database'i de scale etmeliyiz (harder), stateless olmalı
Vertical Scaling: Sunucu hardware güçlendir
- Avantaj: Basit, code değişmesin
- Dezavantaj: Sınırı var (max hardware), daha pahalı
Hibrid: API Ağ Geçidi, Önbellekleme, CDN, Microservisler
- Avantaj: Esnek, uygun maliyetli
- Dezavantaj: Kompleks
Yazılım test stratejisinin genel bağlamında performans testlerinin yeri hakkında daha fazla bilgi için, Yazılım Test ve Kalite Güvence rehberi adresini ziyaret edebilirsiniz.
Smart Maple Performans Test Hizmetleri
Yazılımınızın ne zaman ve neden yavaşlaştığını bilmek, performans sorunundan önce harekete geçmek demektir. Smart Maple, JMeter, k6, Gatling gibi araçlarla kapsamlı performans test ve yük test hizmetleri sunar. Test planlaması, yük modelleme, sorun teşhisi ve optimizasyon önerileri sunarak sisteminizin ölçeklenebilirliğini ve güvenilirliğini sağlarız. Yazılım performansını optimize etmek için smart-maple.com adresini ziyaret edin ve uzman ekibimizle çalışmaya başlayın.
Related Articles
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Read MoreLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Read MoreBilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Read More
