Yuki Watanabe's Blog

Yuki Watanabe's Blog

エンジニアリングと子育てについて

『System Design Interview』を読んだ

『System Design Interview – An insider's guide』(以下、System Design Interview)を読んだ。この書籍は転職面接の対策本*1ではあるものの、システム設計の学習用途として非常に有用だったので、感想を書く。

なお、最近日本語訳版が発売されたが、今回は原著の感想となる。

読み初めの動機

本書を読み始めた動機は、さまざまなシステムの設計を学びたいと考えたからだ。

目次を見るとわかるが、Chapter4~Chapter16はすべてシステムデザインに関して記載されている。YouTubeGoogle Driveなど面白そうなテーマが扱われており興味を持った。

Chapter 1: Scale From Zero To Millions Of Users
Chapter 2: Back-of-the-envelope Estimation
Chapter 3: A Framework For System Design Interviews
Chapter 4: Design A Rate Limiter
Chapter 5: Design Consistent Hashing
Chapter 6: Design A Key-value Store
Chapter 7: Design A Unique Id Generator In Distributed Systems
Chapter 8: Design A Url Shortener
Chapter 9: Design A Web Crawler
Chapter 10: Design A Notification System
Chapter 11: Design A News Feed System
Chapter 12: Design A Chat System
Chapter 13: Design A Search Autocomplete System
Chapter 14: Design Youtube
Chapter 15: Design Google Drive
Chapter 16: The Learning Continues

感想

やはり良かった点は、様々なシステムの設計を知れること。 興味のあるChapterから読み進めたが、どのChapterも面白く結局全て読み通した。

例えば、Chapter 12ではチャットシステムを実現するために次の機構が紹介されていたが、Long Pollingは初めて知る用語であり、知識の幅を増やすことができた。

  • Polling
  • Long Polling
  • Web Socket

構成として、はじめはシンプルな設計を紹介し概要を示してから、Deep Diveと称して可用性やスケーラビリティ、エラーハンドリングなどを考慮して設計を磨いていくスタイルとなっている。図が豊富に使われていて都度理解しながら読むことが出来た。

次に、英語が非常に平易であり読みやすい。構文解釈に時間が取られず読み進められたため、英語ではあるが時間あたりの学習効率は日本語とさほど変わらなかった。

今後

『System Design Interview』はとにかく面白い本だった。続編となるVolume2も読みたいとは思っているが、電子版が無いのが難点であり、まだ手が出せていない。

同内容のウェブコンテンツである、ByteByteGoの方も面白そうではある。 FinTech領域に身をおいているため、Payment SystemやDigital Walletの設計はあまりにも興味深い。 bytebytego.com

*1:現状転職をする予定は全くない