システム設計の面接試験

システム設計の面接試験の表紙
著者:
アレックス・シュウ
ISBN:
9784802614061

なぜ注目されているか

総合11位 ↑ 5 ランクアップ 言及 1 件

技書の森解説

大規模な Web サービスの設計を、面接で出される設計問題とその解答例を通して身につけるための一冊が『システム設計の面接試験』です。著者はアレックス・シュウ (Alex Xu)、訳はイノウで、ソシムから 2023 年 3 月に刊行されました。原題は SYSTEM DESIGN INTERVIEW です。版元は、システム設計には従うべき一定のパターンが無いため習得が難しい一方で、IT エンジニアが日常的に求められる作業であることから、システム設計の面接試験が米国で広く採用されていると紹介しています。本書はその面接で問われる問題を出題し、回答を解説する形で設計力を養う構成です。

全 16 章の構成、土台の 3 章と 12 の設計課題

目次は、はじめにと 16 の章、おわりにで構成されています。1 章「ユーザー数ゼロから数百万人へのスケールアップ」、2 章「おおまかな見積もり」、3 章「システム設計の面接試験のフレームワーク」の 3 章は、個別の課題に入る前の土台に当たると読めます。4 章から 15 章までは章題がすべて「〜の設計」で、レートリミッター、コンシステントハッシュ、キーバリューストア、分散システムにおけるユニーク ID ジェネレーターと続いたあと、URL 短縮サービス、Web クローラ、通知システム、ニュースフィードシステム、チャットシステム、検索オートコンプリートシステム、YouTube、Google ドライブへ進みます。前半の 4 題は他の大きなサービスの部品になりうる仕組みで、後半の 8 題は利用者から見えるサービス全体を扱う並びです。最後の 16 章は「学習は続く」と題されています。

正解の無い設計を、見積もりと手順で組み立てる

システム設計が難しいのは、正解が 1 つに決まらず、読み書きの比率、許容できる遅延、データ量の伸び方といった条件によって最適な形が変わるからです。そのため面接でも実務でも、最初に要件と規模を確かめ、おおよその数字を見積もってから構成を描くという手順そのものが評価の対象になります。2 章の見積もりと 3 章のフレームワークが課題の前に置かれているのは、この手順を先に共有するためと読めます。課題の側で扱われる仕組みは、どれも大規模化で必ず突き当たる論点です。サーバーの台数を増やす 水平スケーリング では、データをどのノードに置くかが問題になり、ノードの増減で再配置を最小限に抑える コンシステントハッシュ がその代表的な答えになります。利用者ごとのリクエスト数に上限を設ける レート制限 も、アルゴリズムの選び方とカウンターを複数のサーバーでどう共有するかが設計の分かれ目です。こうした部品の考え方を先に身につけておくと、後半のサービス設計で何を組み合わせればよいかが見えやすくなります。

面接対策と実務の設計レビュー、向く読者の前提知識

書名のとおり想定の場面は採用面接ですが、要件を確かめてから規模を見積もり、構成案を示して論点を詰めるという流れは、実務の設計レビューにもそのまま通じます。外資系企業の面接を控えた人はもちろん、Web アプリケーションの開発には慣れたものの、利用者が桁違いに増えたときに構成をどう変えるかを考えた経験が無い人に向いています。データベース、キャッシュ、ロードバランサといった Web システムの基本的な構成要素を一通り知っていると読み進めやすいはずです。逆に、特定のクラウドサービスでの構築手順を学びたい人や、複製や一貫性の理論を深く掘り下げたい人には目的がずれます。後者には『データ指向アプリケーションデザイン』 (オライリー・ジャパン) のような、分散データシステムの原理を正面から扱う本を組み合わせるのが合っています。

設計の議論で「まず何を聞き、何を見積もるか」の型を持たないまま大きなシステムに関わっている人にとって、12 の具体的な課題で同じ手順を繰り返し確かめられる本書は、面接の準備と実務の両方で元が取りやすい一冊です。

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: