Twitter を作るのはなぜ難しいのか

アーキテクチャオタクらしくアーキテクチャの話をします。 前: https://togetter.com/li/1975837
253
Fumihiko Shiroyama @fushiroyama

父、博士課程 Senior Software Engineer @Microsoft 👨🏻‍💻 / ex-@amazon All opinions are my own.

note.com/fushiroyama/

Fumihiko Shiroyama @fushiroyama

Twitterみたいな緩いつながり、TLひとつ実装するだけでも普通のウェブシステムみたいなクエリでは取れなくてちょっと考えれば非常に複雑なシステムであることは明白だし、システムアーキテクチャの試験の定番トピックだったりするので「誰でも作れる」とか「簡単」みたいなのはご指摘申し上げたくなる

2022-11-22 02:16:50
Fumihiko Shiroyama @fushiroyama

昔つぶやきましたが例えばこの記事を読むと分かりやすいです。 twitter.com/fushiroyama/st… "Grokking the system design interview" にもTwitterクローンを作る的なのがあった気がします。とにかくsimplifyしてもまだとても難しい。どうやって今の状態を支えているのか本当に頭が下がります。

2022-11-22 02:28:14
@fushiroyama

秒間120万つぶやきを処理、Twitterシステムの“今” - @IT atmarkit.co.jp/news/201004/19… Clubhouseで話したのこれです。10年前のTwitterのアーキテクチャだけど初めて読んだ時は割と感動した。 秒間120万レコードずつ増えるシステムから自分の最新つぶやき20件をどう表示するか考えながら読んで欲しい☺️

2021-03-17 11:57:55
Fumihiko Shiroyama @fushiroyama

秒間120万つぶやきを処理、Twitterシステムの“今” - @IT atmarkit.co.jp/news/201004/19… Clubhouseで話したのこれです。10年前のTwitterのアーキテクチャだけど初めて読んだ時は割と感動した。 秒間120万レコードずつ増えるシステムから自分の最新つぶやき20件をどう表示するか考えながら読んで欲しい☺️

2021-03-17 11:57:55
Fumihiko Shiroyama @fushiroyama

実はこういう、素直にテーブル設計すると絶対にスケールしないアーキテクチャに関する問題は米テック企業のシステム設計の面接で好んで出題されたりする。 Grokking the System Design Interview という有料のコースにはこういう良問が沢山あるのでおすすめ。

2021-03-17 12:00:14
Yuta Okamoto @okapies

で、その後の10年でさらに増え続けたトラフィックに対して2010年のアーキテクチャですらナイーブで、既成の要素技術では間に合わず、彼らのシステムの要件に合う専用のデータベースシステムを内製することまでしている。それが、例の図に名前が登場している Manhattan。 wired.com/2014/04/twitte… twitter.com/fushiroyama/st…

2022-11-22 09:41:30
Alex Xu @alexxubyte

Twitter Architecture 2022 vs. 2012. What’s changed over the past 10 years? Thank you, @elonmusk for the transparency. {1/2} pic.twitter.com/Fvbn7EDoOS

2022-11-20 01:42:44
拡大
Yuta Okamoto @okapies

なお、たかだか一プロダクトのために専用のデータベースシステムを内製するというのは、一般的には正気の沙汰ではない。Wired の記事に載ってる三人は、おそらく「コアエンジニア」なんて気軽な表現では間に合わないような方たちだと思う。 wired.com/2014/04/twitte…

2022-11-22 09:54:28
リンク WIRED This Is What You Build to Juggle 6,000 Tweets a Second When you open the Twitter app on your smartphone and all those tweets, links, icons, photos, and videos materialize in front of you, they're not coming from one place. They're coming from thousands of places. 1 user
Yuta Okamoto @okapies

2022年現在の Manhattan の守備範囲がどこまでか、というのはちょっとよく分からないんだけど、分かりやすく言うと、おそらく「バルスで落ちない Twitter」の中核を担う要素技術の一つだと思われる。

2022-11-22 10:08:23
Yuta Okamoto @okapies

Twitter のようなシステムを大規模に作る時の基本的な課題意識として、まず、最低限、この記事に書かれていることを踏まえる必要があって、その上で、これがさらに10倍100倍とスケールしていった時に高い耐障害性と運用性をどう実現するか、という課題に応えてきたのが現在。 atmarkit.itmedia.co.jp/news/201004/19…

