Production'da bir sayfanın yavaş açıldığı şikayeti geldi. Sorunun frontend'de mi backend'de mi olduğunu nasıl bulursunuz?
Cevap
Tahmin yerine ölçerek ilerlerim: önce sorunu yeniden üretip zamanın nereye gittiğini parçalara ayırırım, sonra en büyük parçaya odaklanırım.
1. Kapsamı netleştir
- Herkes mi, belirli kullanıcılar mı (bölge, cihaz, büyük hesaplar)? Tüm sayfalar mı, tek sayfa mı? Ne zamandan beri; bir deploy ile çakışıyor mu?
- RUM verisi (Core Web Vitals, Sentry performance) varsa p75/p95 değerlerine bakılır.
2. Tarayıcıda zamanı ayrıştır
DevTools Network sekmesinde:
- TTFB yüksek (HTML veya API yanıtı geç başlıyor) -> sorun büyük ihtimalle backend, DB veya ağda.
- TTFB düşük ama indirme uzun -> yanıt çok büyük (sıkıştırma yok, gereksiz alanlar, sayfalama yok).
- İstek şelalesi (waterfall) -> istekler sırayla atılıyor; bir isteğin sonucunu bekleyip sonrakini atan bileşenler.
- Ağ hızlı ama sayfa geç etkileşime giriyor -> Performance sekmesinde uzun JS task'ları, büyük bundle, gereksiz re-render: sorun frontend'de.
3. Backend'i ayrıştır
- Trace (OpenTelemetry, APM) ile isteğin süresini parçala: middleware, DB sorguları, dış API çağrıları.
- Yavaş sorgu logu ve
EXPLAIN ANALYZE; N+1 sorgular, eksik index. - Dış servis çağrısında timeout var mı? Bağlantı havuzu dolu mu (istekler havuzda bekliyor)?
4. Düzelt ve doğrula
| Bulgu | Tipik çözüm |
|---|---|
| Yavaş sorgu | Index, sorguyu yeniden yazma, cache |
| İstek şelalesi | Paralel istek, tek BFF endpoint'i, server-side veri çekme |
| Büyük yanıt | Sayfalama, alan seçimi, gzip/brotli |
| Büyük bundle | Code splitting, ağır kütüphaneyi değiştirme |
| Uzak bölge | CDN, edge cache |
Düzeltmeden sonra aynı metrikle iyileşmeyi kanıtlarım ve bir daha yaşanmaması için performans bütçesi veya alarm eklerim.
İlgili Web Mimarisi soruları
- SSR, SSG ve CSR arasındaki farklar nelerdir?
- Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?
- MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?
- Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.
- Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?
- Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.