2 puan yazan GN⁺ 2023-07-07 | 1 yorum | WhatsApp'ta paylaş

"#MetaThreads'ün arka ucunun #Python 3.10 ile oluşturulduğunu biliyor muydunuz?

Instagram'ın #Cinder fork'u üzerinde çalışıyor; bu fork, JIT derleyicisi, gecikmeli yüklenen modüller, önceden derlenmiş statik modüller gibi standart Python 3.10'dan farklı birçok ilginç özellik içeriyor."

1 yorum

 
GN⁺ 2023-07-07
Hacker News yorumları
  • “Python üretim backend’i için yeterince hızlı değil” diyenler açısından oldukça ironik. Sonuçta aynı şirket, PHP + MySQL ile yapılmış dünyanın en büyük sosyal ağını yıllardır işletiyor

    • Teknik olarak doğru, ama çok uzun zamandır saf PHP’yi olduğu gibi çalıştırmıyorlar. HHVM JIT ile x86 koduna dönüştürüp makinede native olarak çalıştırdılar ve ciddi miktarda optimizasyon da eklediler
      JIT yapan sanal makinenin tamamı da C++ ve MySQL dağıtımı da ölçeklenebilirlik için büyük ölçüde değiştirilmiş dahili bir fork. Depolama/hesaplama ayrımı, sharding, InnoDB yerine RocksDB tabanlı bir storage engine, senkron replikasyon için Raft gibi şeyler var
      Backend altyapısını ölçeklenebilir hale getirmek için gerçekten çok etkileyici mühendislik yapıldı
      Bakmaya değer kaynaklar:
      [1] https://engineering.fb.com/2016/08/31/core-data/myrocks-a-sp...
      [2] https://research.facebook.com/file/529018501538081/hhvm-jit-...
      [3] https://research.facebook.com/file/700800348487709/HHVM_ICPE...
    • Ben Facebook’un ilk dönem mühendislerinden biriydim; erken dönem Facebook’taki PHP, web sitesi şablonlarında kullanılan PHP’den tamamen farklıydı. Çok daha sofistike bir programlama tarzını mümkün kılan her türden özel kütüphane vardı
      Fonksiyonel yardımcılar, binlerce çekirdekte asenkron yürütme, SSH kullanarak veri merkezleri arasında spanning tree kurmak gibi şeyleri düşünebilirsiniz. Yan not olarak, kullandığım iyi şeylerin önemli bir kısmını Evan Priestley yapmıştı; kendisi Phabricator’ı ve başka güçlü sistemleri de geliştirdi
    • Evet. Saf Python yeterince hızlı değil, bu yüzden daha fazla çalışma gerekmiş
      “Instagram’ın Cinder fork’u üzerinde çalışıyor; buna JIT, lazy-loaded modüller, önceden derlenmiş statik modüller ve saf Python 3.10’a kıyasla çeşitli ilginç değişiklikler dahil”
      Bu, tweette yazan şey
      Benim açımdan insanlar hangi dili kullanıyor pek umurumda değil. Paranız varsa daha fazla sunucu eklersiniz; bunu herkes biliyor. Tabii CFO ile CTO ekonomik durgunluğu gerekçe gösterip sıradaki büyük hedefi “maliyet düşürme” ilan edene kadar
      2023’te hâlâ ana akım programlama dillerinin “üretime hazır olup olmadığını” tartışıyor olmamız bana şaşırtıcı geliyor. Biraz “havalı çocuklar” yarışı gibi
    • Gerçekten ölçekleyebilmek için iki PHP implementasyonu ve bir C++ dönüştürücü yapmak zorunda kalan o şirketten mi bahsediyorsun?
    • Dil seçimi çoğu zaman ağaca bakıp ormanı kaçırmak oluyor. Python yerine C++ seçip nanosaniye ya da cycle kazanmanız, cache service veya veritabanı okumak için ağ sınırında harcadığınız milisaniyelerin yanında sönük kalıyor
  • Gerçekten yüksek performans gereken kısımlar, çeşitli C++ tabanlı toplama ve öneri servislerinde. Ama web sunucusu doğru şekilde Django

    • Bu konuyla gerçekten çok ilgileniyorum. Web sunucusunun Django olduğunu nasıl öğrendiğini merak ediyorum. Aradım ama bulamadım
      Neden Django kullansınlar? Küçük projelerde kullandım ama çok hızlı değil ve bu kadar büyük bir uygulamaya uygun olmayacağını düşünmüştüm. Artılarını ve eksilerini bilmek isterim
      Neden C++ ya da Rust ile yapmadılar? Ağır kısımları derlenen bir dille yazmış olsalar bile Python yanıt süresini sınırlamaz mı? Acemi birinin naif soruları olabilir
    • Django kullanmaya karar vermeleri ilginç ve sevindirici, ama kaynağı merak ediyorum
    • Django bir web sunucusu değil, bir WSGI/ASGI framework. Asıl HTTP termination’ı neyin yaptığını merak ediyorum
    • Kod tabanında type annotation ve type checking’i ne kadar yoğun kullandıklarını merak ediyorum
    • Yanılıyorsam düzeltin ama Django bir web sunucusu değil. gunicorn gibi bir app server ve nginx gibi bir web sunucusuyla birlikte kullanılan bir framework
  • “Instagram’ın Cinder fork’unda çalışıyor; buna JIT, lazy-loaded modüller, önceden derlenmiş statik modüller ve saf Python 3.10’a göre çeşitli ilginç değişiklikler dahil”
    Yani tamamen düz Python 3.10 değil

    • Cinder’dan CPython’a kod port etmiştim. Bu fork’ta CPython’a nispeten kolayca alınabilecek bazı optimizasyonlar var ve Facebook da özellik port etmeye açık
      Facebook’un bu fork’u sürdürmeye devam etmek isteyip istemediğini bilmiyorum ama CPython tarafı, mantıklıysa bu tür özellikleri birleştirmeye açık
    • Python 3.10’un, 3.1’in 9 büyük sürüm ilerisinde olduğunu da unutmamak lazım
    • Aslında Python bir implementasyon değil, bir spesifikasyon
  • Threads backend’iyle ilgili yazının Twitter’da paylaşılmış olması ironik

    • Gerçek ironiyi arıyorsak bu şu: Threads adlı uygulamayı, thread’leri zorlaştıran global interpreter lock bulunan Python ile çalıştırmaları
      Anladınız değil mi? Threads, threading…? Tamam, çıkıyorum
    • Threads, Instagram gibi yalnızca mobil uygulama. Masaüstü tarayıcıda Threads’i fiilen kullanamıyorsunuz; bu yüzden muhtemelen Twitter gönderisi olarak paylaşılmıştır
      Threads gönderisi olsaydı bile zaten HN’ye gönderilemezdi
    • Henüz bir web uygulaması yok. Doğrudan bir Thread’e link verilebiliyor gibi ama sadece link verilen şeyi gösteriyor, tartışma ağacını falan göstermiyor
      Henüz web’e açık değil. Bir noktada açılacağı söyleniyor
    • Buna neden eksi oy veriyorsunuz? Gayet adil bir tespit
    • Şu anda Threads’in web tabanlı bir sürümü var mı, yoksa sadece uygulama mı?
  • Backend’in belirli ölçüde çakıştığı açık. https://www.threads.net/t/C ilk Instagram gönderisi ama Threads’te de görünüyor ve Instagram’dakiyle tamamen aynı beğeni sayısına sahip
    Ama https://www.threads.net/@kevin adresinde hiç thread yokmuş gibi görünüyor

  • Python sadece web sunucusu. Gerçekten performansa duyarlı bileşenler olan edge proxy, load balancer, backend servisleri, veritabanı, cache ve depolama servislerinin çoğu C++

    • Tüm istekleri ya da isteklerin çoğunu işleyen web sunucusunu sistemin performansa duyarlı bir parçası olarak görüyorum. Sadece Python’dan Go’ya yeniden yazmak bile birçok durumda 2-3 kat performans artışı sağlıyor ve FAANG ölçeğinde bu, donanım maliyetinde büyük fark yaratabilir
    • Zaten Python’ın kullanılması amaçlanan tam yöntem bu ve eskiden beri hep böyle kullanıldı
  • Cinder ve web sunucusu üzerinde çalıştım. Teknik sorular varsa yanıtlayabilirim :)

    • Cinder’ın gerçek zamanlı akış optimizasyonuna yardımcı olup olamayacağını merak ediyorum. UDP akışı alıyorduk, çeşitli gstreamer ve nvidia deepstream sihirlerinden geçiriyor, sonra akış üzerinde gerçek zamanlı makine öğrenimi çıkarımı yapıyorduk. Kıdemli geliştiricinin bunu Python’la yazdığını biliyorum
      Ama burada gecikme büyük bir sorundu ve her zaman olduğu gibi MVP’ye ulaşmak için optimizasyonun önceliği düşüktü
      O yüzden Cinder’ın gerçek zamanlı veri akışı optimizasyonunda kullanılıp kullanılamayacağını ya da bu sorunun kendisinin kullanım senaryosunu anlamadığım anlamına mı geldiğini merak ediyorum
      Bu arada Django da kullanıyorduk, şimdi dönüp bakınca FastAPI’ye geçmemiz mi gerekirdi diye de düşünüyorum. O ayrı bir soru
    • CPython’a birleştirilmesini en çok istediğiniz, etkisi en büyük ve olasılığı da en yüksek özellik hangisi?
    • Django, Cython ve Numpy’dan oluşan bir stack için Cinder kullanmayı önerir misiniz?
    • Web sunucusu tarafını biraz daha ayrıntılı anlatabilir misiniz? WSGI mi implemente ediyor?
    • Cinder’dan kimler fayda görür? Ne tür iş yükleri için uygundur? README tek başına biraz yetersiz kalıyor
  • Rollout hakkında daha fazla şey öğrenmek istiyorum. Saatte 1 milyondan çok daha fazla yeni kullanıcı ekleniyor ve bu oldukça çılgınca

    • Şu anda beklenen büyümenin ilk birkaç haftasını, belki ilk birkaç ayını kaldırmak için inanılmaz derecede aşırı kaynak tahsisi yapmış olduklarını düşünüyorum
      Yine de duymak isteyeceğim pek çok ilginç ayrıntı vardır mutlaka
    • Meta ürünlerinin tamamında aylık aktif kullanıcı sayısı 3,8 milyar
      Birkaç milyon yeni kullanıcı toplamın %0,1’i bile etmiyor. Gayet öngörülebilir dalgalanma aralığında
    • Sadece bu ölçeği kaldıracak şekilde kurulmuş paylaşımlı Meta altyapısı üzerinde çalışıyor
  • https://github.com/twitter/the-algorithm/pull/447 asla unutulmamalı

    • Sonunda ikisi arasında bir fark ortaya çıktı
  • Threads, Instagram’ın backend/API’sini yeniden kullanıyor. Instagram en başından beri Python tabanlıydı, bu yüzden Threads de Python kullanmış
    Ama bu, şirket içi fork gerektirmeyen alternatifler varken böyle bir uygulamayı sıfırdan yaparken Python seçmeniz gerektiği anlamına gelmiyor. Yazının tamamını okuyunca bunu anlamak oldukça kolay ama Hacker News’in sadece “başlığa bakan” arayüzü meseleyi çarpıtıyor gibi

    • Sakin olun. Python yeterince iyi bir dil