2022-11-22 10:15:22
Yuta Okamoto @okapies

この手のワークロードを処理するノウハウを確立するために最先端のソフトウェアエンジニアたちが日々奮闘していた黎明期、そこから生まれた要素技術がまだ未成熟だった頃に起きた地獄絵図として有名なスライド。 slideshare.net/TakehiroToriga…

2022-11-22 17:09:52
Yuta Okamoto @okapies

補足すると、Twitter も当初はこの Cassandra を使おうとしていたが、おそらくいろいろあったんでしょう。で、結果的にこれが Manhattan に置き換えられた。 twitter.com/okapies/status…

2022-11-23 15:21:32
chokudai(高橋 直大)@AtCoder社長 @chokudai

AtCoder(株)代表取締役社長(競技プログラミングの会社)/競プロ世界ランカー(GoogleHashCode優勝、ICFPC優勝4回等)/筑駒中高→慶應SFC卒/たこやき/ぷよぷよ/オメスト/まゆドリフ全一/チュウニズム虹レ/NewsPicksプロピッカー@chokudai_picks/サブ:@chokudai_s

chokudai.net

chokudai(高橋 直大)@AtCoder社長 @chokudai

よく「なんでTwitterは生TLを流すという当たり前のことをしてくれないんだ!」みたいなのを見るけど、「生TLを流すのって技術的にめちゃめちゃ難しいので全く当たり前じゃなくない……?」って思ってしまう。 よくTweetDeck生きてるなーって思ってる。

2022-11-22 15:42:03
SSRS @SSRS_cp

@chokudai どのような理由で難しいですか

2022-11-22 15:42:40
chokudai(高橋 直大)@AtCoder社長 @chokudai

@SSRS_cp Twitterの月間アクティブユーザが3.3億とからしいので、頂点数3.3億、辺は適当に100億くらい?のクエリに高速に答えないとダメで、サーバー分割とかするとどう並列に動かすかとかがむずかしい!

2022-11-22 15:44:30
chokudai(高橋 直大)@AtCoder社長 @chokudai

@SSRS_cp 雑に考えて、各ユーザのTLにpushする方式と、読み込んだ時にpullする方式が考えられるんだけど、pullする方式だとリアルタイムにTL更新するとかは無理だし、pushする方式だと自分がツイートするたびにめっちゃpush走ってヤバそう、みたいなのが容易に考えられるよね。

2022-11-22 15:47:44
Yuta Okamoto @okapies

初期の頃に、中の人が「ナイーブに実装したら100万フォロワーのセレブがツイートするたびに100万ユーザーのタイムラインに push が走ってシステムが落ちまくって大変だったんですよ」って話してる記事があった覚えがある。 twitter.com/chokudai/statu…

2022-11-22 21:06:13
Yuta Okamoto @okapies

もし、もう少し初期の Twitter について詳しい話が知りたい人はこの記事もいいかも。だいぶ話が複雑になってきているが、これでも2013年頃。例の図に出てくるサブシステムのいくつかは、すでにこの時期には登場している。 highscalability.com/blog/2013/7/8/… pic.twitter.com/2z8KVonYQF

2022-11-22 22:44:43
拡大
リンク highscalability.com The Architecture Twitter Uses to Deal with 150M Active Users, 300K QPS, a 22 MB/S Firehose, and Send Tweets in Under 5 Seconds - Toy solutions solving Twitter’s “problems” are a favorite scalabi... 47 users 1138
Yuta Okamoto @okapies

2013年のこの記事ですら、こういう書き出しで始まっている。「Twitterの『問題』を解決するオモチャの解決法を考えるのはスケーラビリティあるあるだ。誰もがTwitterは簡単で、少し手を振ればスケーラブルなTwitterができると思っている。だが、VPoEのRaffi Krikorianにとってはそうではないようだ。」

2022-11-22 22:55:21
Yuta Okamoto @okapies

雑な言い方をすると、なにかをバラまいたり集約したりするのを、あらゆる規模で効率的にやる方法って自明じゃないんですよね。

2022-11-22 23:18:34