Peçete hesabı nedir?
Simon Eskildsen, Shopify’da yıllarca altyapı üzerinde çalıştı. Orada edindiği bir alışkanlığı açık kaynak bir depoya döktü: napkin-math. Fikir, bir sistemin ideal koşullarda ne yapabileceğini peçeteye sığacak kadar kısa bir hesapla bulmak. Bunun için bellekten okuma, SSD, ağ gecikmesi ve bulut depolamanın fiyatı gibi birkaç düzine temel sayıyı ezbere bilmek gerekiyor. Eskildsen bu sayıları betiklerle ölçüp bir tabloya koymuş, sonra kendine ezber kartları yapmış.
Depodaki kurallar basit: Altıdan fazla varsayım gerekiyorsa hesabı fazla karmaşıklaştırıyorsun. Birimleri yanında taşı, hata yakalamana yarar. Tam sayı değil, büyüklük mertebesi ara. Bilmediğin soruyu tahmin edebileceğin küçük parçalara böl.
Ezberlemeye değer birkaç sayı
Depodaki tablodan seçmeler (yaklaşık değerler):
- Bellekten sıralı okuma: tek çekirdekte ~20 GiB/s, tüm çekirdeklerde ~200 GiB/s
- SSD’den rastgele 8 KiB okuma: ~100 µs
- Aynı bölgedeki iki makine arası: ~100 µs
- S3 gibi nesne depolamadan bir okuma: 50–100 ms
- Aylık fiyat: 1 GB bellek ~2,5 $, 1 GB SSD ~0,15 $, 1 GB nesne depolama ~0,02 $
Son satır önemli: Bellek, nesne depolamadan yaklaşık 100 kat pahalı.
Tahmin tutmazsa
Eskildsen’in söyleşide verdiği örnek: Bir arama 10 saniye sürüyordu. Hesaba göre üç terimin belge listelerini bellekte kesiştirmek 10 milisaniye civarında bitmeliydi. Bu kadar büyük fark, ya yanlış şeyi ölçtüğünü ya da sistemi yanlış anladığını gösteriyor. Ters yönde de olabiliyor. Bir MySQL testinde diske yazma sayısına göre saniyede en fazla ~1.000 işlem bekliyordu, ölçüm 5.000’i geçti. Sebep, MySQL’in eşzamanlı işlemlerin diske yazmasını birleştirmesi (group commit). İki durumda da fark, öğrenilecek bir şey olduğunu söylüyor.
Kendin dene: 10 milyon vektör
10 milyon belgeyi 1.536 boyutlu vektörlerle aranabilir yapmak istiyorsun. Her boyut 4 bayt, yani vektör başına ~6 KB, toplam ~60 GB. Hepsini bellekte tutarsan bir kopya için ayda ~150 $, yedekli birkaç kopya için birkaç yüz dolar. Nesne depolamada ise ayda ~1 $.
Peki hız? 60 GB’ı her sorguda ağdan çekmek saniyeler sürer, olmaz. Ama vektörleri kümelere ayırıp sadece küme merkezlerinin listesini ve en yakın birkaç kümeyi okursan, 3–4 gidiş-dönüşle ~400 ms civarında bir sonuç alırsın. Sık sorulan veriyi SSD ve bellekte önbelleğe alırsan, birkaç milisaniyeye inersin.
turbopuffer’a giden yol
2023’te Eskildsen’in bir arkadaşının girişimine arama servisi için ayda 30 bin dolar teklif edilmiş. Altyapının tamamı ayda 5 bin dolarmış. Peçete hesabı bunun çok daha ucuz olabileceğini söylüyordu ve turbopuffer böyle doğdu.
Belgelerine göre veri ve yazma günlüğü doğrudan nesne depolamada duruyor. Bütün sunucuları kapatsan da veri kaybolmuyor. İlk sorgu doğrudan S3’ten okuyor (1 milyon belgede ortanca ~874 ms). Sonra veri sunucunun NVMe diskine ve belleğine alınıyor ve ortanca ~14 ms’ye iniyor. Vektör aramasının yanında BM25 tam metin araması da var. Bedeli: Yazmalar ~165 ms sürüyor ve önbellekte olmayan veriye ilk erişim yavaş.
Bu model, çoğu zaman boşta duran çok sayıda küçük indeks için ideal. turbopuffer’ın blogunda, kod tabanı başına ayrı indeks tutan Cursor’ın Kasım 2023’te geçtiği ve maliyetini %95 düşürdüğü yazıyor. Nesne depolama ile önbellek ikilisini dosya sistemi tarafında JuiceFS yazısında, vektör ve kelime aramasını birleştirmeyi RAG yazısında anlattık.
Sonra ne oldu?
turbopuffer Eylül 2026’da v3’ü duyurdu. Depolama artık vektör indeksine göre değil, yeni bir birincil indekse göre düzenleniyor. Vektör araması diğerleri gibi ikincil bir indeks oluyor. Ekip, üretime almadan önce performans ölçümlerini yayımlayacağını söylüyor.
Düşün
- Çalıştığın sistemde en sık yapılan işlem kâğıt üstünde kaç milisaniye sürmeli? Ölçtüğün süre buna ne kadar yakın?
- Verinin ne kadarı gerçekten her an bellekte durmak zorunda?
Videoyu izle
Kaynaklar (6, İngilizce)
- The Pragmatic Engineer: From "napkin math" to turbopuffer (video) (yeni sekmede açılır)
- The Pragmatic Engineer: Pushing software engineering limits with "napkin math" (yeni sekmede açılır)
- GitHub: sirupsen/napkin-math (yeni sekmede açılır)
- turbopuffer: Architecture (yeni sekmede açılır)
- turbopuffer: fast search on object storage (yeni sekmede açılır)
- turbopuffer: RIP, vector database (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.