HTTP/2'yi hemen aç — çoklamayla tek ekrandaki 4-5 paralel isteğin tek bağlantıya iner, domain sharding'e gerek kalmaz. Mobil kitle için HTTP/3 (QUIC) asıl kazanç; TCP HOL blocking'i ortadan kaldırır ve handshake'i hızlandırır.
#performans#altyapı#ağ
Web/mikroservis filosunda Transaction modu — sunucu bağlantısını her transaction sonunda havuza iade eder, en yüksek yeniden kullanımı verir. Bedeli: protokol seviyesi prepared statement'ları ve session state'i bozar. Çözüm: client-side prepared'ı kapat ya da PgBouncer 1.21+ kullan; `default_pool_size`'ı makul tut.
#performans#postgresql#veritabanı
Sıfırdan başlayan çoğu proje için cevap hayır: monolitle başla, sınırları net çiz, ölçek ihtiyacı gerçek olduğunda servisleri ayır.
#mimari#mikroservis
Sorun uygulamanın SIGTERM'de drain etmemesi. Yaşam döngüsünü düzelt: önce LB'den çık, yeni istek almayı kes, mevcut işleri bir deadline içinde bitir, sonra çık. Go'da `server.Shutdown(ctx)`, Octane'de graceful reload; platformun grace süresini en uzun drain'inle hizala.
#performans#ölçekleme#go
Bu sorgu için tek bir composite index kur: önce eşitlik kolonları (`user_id`, `status`), sonra ORDER BY kolonu en sona (`created_at DESC`). Böylece index hem filtreyi hem sıralamayı karşılar, Bitmap merge + Sort biter. Üstüne binen tekli indeksleri sil.
#performans#postgresql#veritabanı
Asıl sorun, anahtarın aynı saniyede uçurumdan düşmesi. İki tamamlayıcı çözüm: tek seferlik mutex lock ile yalnızca ilk isteğin DB'ye gitmesi, ve probabilistic early expiration (XFetch) ile sürünün tek ana toplanmaması. TTL'lere jitter ekle, stale-while-revalidate ile kullanıcıyı bekletme. Çoğu durumda single-flight + jitter yeter; XFetch'i recompute pahalıysa kullan.
#performans#redis#cache
GC duraklamaları bir semptom; asıl düşman tahsis hızı. Hot path'te kısa ömürlü buffer/struct'ları `sync.Pool` ile tekrar kullan, escape analizini (`-gcflags=-m`) çalıştırıp heap'e kaçanları stack'te tut. `pprof` ile önce/sonra ölç. `GOGC`/`GOMEMLIMIT` ayarı GC'yi seyrekleştirir ama saniyede 50k tahsisi düzeltmez.
#performans#go
Tahmin etme, ölç. Octane'de worker uzun ömürlü olduğu için istekler arasında biriken her şey sızar: büyüyen static cache'ler, request state tutan singleton'lar, her istekte yeniden bağlanan servisler. Önce sızıntıyı bisect ile yakala, sonra stateful tarafı Octane hook'larında sıfırla. `max_requests` çözüm değil, emniyet supabı.
#performans#laravel#octane
10.000 tenant'ta database-per-tenant operasyonel olarak ölçeklenmez (10k migration, 10k pool, 10k backup). Pragmatik cevap: her yerde `tenant_id` olan shared DB + Postgres Row-Level Security ile izolasyonu DB'ye gömmek. ORM scope'u savunma katmanı; whale tenant'ı sonra kendi DB'sine taşıma yolunu açık tut.
#mimari#veritabanı#ölçekleme
İki ayrı mesele. Kimlik doğrulama: HMAC imzasını RAW body üzerinde constant-time karşılaştır, geçmezse reddet. Idempotency: provider'ın event id'sini UNIQUE constraint ile sakla, transaction içinde check-or-insert yap — bir-kez garantisini app değil DB verir. İmza doğrula → hızlı 200 dön → işi kuyruğa al.
#mimari#güvenlik#laravel