SYSTEM DESIGN INTERVIEW Chapter11 DESIGN A NEWS FEED SYSTEMの感想・まとめ
はじめに
引き続きもSYSTEM DESIGN INTERVIEWを読みつつ感想とまとめを書いていきます。今回はタイムラインです。最近興味があったのが「どうやってスケーラブルなタイムラインを設計するか?」だったので楽しく学ぶことができました。では早速やっていきます。
概要
Twitterみたいなサービスを想定してのお話になります。ユーザーに投稿を配信する・タイムラインを構築するサービスをFanoutサービスと呼ぶらしいんですが、それらには主に二種類の投稿する機能とタイムラインを構築する機能があると言っています。前者については、ある程度想像しやすいので省略して後者のことについて書いていきます。(詳しくは上記の書籍をみてください)
タイムラインの更新頻度などの制約によって、タイムライン構築タイミングは二種類あるとのことで、投稿タイミングで逐次タイムラインを構築するFanout on writeかユーザーがタイムラインを読み込んだタイミングで逐次タイムラインを構築するFanout on readがあるとのことでした。
今のいわゆるSNSのタイムラインはFanout on writeになるかなぁと思いつつそれらをどうやって構築するのかがわかりやすく概念図で使って説明されていました。あとはRedisを使いつつ、投稿のIDだけを持つようなリストをつくればよいので割とわかってしまえばシンプルかなという気はします。(それを実際に構築するのはかなり大変だと思いますが
所感
もちろん実装レベルには落とし込まれていないですが、これを元に調べていけばまともなタイムラインを設計できそうな気がしたので読んでよかったです。
あと追加で以下動画や資料を読んだのですが、これらも補足すればより理解が進む気がします。
一番上のRedisの資料は一番実装に近い情報が得られるかなと思うので実際に作ることになったらみてみることをオススメします。