Sistem yavaşlığı, geç fark edilen ve fark edildiğinde çoğu zaman tek bir nedene indirgenemeyen sorunlardan biridir. Program ilk kurulduğunda hızlı çalışır; veri büyüdükçe, kullanıcı sayısı arttıkça ve yıllar içinde yeni ekranlar eklendikçe önce belli saatlerde, sonra sürekli olarak ağırlaşır. Tipik tablo şudur: gündüz kabul edilebilir çalışan sistem gün sonu kapanışta kilitlenir, ay sonu raporu açılmayı bekletir, birkaç kullanıcı aynı anda aynı ekrana girdiğinde herkes birden durur. Bunlar farklı arızalar gibi görünür; çoğu zaman aynı kökten gelir. Bu sayfa sunucu, veritabanı ve uygulamanın veri erişim katmanındaki yavaşlığı konu alır; tarayıcı tarafındaki yükleme hızı ve Core Web Vitals çalışması ayrı bir başlıktır ve PWA ile web performansı sayfasında anlatılır.
Bu noktada en sık başvurulan çözüm, sunucuyu büyütmektir. Daha fazla çekirdek, daha fazla bellek, daha hızlı disk. Donanım, gerçekten kapasiteye dayanmış bir sistemde işe yarar. Ancak darboğaz kötü giden bir sorgu planı, eksik ya da yanlış tasarlanmış bir indeks, bir kaydı çekmek için döngü içinde defalarca veritabanına gidilmesi, tek bir uzun işlemin diğer herkesi bekletmesi ya da ağır raporlamanın canlı üretim veritabanının üstünde koşması ise, daha güçlü sunucu aynı işi bir süre daha taşır ama nedeni ortadan kaldırmaz. Hangisi olduğu ancak ölçümle ayrılır; ölçmeden yapılan müdahale iyileştirme değil tahmindir.
Pan Innovation House olarak bu işe bir vaatle değil, bir yöntemle giriyoruz. Önce mevcut durumu ölçer, hangi işlemin ne kadar sürdüğünü ve zamanın nerede kaybedildiğini ölçümle ortaya koyarız; darboğazları etki büyüklüğüne göre sıralar, her düzeltmeyi tek tek uygular ve aynı ölçüm düzeneğiyle yeniden ölçeriz. İş, sabit süreli ve sabit kapsamlı bir teşhis çalışmasıyla başlar; kapsam ve süre başlamadan önce yazılı olarak belirlenir. Düzeltme ayrı bir kalemdir ve ancak teşhis elinizde olduktan sonra, ne kadar iş olduğunu bilerek karar verirsiniz.
Bu sayfada anlatılan işin dayanağı bir hız rekoru değil, çözümleme derinliğidir. Derlenmiş bir kurumsal uygulamanın veri erişim katmanını çözümledik: ORM kullanılmadığını, erişimin doğrudan ADO.NET ile yapıldığını kanıtlarıyla ortaya koyduk ve kaynağı bulunamayan altmışın üzerinde veritabanı nesnesinin çağrı sözleşmesini kanıtıyla çıkardık, bir bölümünün gövdesini de çağrıldıkları yerlerden ve kodun okuduğu çıktı kolonlarından yola çıkarak yeniden kurduk. Bu çalışma, sözleşme ile gövdenin ayrı ele alındığı ikinci sürümünde ayrı bir karşı-okuma turundan geçirildi: her iddia kanıtıyla tek tek sınandı, dayanağı yetersiz bulunanlar geri çekildi, ulaşılamayan ve doğrulanamayan noktalar raporda açıkça işaretlendi. Bir sistemin yavaşlığını bulmak da tam olarak bu kası ister: kodun ve veritabanının içinde gerçekte ne olduğunu görebilmek.