Editörden

Saniyede 70 milyon istek, 500 petabayt veri, haftada 1 milyar kullanıcı. OpenAI’ın depolama platformu bir Python kütüphanesi olarak başlamış. Yazının değeri rakamlarda değil, ‘kütüphane olarak başlayan şeyi ne zaman servise çeviririz’ kararında.

Günün Kapağı
OpenAI Research 11 Eylül 202614 dk okuma ileri

İstemci kütüphanesinden servise: OpenAI’ın Habitat depolama platformu neden Python’da kaldı

Rapidly scaling online storage to serve over 1 billion ChatGPT users

Habitat, OpenAI ürünlerinin ihtiyaç duyduğu bilgiye hızlı ve güvenilir erişmesi için kurulan çevrimiçi depolama platformu. Bugün saniyede 70 milyondan fazla isteği işliyor, haftada 1 milyar kişinin kullandığı ürünleri destekliyor, yaklaşık 40 coğrafi bölgede çalışıyor ve 500 petabayttan fazla veri sunuyor. Başlangıcı ise çok mütevazı: DevDay 2023’te GPT’ler için, tek bir veritabanına bağlanan basit bir Python istemci kütüphanesi olarak çıktı.

Kütüphane fikri işe yaradı: ürün mühendisleri şema arama, yönlendirme, yetkilendirme, şifreleme, serileştirme ve bağlantı havuzlamayı düşünmek zorunda değildi; hatta verinin Azure Cosmos DB’den mi, önbellekten mi geldiğini bile bilmiyorlardı. Yetenekler (istemci tarafı önbellek, sıkıştırma, şifreleme) paylaşılan kütüphaneye kolayca eklendi.

2025 ortasında istemci tarafı uygulama sınırına dayandı. Servis sayısı büyüyünce geriye uyumlu protokol değişikliği yapmak imkânsızlaştı. Yazıdaki örnek çok öğretici: en kritik veri kümelerinin bölge kesintisindeki etkisini azaltmak için bunları bölgesel dağıtık Cosmos DB hesaplarına taşımak istediler. Bu, istemciye yönlendirme mantığı eklemeyi (özellik bayrağı arkasında), tüm istemcilere yaymayı ve sonra bayrağı açmayı gerektirdi. Onlarca servisi koordine etmek günler sürdü; gölgeleme eklemek birkaç gün daha, bir hata düzeltmesi yine birkaç gün. Sonunda tam bayrağı açma aşamasında bir ekip kendi servisini ilgisiz bir sebeple hatalı eski istemciye geri aldı ve kaçınmaya çalıştıkları kesinti yaşandı.

Karar: Habitat’ı kendi servisine çıkarmak. Kazanç: dağıtım, gözlemlenebilirlik ve platform geliştirmeleri için tek kontrol noktası; erişim denetimi, denetim kaydı ve altta yatan depolamaya erişimi merkezî uygulamak için tek darboğaz (güvenlik açısından avantaj). Bilinçli bir seçim daha: servisi Python’da bıraktılar. Python’un yüksek verimli bir servis için ek ağ gecikmesi ve CPU/bellek maliyeti getireceğini, 100 kat ölçekte kabul edilemeyeceğini ve eninde sonunda yeniden yazılacağını biliyorlardı; ama bunu ‘stratejik bir teknik borç’ olarak gördüler: öncelik maliyet değil, ürün geliştiricileri engelden kurtarmak ve platform kararlılığıydı. Üstüne, kendi kodlama modellerinin ilerlemesinin gelecekte bu göçü kolaylaştıracağına dair hesaplı bir bahis de oynadılar. Bu, iki bölümlük serinin ilk yazısı.

Öne çıkanlar

  • Kütüphane olarak dağıtılan altyapıda her değişiklik onlarca servisin dağıtım koordinasyonu demek; hata düzeltmesi bile günler alıyor.
  • Servise çıkarmak tek kontrol noktası verir: dağıtım, gözlemlenebilirlik, erişim denetimi ve denetim kaydı merkezileşir.
  • Teknik borç bilinçli alınabilir: öncelik ürün ekiplerini engelden kurtarmaksa yavaş dili geçici kabul etmek savunulabilir.
  • Kütüphane + özellik bayrağıyla yayılım, tek bir geride kalmış istemci yüzünden bütün planı bozabilir.

Neden önemli?

‘Paylaşılan kütüphane mi, servis mi?’ sorusu her büyüyen sistemde çıkar. Kütüphane başlangıçta çok hızlıdır (ağ atlaması yok, tek dağıtım) ama sürümler dağılınca değişim maliyeti üstel artar. Servis ise başlangıçta yavaş ve pahalı, ölçekte ucuzdur.

Sende karşılığı

Bu kararı küçük ölçekte yaşayacaksın: ortak bir ‘common’ modülü birden fazla projene kopyalıyorsan (Mobit, KlioAI ve Tradebot arasında paylaştığın yardımcı kod), her projede farklı sürümde kalır. İşaretleri tanı: ‘bir hata düzelttim ama üç yerde güncellemem gerekiyor’. Bunun iki ucu var: ortak kodu bir versiyonlanan paket yap ya da küçük bir servise çıkar. İkinci ders mülakat için altın değerinde: ‘Bilinçli teknik borç aldım, çünkü öncelik teslimat hızıydı, ve ödeme planı şuydu’ diyebilmek, her şeyi mükemmel yapmaya çalışmaktan daha olgun bir cevaptır.

Sözlük

blast radius etki yarıçapı
Bir arıza ya da hatanın etkileyebileceği bileşen ve kullanıcı kapsamı.
shadowing gölgeleme
Yeni mantığı gerçek trafikte çalıştırıp sonucunu etkisiz biçimde eskisiyle karşılaştırma.
feature flag özellik bayrağı
Bir davranışı kod dağıtmadan açıp kapatmayı sağlayan yapılandırma anahtarı.
change data capture (CDC) değişiklik veri yakalama
Veritabanındaki değişiklikleri akış olarak diğer sistemlere aktarma tekniği.
Orijinali oku