İçeriğe geç
Sedat Özdemir

Bloga dön

6 Temmuz 2025 · 2 dk okuma

Bir API'yi yeniden yazmadan hızlandırmak

Yavaş bir sistemin çözümü genelde yeni bir teknoloji değil. Ölçmeyi bilen biri, aynı kodla yanıt süresini yarıya indirebiliyor.

Bir ekip bana geldiğinde söyledikleri cümle hemen hemen aynı oluyor: sistem yavaş, her şeyi baştan yazmamız gerekiyor. Neredeyse hiç doğru olmuyor.

Baştan yazmak aylar sürüyor, eski sistemin öğrendiği bütün ince kuralları kaybettiriyor ve sonunda yine yavaş olma riski taşıyor. Önce ölçmek günler sürüyor.

Ölçmeden hiçbir şey değiştirmeyin

Yavaşlığın nerede olduğuna dair tahmininiz büyük olasılıkla yanlış. Benim tahminlerim de yanlış çıkıyor. Bu yüzden ilk iş, isteklerin nerede zaman harcadığını gösteren bir ölçüm koymak: hangi uç nokta, hangi sorgu, kaç milisaniye.

Bu ölçüm koyulduğu gün genelde tek bir uç noktanın toplam sürenin yarısını yediği görülüyor. İyi haber şu: yarısı tek bir yerde olan bir problem, tek bir yerde çözülür.

Sorunların çoğu aynı üç yerde

Deneyimime göre sıralama şöyle. Birincisi, döngü içinde çalışan sorgular: yüz kayıt listelerken yüz bir kez veritabanına gitmek. Bunun çözümü tek bir toplu sorgu.

İkincisi, eksik indeks. Milyon satırlı bir tabloda indekssiz arama, doğru indeksle milisaniyeye inebiliyor. Üçüncüsü, isteğin içinde yapılan ama beklenmesi gerekmeyen işler: e-posta göndermek, rapor üretmek, görsel küçültmek. Bunlar kuyruğa alınır, kullanıcı beklemez.

Sonra durun

Yanıt süresi kabul edilebilir seviyeye indiğinde iş bitti. Daha hızlısı her zaman mümkün ama bir noktadan sonra kullanıcı farkı hissetmiyor, siz ise karmaşıklık biriktiriyorsunuz. Ölçüm panelini bırakın, bir sonraki yavaşlamayı o haber verecek.