Meta ThreadsのバックエンドはPython 3.10で構築されている
(twitter.com/llanga)"#MetaThreadsのバックエンドが #Python 3.10 で構築されていることをご存じですか?
Instagramの #Cinder フォーク上で動作しており、このフォークにはJITコンパイラ、遅延読み込みモジュール、事前コンパイル済みの静的モジュールなど、通常のPython 3.10とは異なるいくつもの興味深い機能が含まれています。"
"#MetaThreadsのバックエンドが #Python 3.10 で構築されていることをご存じですか?
Instagramの #Cinder フォーク上で動作しており、このフォークにはJITコンパイラ、遅延読み込みモジュール、事前コンパイル済みの静的モジュールなど、通常のPython 3.10とは異なるいくつもの興味深い機能が含まれています。"
1件のコメント
Hacker Newsの意見
「Pythonは本番バックエンドには十分高速ではない」と言う人たちにとっては、なかなか皮肉だ。同じ会社が PHP + MySQL で作った最大規模のソーシャルネットワークを運営してきたのだから
JITを行う仮想マシン自体もすべてC++で、MySQLディストリビューションもスケーラビリティのために大きく改変した社内フォークだ。ストレージ/計算分離、シャーディング、InnoDBの代わりにRocksDBベースのストレージエンジン、同期レプリケーションのためのRaftのようなものが入っている
バックエンドインフラをスケーラブルにするために、本当に見事なエンジニアリングが数多く投入されていた
参考になりそうな資料:
[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...
関数型ヘルパー、数千コアでの非同期実行、SSHを使ってデータセンターをまたぐスパニングツリーのようなものを思い浮かべればいい。余談だが、私が使っていた優れたもののかなり多くはEvan Priestleyが作ったもので、彼はPhabricatorやほかの強力なシステムも作っていた
「Instagramの Cinderフォーク 上で動作しており、そこにはJIT、遅延ロードモジュール、事前コンパイル済み静的モジュール、素のPython 3.10に対するいくつもの興味深い変更が含まれている」
これはツイートにあった内容だ
個人的には、人がどの言語を使おうと気にしない。金があればサーバーを増やせばいいというのは誰でも分かっている。ただし、CFOとCTOが景気後退を理由に次の大きな課題を「コスト削減」に設定するまでは、だが
2023年にもなって主流プログラミング言語の「本番対応性」を議論していることに驚く。まるで「イケてる子たち」の競争みたいだ
実際に大きな性能が必要な部分は、複数のC++ベースの集計・推薦系サービスにある。しかしウェブサーバーはちゃんと Django だ
なぜDjangoを使うのだろう? 小さなプロジェクトで使ったことはあるが、あまり速くなく、こういう大規模アプリには向かないと思っていた。長所と短所を知りたい
なぜC++やRustで作らなかったのだろう? 重い部分をコンパイル言語で作っていたとしても、Pythonがレスポンス速度を制限しないのだろうか? アマチュアなので素朴な質問かもしれない
「InstagramのCinderフォーク上で動作しており、そこにはJIT、遅延ロードモジュール、事前コンパイル済み静的モジュール、素のPython 3.10に対するいくつもの興味深い変更が含まれている」
つまり完全にただの Python 3.10 というわけではない
Facebookが今後もフォークを維持したいのかは分からないが、CPython側は妥当であればそうした機能をマージすることに前向きだ
Threadsバックエンドに関する記事がTwitterに上がっているのは皮肉だ
分かるでしょ? Threads、threading……? はい、失礼しました
たとえThreadsの投稿だったとしても、HNには投稿できなかったはずだ
まだウェブには開かれていない。いずれ開く予定だと言われている
バックエンドがある程度重なっているのは明らかだ。https://www.threads.net/t/C は最初のInstagram投稿だが、Threadsでも表示され、Instagramとまったく同じいいね数になっている。
ただし https://www.threads.net/@kevin にはthreadsがないと表示される
Pythonは単なるWebサーバーだ。本当に性能に敏感なコンポーネントである エッジプロキシ、ロードバランサー、バックエンドサービス、データベース、キャッシュ、ストレージサービスの大半はC++だ
CinderとWebサーバーの仕事をしていた。技術的な質問があれば答えられる :)
ただ、ここではレイテンシが大きな問題で、いつものようにMVPに到達するため最適化の優先度は下げていた。
なので、Cinderをリアルタイムデータストリーミングの最適化に使えるのか、それともこういう質問自体がユースケースを理解していないことを意味するのか気になる。
ちなみにDjangoも使っていたが、今になってFastAPIに替えるべきだったのかとも思う。それは別の質問だ
ロールアウトについてもっと詳しく知りたい。毎時 100万人をはるかに超える新規ユーザー が追加されていて、かなりすごい
それでも、聞いてみたい興味深い詳細は確実にたくさんあるはずだ
新規ユーザーが数百万人増える程度では全体の0.1%にも満たない。十分に予測可能な変動範囲内だ
https://github.com/twitter/the-algorithm/pull/447 は絶対に忘れてはならない
ThreadsはInstagramのバックエンド/APIを再利用したものだ。Instagramは最初から Pythonベース だったので、ThreadsもPythonを使うことになった。
だからといって、社内フォークを必要としない代替案がある状況で、この種のアプリを新しく作る際にPythonを選ぶべきだという意味ではない。本文全体を見ればかなり簡単に分かるが、Hacker Newsの「見出しだけを見る」UIが話を歪めている気がする