
父、博士課程 Software Development Engineer @Adobe / ex-@Microsoft, ex-@amazon All opinions are my own. amazonアソシエイト参加中

Twitterみたいな緩いつながり、TLひとつ実装するだけでも普通のウェブシステムみたいなクエリでは取れなくてちょっと考えれば非常に複雑なシステムであることは明白だし、システムアーキテクチャの試験の定番トピックだったりするので「誰でも作れる」とか「簡単」みたいなのはご指摘申し上げたくなる
2022-11-22 02:16:50
昔つぶやきましたが例えばこの記事を読むと分かりやすいです。 twitter.com/fushiroyama/st… "Grokking the system design interview" にもTwitterクローンを作る的なのがあった気がします。とにかくsimplifyしてもまだとても難しい。どうやって今の状態を支えているのか本当に頭が下がります。
2022-11-22 02:28:14
秒間120万つぶやきを処理、Twitterシステムの“今” - @IT atmarkit.co.jp/news/201004/19… Clubhouseで話したのこれです。10年前のTwitterのアーキテクチャだけど初めて読んだ時は割と感動した。 秒間120万レコードずつ増えるシステムから自分の最新つぶやき20件をどう表示するか考えながら読んで欲しい☺️
2021-03-17 11:57:55
秒間120万つぶやきを処理、Twitterシステムの“今” - @IT atmarkit.co.jp/news/201004/19… Clubhouseで話したのこれです。10年前のTwitterのアーキテクチャだけど初めて読んだ時は割と感動した。 秒間120万レコードずつ増えるシステムから自分の最新つぶやき20件をどう表示するか考えながら読んで欲しい☺️
2021-03-17 11:57:55
実はこういう、素直にテーブル設計すると絶対にスケールしないアーキテクチャに関する問題は米テック企業のシステム設計の面接で好んで出題されたりする。 Grokking the System Design Interview という有料のコースにはこういう良問が沢山あるのでおすすめ。
2021-03-17 12:00:14
で、その後の10年でさらに増え続けたトラフィックに対して2010年のアーキテクチャですらナイーブで、既成の要素技術では間に合わず、彼らのシステムの要件に合う専用のデータベースシステムを内製することまでしている。それが、例の図に名前が登場している Manhattan。 wired.com/2014/04/twitte… twitter.com/fushiroyama/st…
2022-11-22 09:41:30
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

なお、たかだか一プロダクトのために専用のデータベースシステムを内製するというのは、一般的には正気の沙汰ではない。Wired の記事に載ってる三人は、おそらく「コアエンジニア」なんて気軽な表現では間に合わないような方たちだと思う。 wired.com/2014/04/twitte…
2022-11-22 09:54:28
2022年現在の Manhattan の守備範囲がどこまでか、というのはちょっとよく分からないんだけど、分かりやすく言うと、おそらく「バルスで落ちない Twitter」の中核を担う要素技術の一つだと思われる。
2022-11-22 10:08:23
Twitter のようなシステムを大規模に作る時の基本的な課題意識として、まず、最低限、この記事に書かれていることを踏まえる必要があって、その上で、これがさらに10倍100倍とスケールしていった時に高い耐障害性と運用性をどう実現するか、という課題に応えてきたのが現在。 atmarkit.itmedia.co.jp/news/201004/19…
2022-11-22 10:15:22
この手のワークロードを処理するノウハウを確立するために最先端のソフトウェアエンジニアたちが日々奮闘していた黎明期、そこから生まれた要素技術がまだ未成熟だった頃に起きた地獄絵図として有名なスライド。 slideshare.net/TakehiroToriga…
2022-11-22 17:09:52
補足すると、Twitter も当初はこの Cassandra を使おうとしていたが、おそらくいろいろあったんでしょう。で、結果的にこれが Manhattan に置き換えられた。 twitter.com/okapies/status…
2022-11-23 15:21:32
競技プログラミングの会社の社長です! AtCoder(株)代表取締役社長/競プロ世界ランカー(GoogleHashCode優勝、ICFPC優勝7回等)/たこやき/ぷよぷよ/ブルアカ(ホシノ推し)/チュウニズム虹レ/筑駒中高→慶應SFC卒/NewsPicksプロピッカー/sub:@chokudai_s

よく「なんでTwitterは生TLを流すという当たり前のことをしてくれないんだ!」みたいなのを見るけど、「生TLを流すのって技術的にめちゃめちゃ難しいので全く当たり前じゃなくない……?」って思ってしまう。 よくTweetDeck生きてるなーって思ってる。
2022-11-22 15:42:03
@SSRS_cp Twitterの月間アクティブユーザが3.3億とからしいので、頂点数3.3億、辺は適当に100億くらい?のクエリに高速に答えないとダメで、サーバー分割とかするとどう並列に動かすかとかがむずかしい!
2022-11-22 15:44:30
@SSRS_cp 雑に考えて、各ユーザのTLにpushする方式と、読み込んだ時にpullする方式が考えられるんだけど、pullする方式だとリアルタイムにTL更新するとかは無理だし、pushする方式だと自分がツイートするたびにめっちゃpush走ってヤバそう、みたいなのが容易に考えられるよね。
2022-11-22 15:47:44
初期の頃に、中の人が「ナイーブに実装したら100万フォロワーのセレブがツイートするたびに100万ユーザーのタイムラインに push が走ってシステムが落ちまくって大変だったんですよ」って話してる記事があった覚えがある。 twitter.com/chokudai/statu…
2022-11-22 21:06:13
もし、もう少し初期の Twitter について詳しい話が知りたい人はこの記事もいいかも。だいぶ話が複雑になってきているが、これでも2013年頃。例の図に出てくるサブシステムのいくつかは、すでにこの時期には登場している。 highscalability.com/blog/2013/7/8/… pic.twitter.com/2z8KVonYQF
2022-11-22 22:44:43

2013年のこの記事ですら、こういう書き出しで始まっている。「Twitterの『問題』を解決するオモチャの解決法を考えるのはスケーラビリティあるあるだ。誰もがTwitterは簡単で、少し手を振ればスケーラブルなTwitterができると思っている。だが、VPoEのRaffi Krikorianにとってはそうではないようだ。」
2022-11-22 22:55:21
雑な言い方をすると、なにかをバラまいたり集約したりするのを、あらゆる規模で効率的にやる方法って自明じゃないんですよね。
2022-11-22 23:18:34