ホーム/ システム設計

システム設計

システム設計

URL短縮・レートリミッタ・ニュースフィード・チャット・決済… 有名サービスの設計を、要件→規模見積もり→構成→トレードオフで解剖する。

操作して学ぶ

レートリミッタ可視化 — 3方式を動かして体感

トークン/リーキーバケット・スライディングウィンドウを実アルゴリズムでシミュレーション。バースト連打で 429 がどう出るか。

Raft合意シミュレータ — リーダー選出と障害復旧を動かす

5ノードで選挙・ログ複製・コミットを可視化。リーダーを落として再選出、コマンド送信で複製を観察。

操作して学ぶ

2相コミット(2PC)可視化 — なぜブロッキングが起きるのか

コーディネータ+3参加者DBのシーケンス図。正常系・アボート系に加え、コーディネータ障害でロックが解けなくなる様子も再生。

操作して学ぶ

Paxos合意アルゴリズム可視化 — 競合しても値が1つに収束する理由

Proposer2+Acceptor3のシーケンス図。正常系・2 Proposerの競合系・既存値を引き継ぐ再提案系を切替可能。

操作して学ぶ

ベクタークロック可視化 — 「並行」を積極的に検出する

3ノードのシーケンス図。因果の連鎖・happened-beforeが無い並行系・分散DBのコンフリクト検知を切替可能。

ロードバランシング可視化 — 6つの分散方式を動かして比べる

ラウンドロビン・最少コネクション・IPハッシュ・Power of Two Choices…。負荷を流して分散の均等さを目で確かめる。

コンシステントハッシュ可視化 — ノード追加でも再配置は最小

リング上にノードとキーを配置。ノードを足しても動くキーは黄色枠のわずかだけ。hash%Nとの差と仮想ノードの効果を体感。

CRDT可視化 — 調整なしで複製が収束する仕組み

3つのレプリカを独立に増減し、同期すると必ず同じ値に。可換・結合的・冪等なマージが収束を保証する。

リトルの法則シミュレータ — L=λWで必要な並列度を求める

スループット・レイテンシ・同時実行数の3方向ソルバー。ポアソン到着の実測が理論値へ収束する様子も見える。

クォーラム N/R/W 可視化 — R+W>N で古い値が消える

レプリカ数と定足数を動かして実際に読み書き。重なりが保証される境界と、ノードを落としたときの耐障害性を体感。

指数バックオフとジッタ可視化 — リトライストームを崩す

固定間隔・指数バックオフ・Full/Equal/Decorrelated Jitter の5方式を同条件で同時シミュレーション。

解説記事

設計解説

要件と規模の見積もり→大枠の設計→主要コンポーネントの深掘り→トレードオフ。面接でもそのまま使える流れで。

3つの要点応用

URL短縮サービスの設計

長いURLを短い鍵に変換するTinyURL型サービスを、規模見積もりから鍵生成・リダイレクト・キャッシュ・KVストアまで一気通貫で設計でき、面接でも実務でも通用する判断根拠が身につく。

3つの要点応用

Webクローラーの設計

数十億ページを礼儀正しく集める設計を、URLフロンティア・重複排除・分散協調まで一気につかめます。面接で問われる規模見積もりとトレードオフの答え方も身につきます。

3つの要点応用

チャット/メッセージングの設計

億単位の常時接続をさばくチャット基盤を、WebSocketのプレゼンス、既読・配信状態、メッセージ順序、オフライン配信、接続サーバーのルーティングまで一気に設計できるようになる。

3つの要点応用

ニュースフィード/タイムラインの設計

フォロワー1億人でも数十msでタイムラインを返す秘訣を、プッシュ/プル/ハイブリッドの使い分けと書き込み増幅の桁感から具体的につかめる。

3つの要点応用

フェルミ推定と数字感覚 ─ 1台のサーバーは何RPS捌けるか

「何台必要か」「何TB要るか」をその場で言えるようになる。暗記すべき基準値は10個ほどで足り、日次リクエスト数から台数・ストレージ・バッチ所要時間までを一貫した手順で概算できる。

3つの要点応用

レートリミッタの設計

APIの過負荷・不正利用・コスト暴発を防ぐレートリミッタを、面接でも実務でも通用する形で設計できるようになる。アルゴリズム選定から分散カウンタ共有、Luaによるレース回避、429応答の作法までを一気通貫で解説する。

3つの要点応用

決済システムの設計

お金は1円もズレが許されない。二重支払いを冪等キーで止め、台帳のダブルエントリで残高を守り、Sagaと補償で外部連携の失敗を巻き戻す設計を、面接の解答手順そのままで学べる。

3つの要点応用

検索オートコンプリートの設計

1文字ごとに数十msで候補を返すオートコンプリートを、トライ木・上位k件の事前計算・人気度集計パイプラインから設計する。分割とタイポ許容まで実務目線で押さえる。

3つの要点応用

通知システムの設計

プッシュ・SMS・メールを1本のAPIで束ね、億通のファンアウトでも重複なく届く通知基盤を設計できるようになる。プロバイダ抽象化・優先度キュー・冪等な再送・オプトアウトまでを一気通貫で解説する。

3つの要点応用

動画配信システムの設計

YouTubeやNetflix級の配信をどう組むか、アップロードからトランスコード・アダプティブ配信・CDN・規模見積もりまで、面接で通る解答の型で押さえられる。

3つの要点応用

分散KVストアの設計

AmazonのDynamoに倣い、単一障害点なく無限にスケールするKVストアを設計する道筋が分かる。一貫性ハッシュ・クォーラム・ベクタークロックの噛み合わせを面接の解答手順として押さえられる。

3つの要点応用

分散キャッシュの設計

秒間数十万リクエストをDBに落とさず捌く分散キャッシュを、配置戦略から一貫性ハッシュ、スタンピード対策まで面接の解答手順で設計しきれる。

3つの要点応用

分散ユニークID生成の設計

採番のたびにDBへ問い合わせず、衝突ゼロでソート可能なIDを毎秒数十万件量産できる。Snowflakeの64bit配分・UUID各版・時計逆行対策までを設計面接の解答形式で押さえられる。