"Tahukah Anda bahwa backend #MetaThreads dibangun dengan #Python 3.10?
Backend ini berjalan di fork #Cinder milik Instagram, yang mencakup berbagai fitur menarik yang berbeda dari Python 3.10 biasa, seperti compiler JIT, modul lazy loading, dan modul statis yang telah diprakompilasi."
1 komentar
Komentar Hacker News
Cukup ironis bagi pihak yang bilang “Python tidak cukup cepat untuk backend produksi”. Perusahaan yang sama sudah lama mengoperasikan jejaring sosial terbesar yang dibuat dengan PHP + MySQL
Mesin virtual yang melakukan JIT itu sendiri juga seluruhnya ditulis dalam C++, dan distribusi MySQL-nya pun merupakan fork internal yang dimodifikasi besar-besaran demi skalabilitas. Ada pemisahan storage/compute, sharding, mesin penyimpanan berbasis RocksDB alih-alih InnoDB, serta hal-hal seperti Raft untuk replikasi sinkron
Benar-benar banyak engineering hebat yang dituangkan untuk membuat infrastruktur backend bisa diskalakan
Referensi yang layak dibaca:
[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...
Bayangkan helper fungsional, eksekusi asinkron di ribuan core, spanning tree lintas data center menggunakan SSH, dan semacamnya. Sebagai catatan tambahan, banyak hal bagus yang saya pakai dibuat oleh Evan Priestley, dan dia juga membuat Phabricator serta berbagai sistem kuat lainnya
“Berjalan di atas fork Cinder milik Instagram, yang mencakup JIT, modul lazy-loading, modul statis yang sudah dikompilasi sebelumnya, dan berbagai perubahan menarik dibanding Python 3.10 murni”
Itu isi tweet-nya
Secara pribadi saya tidak terlalu peduli orang memakai bahasa apa. Semua orang tahu kalau punya uang, tinggal tambah server. Setidaknya sampai CFO dan CTO menjadikan “penghematan biaya” sebagai proyek besar berikutnya dengan alasan resesi
Mengejutkan juga bahwa pada 2023 orang masih memperdebatkan “kesiapan produksi” bahasa pemrograman arus utama. Rasanya seperti kompetisi “anak keren”
Bagian yang benar-benar butuh performa tinggi sebenarnya ada di berbagai layanan agregasi dan rekomendasi berbasis C++. Tetapi web server-nya memang Django
Kenapa memakai Django? Saya pernah memakainya di proyek kecil, tetapi rasanya tidak terlalu cepat dan saya kira tidak cocok untuk aplikasi sebesar ini. Saya ingin tahu kelebihan dan kekurangannya
Kenapa tidak dibuat dengan C++ atau Rust? Walaupun bagian berat dibuat dengan bahasa terkompilasi, bukankah Python tetap akan membatasi latensi respons? Mungkin ini pertanyaan naif dari amatir
“Berjalan di atas fork Cinder milik Instagram, yang mencakup JIT, modul lazy-loading, modul statis yang sudah dikompilasi sebelumnya, dan berbagai perubahan menarik dibanding Python 3.10 murni”
Jadi ini memang bukan sepenuhnya hanya Python 3.10 biasa
Saya tidak tahu apakah Facebook ingin terus mempertahankan fork ini, tetapi pihak CPython terbuka untuk menggabungkan fitur-fitur semacam itu jika memang masuk akal
Ironis juga bahwa tulisan tentang backend Threads diunggah ke Twitter
Paham kan? Threads, threading…? Oke, saya keluar sendiri
Bahkan kalau itu postingan Threads pun, kemungkinan besar tidak akan bisa disubmit ke HN
Masih belum benar-benar terbuka di web. Katanya suatu saat nanti akan dibuka
Jelas ada tumpang tindih backend sampai tingkat tertentu. https://www.threads.net/t/C adalah postingan Instagram pertama, dan itu juga terlihat di Threads, dengan jumlah like yang persis sama seperti di Instagram
Tapi di https://www.threads.net/@kevin tertulis tidak ada thread
Python hanyalah webserver. Komponen yang benar-benar sensitif terhadap performa seperti edge proxy, load balancer, layanan backend, database, cache, dan layanan penyimpanan sebagian besar ditulis dalam C++
Saya pernah mengerjakan Cinder dan webserver. Kalau ada pertanyaan teknis, saya bisa jawab :)
Tapi di sini latensi adalah masalah besar, dan seperti biasa prioritas optimasi diturunkan demi mencapai MVP
Jadi saya penasaran apakah Cinder bisa dipakai untuk optimasi streaming data real-time, atau apakah pertanyaan ini sendiri berarti saya belum memahami use case-nya
Sebagai catatan, kami juga memakai Django, meski sekarang saya jadi bertanya-tanya apakah seharusnya beralih ke FastAPI. Itu pertanyaan terpisah
Saya ingin tahu lebih banyak soal rollout-nya. Jumlah pengguna baru yang jauh melebihi 1 juta orang per jam itu cukup luar biasa
Meski begitu, pasti masih banyak detail menarik yang layak didengar
Beberapa juta pengguna baru bahkan tidak sampai 0,1% dari total itu. Masih dalam rentang fluktuasi yang cukup bisa diprediksi
https://github.com/twitter/the-algorithm/pull/447 tidak boleh dilupakan
Threads mendaur ulang backend/API Instagram. Instagram sejak awal memang berbasis Python, jadi itulah alasan Threads juga menggunakan Python
Tapi itu tidak berarti Python harus dipilih saat membuat aplikasi seperti ini dari nol, apalagi jika ada alternatif yang tidak membutuhkan fork internal. Jika membaca keseluruhan artikelnya, ini cukup mudah dipahami, tetapi UI Hacker News yang mendorong orang “hanya membaca judul” tampaknya membuatnya terdistorsi