#book #wip ![image](https://gyazo.com/48f559a560e6000d8f300fa251e5a3ae/thumb/1000) [https://amzn.to/34G2vmC](https://amzn.to/34G2vmC) # なぜこの本を読んだか # 何が書かれている本か System Design Interview (いわゆるシステム設計面接) の問題例と解答が書かれている本 # メモ すべての問題が以下のフォーマットに合わせて回答例を書いていく形式になっていてまずそのフォーマットが素晴らしかったのでそれを紹介する。 also see [https://bytebytego.com/courses/system-design-interview/a-framework-for-system-design-interviews](https://bytebytego.com/courses/system-design-interview/a-framework-for-system-design-interviews) ### Step 1 - Understand the problem and establish design scope 問題が与えられることはなく与えられるのは「設定」だけなのでどんな制約があるかを聞いて問題を理解する必要がある。 e.g. - Daily Active User はどれくらいか - データ総数はどれくらいか - システムのレスポンスタイムはどれくらいを許容するか - 仕様としてどこまで厳密さを求めるかなど ### Step 2 - Propose high-level design and get buy-in Load Balancer の配置やAPIなど概ねの通信形式やシステムの概要を作る 例えば、RDBを利用するのか Redis のような KVS を利用するのかなど。 またサービスの分解などもこのタイミングでラフに行い、どことどこが通信するのかなども考える。 ### Step 3 - Design deep dive 採用するモデルやアルゴリズムなどを決めたり、制約を満たすための技術的工夫を議論したりする。 Step2 で作った概要をさらに掘れるだけ掘っていくイメージ ### Step 4 - Wrap up システム概要図を改めて書くなど今までの総括をする # 感想