Fumihiko Shiroyama@fushiroyama父、博士課程Software Development Engineer@Adobe / ex-@Microsoft, ex-@amazonAll opinions are my own.amazonアソシエイト参加中
Fumihiko Shiroyama@fushiroyamaTwitterみたいな緩いつながり、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システムの“今” -@ITatmarkit.co.jp/news/201004/19… Clubhouseで話したのこれです。10年前のTwitterのアーキテクチャだけど初めて読んだ時は割と感動した。秒間120万レコードずつ増えるシステムから自分の最新つぶやき20件をどう表示するか考えながら読んで欲しい☺️
2021-03-17 11:57:55
Fumihiko Shiroyama@fushiroyama秒間120万つぶやきを処理、Twitterシステムの“今” -@ITatmarkit.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@alexxubyteTwitter 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
Yuta Okamoto@okapies2022年現在の Manhattan の守備範囲がどこまでか、というのはちょっとよく分からないんだけど、分かりやすく言うと、おそらく「バルスで落ちない Twitter」の中核を担う要素技術の一つだと思われる。
2022-11-22 10:08:23
Yuta Okamoto@okapiesTwitter のようなシステムを大規模に作る時の基本的な課題意識として、まず、最低限、この記事に書かれていることを踏まえる必要があって、その上で、これがさらに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優勝7回等)/たこやき/ぷよぷよ/ブルアカ(ホシノ推し)/チュウニズム虹レ/筑駒中高→慶應SFC卒/NewsPicksプロピッカー/sub:@chokudai_s
chokudai(高橋 直大)@AtCoder@chokudaiよく「なんでTwitterは生TLを流すという当たり前のことをしてくれないんだ!」みたいなのを見るけど、「生TLを流すのって技術的にめちゃめちゃ難しいので全く当たり前じゃなくない……?」って思ってしまう。よくTweetDeck生きてるなーって思ってる。
2022-11-22 15:42:03
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
Yuta Okamoto@okapies2013年のこの記事ですら、こういう書き出しで始まっている。「Twitterの『問題』を解決するオモチャの解決法を考えるのはスケーラビリティあるあるだ。誰もがTwitterは簡単で、少し手を振ればスケーラブルなTwitterができると思っている。だが、VPoEのRaffi Krikorianにとってはそうではないようだ。」
2022-11-22 22:55:21あわせて読みたい

佐々木俊尚さんsasakitoshinaoの「まったく周知されていない現状。啓発活動だけじゃ無理だと思うな。かさ上げした専用帯をつくるとかしないと。/「自転車は左」浸透せず…なくならない“逆走”」
3616 users164マイクロサービスアーキテクチャ読書会#1まとめ
2111 user作者のオススメ
アーキテクチャオタクが Twitter の内情について妄想を垂れ流す
okapies256316361 users16「アニメ顔の理想は白人」というのは全く事実と異なる、という話
okapies878015 users「NFTとは何ではないか」の後に調べたこと
okapies332055 users33DI に DI コンテナは不要か?
okapies351 userDI に DI コンテナは不要か?(その後)
okapies22 users