"क्या आपको पता है कि #MetaThreads का बैकएंड #Python 3.10 पर बनाया गया है?
यह Instagram के #Cinder fork पर चल रहा है, और इस fork में JIT compiler, lazy-loading modules, precompiled static modules जैसी कई दिलचस्प सुविधाएँ शामिल हैं, जो सामान्य Python 3.10 से अलग हैं।"
1 टिप्पणियां
Hacker News की राय
जो लोग कहते हैं कि “Python production backend के लिए पर्याप्त तेज़ नहीं है”, उनके लिए यह काफ़ी विडंबनापूर्ण है। आखिर उसी कंपनी ने PHP + MySQL से बने अब तक के सबसे बड़े social network को चलाया है
JIT चलाने वाली virtual machine भी पूरी की पूरी C++ में है, और MySQL distribution भी scalability के लिए काफ़ी बदला हुआ internal fork है। इसमें storage/compute separation, sharding, InnoDB की जगह RocksDB-आधारित storage engine, synchronous replication के लिए Raft जैसी चीज़ें शामिल हैं
backend infrastructure को scalable बनाने के लिए इसमें वाकई बहुत शानदार engineering लगाई गई थी
देखने लायक सामग्री:
[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...
functional helpers, हज़ारों cores पर asynchronous execution, SSH का इस्तेमाल करके datacenters के पार spanning tree जैसी चीज़ें सोचिए। वैसे, जिन बेहतरीन चीज़ों का मैं इस्तेमाल करता था, उनमें से काफ़ी Evan Priestley ने बनाई थीं, और उन्होंने Phabricator तथा कई और शक्तिशाली systems भी बनाए
“यह Instagram के Cinder fork पर चल रहा है, जिसमें JIT, lazy-loading modules, precompiled static modules, और plain Python 3.10 की तुलना में कई दिलचस्प बदलाव शामिल हैं”
यह ट्वीट में कहा गया था
मुझे व्यक्तिगत रूप से फ़र्क नहीं पड़ता कि लोग कौन-सी language इस्तेमाल करते हैं। पैसे हों तो और servers जोड़ सकते हैं, यह सब जानते हैं। बस तब तक, जब तक CFO और CTO मंदी का हवाला देकर अगले बड़े project के लिए “cost cutting” तय न कर दें
2023 में भी mainstream programming languages की “production readiness” पर बहस होना हैरानी की बात है। यह कुछ “cool kids” वाली प्रतिस्पर्धा जैसा लगता है
जिन हिस्सों में वास्तव में बहुत performance चाहिए, वे कई C++-आधारित aggregation और recommendation services में हैं। लेकिन webserver सही मायनों में Django है
Django क्यों इस्तेमाल करेंगे? मैंने इसे छोटे projects में इस्तेमाल किया है, लेकिन यह बहुत तेज़ नहीं लगा और मुझे लगा कि इतने बड़े app के लिए यह उपयुक्त नहीं होगा। इसके फ़ायदे-नुकसान जानना चाहूँगा
इसे C++ या Rust में क्यों नहीं बनाया गया? भले ही भारी हिस्से compiled language में बनाए गए हों, क्या Python response time को सीमित नहीं करेगा? मैं amateur हूँ, इसलिए सवाल भोला हो सकता है
“यह Instagram के Cinder fork पर चल रहा है, जिसमें JIT, lazy-loading modules, precompiled static modules, और plain Python 3.10 की तुलना में कई दिलचस्प बदलाव शामिल हैं”
यानी यह पूरी तरह सिर्फ़ Python 3.10 नहीं है
Facebook इस fork को लगातार बनाए रखना चाहता है या नहीं, यह पता नहीं, लेकिन CPython पक्ष ऐसे features को merge करने के लिए खुला है, अगर वे उचित हों
Threads backend पर एक पोस्ट Twitter पर आई है, यह अपने-आप में विडंबनापूर्ण है
समझे? Threads, threading…? ठीक है, मैं निकलता हूँ
भले ही यह Threads post होती, HN पर शायद इसे submit नहीं किया जा सकता था
यह अभी web पर खुला नहीं है। कहा गया है कि कभी न कभी होगा
यह साफ़ है कि backend कुछ हद तक ओवरलैप करता है। https://www.threads.net/t/C पहला Instagram पोस्ट है, लेकिन यह Threads पर भी दिखता है, और इसमें Instagram जितने ही likes हैं
लेकिन https://www.threads.net/@kevin पर दिखता है कि कोई threads नहीं हैं
Python बस एक webserver है। वास्तव में performance-sensitive components जैसे edge proxy, load balancer, backend services, database, cache, और storage services ज़्यादातर C++ में हैं
मैंने Cinder और webserver पर काम किया है। अगर कोई technical questions हों तो मैं जवाब दे सकता हूँ :)
लेकिन यहाँ latency बड़ी समस्या थी, और हमेशा की तरह MVP तक पहुँचने के लिए optimization priority कम कर दी गई थी
इसलिए जानना चाहता हूँ कि क्या Cinder को real-time data streaming optimization के लिए इस्तेमाल किया जा सकता है, या फिर ऐसा पूछना ही यह दिखाता है कि मैं use case को ठीक से नहीं समझ रहा
वैसे हमने Django भी इस्तेमाल किया था, और अब सोचता हूँ कि क्या हमें FastAPI पर जाना चाहिए था। वह अलग सवाल है
rollout के बारे में और detail जानना चाहता हूँ। हर घंटे 10 लाख से कहीं ज़्यादा नए users जुड़ रहे हैं, जो काफ़ी जबरदस्त है
फिर भी, यक़ीनन कई दिलचस्प details होंगी जिन्हें सुनना अच्छा लगेगा
कुछ million नए users कुल का 0.1% भी नहीं हैं। यह पूरी तरह expected fluctuation range के अंदर है
https://github.com/twitter/the-algorithm/pull/447 को कभी नहीं भूलना चाहिए
Threads, Instagram के backend/API का reuse है। Instagram शुरू से ही Python-based था, इसलिए Threads भी Python इस्तेमाल कर रहा है
इसका मतलब यह नहीं कि अगर आप आज ऐसा app नया बना रहे हैं, और internal fork की ज़रूरत नहीं है, तो आपको Python ही चुनना चाहिए। पूरी post पढ़ें तो यह काफ़ी आसानी से समझ आता है, लेकिन लगता है Hacker News का “सिर्फ़ title पढ़ो” UI इसे थोड़ा distort कर रहा है