お盆を過ぎたのにぜんぜん涼しくなかった木曜日と「システム設計の面接試験」を読んでの感想

今日も出社の日だったので朝から徒歩通勤でしたが、昨日よりもだいぶ日差しが強くて暑かったです。

朝から汗だくです。お盆を過ぎたら涼しくなるかと思ってましたがまだまだぜんぜんです。

今日も終日会議だなんだと忙しく1日が過ぎていきました。

帰り道に昨日カエルを見つけた自動販売機をちらっと見たらまたカエルがいました。なんだか得した気分です。

さて。先日「システム設計の面接試験」という本を読みました。

本書は、面接試験の場で「こういうシステムを作るとしたらどういう設計にするのか?」とお題を出されたときの対応を模擬的に描くことでシステム設計の考え方や議論の進め方への理解を深めようという内容です。Web/AP/DBというよくあるアーキテクチャをスケールさせる工夫に始まり、どうやって作ったらいいのか想像できないようなものまで幅広く紹介されていてとてもおもしろかったです。自分はシステム設計というかこういったアーキテクチャにはそこそこ明るいつもりでしたが本書にはまったくやったことのないものもたくさん紹介されていてとても参考になったし、自分ではそこそこ詳しいつもりでも普段の仕事でやっている範疇に知識が偏っていて世間的にはぜんぜん詳しい部類には入れていなかったことを改めて思い知りました。

そんなとてもよかった本書の中でも、とくによかったのは第6章のキーバリューストアの設計の話でした。

5年くらい前にgRPCがとても気に入っていた時期があったので、仕事の空いている時間を使ってRedisのCLIと互換性のあるキーバリューストアを作ったことがあります。
個人的にはかなりいい感じに作れたので満足したのですが、分散システムの仕組みへの理解が足りくて結局1サーバーで動作するものしか作れませんでした。Redisのソースコードを読んで分散システムにしようとしていたのですが、もともとが仕事の合間にやっていたことなのでなかなかすすまなくて結局1サーバーでのみ動くままになっていました。いつか分散システムにしたいなと思っていたのですが、本書の第6章にはその分散化への道すじというか1つの案が載っていてとても参考になりました。しばらく寝かせていたのでもうどういうソースコーなのか思い出せないし、仕事中にこんなものを作っている暇も最近はあまりないので今度は別のプログラミング言語で個人で分散KVSを作ってみようと思います。

というわけでもともと読んだ人の評判が良かったこともあって期待していましたが読んだら期待以上の1冊でした。