概念
システム設計の基礎概念を体系的に学べます。図解付きの詳細と腕試しクイズへ。
基礎概念
5性能 vs スケーラビリティ
「速さ」(性能)と「混んでも捌けること」(スケーラビリティ)は別問題。リソースを足した分だけ性能が伸びるなら、そのシステムはスケーラブルだと言える。
クイズ 10 問Performance vs Scalability
レイテンシ vs スループット
レイテンシは『1件を終えるまでの時間』、スループットは『単位時間あたりに捌ける件数』。一般に、許容できるレイテンシを保ちつつスループットを最大化することを目指す。
クイズ 2 問Latency vs Throughput
プログラマが知っておくべきレイテンシ数値
L1キャッシュ参照0.5nsから大陸間往復150msまで、各操作にかかる時間の桁感を覚えておくと、設計の概算見積もりが一瞬でできる。『メモリは速くディスクは遅い、同一DC内は速く大陸間は遅い』の桁を体に入れる。
クイズ 3 問Latency Numbers Every Programmer Should Know
2のべき乗表
2^10≒1千(1KB)、2^20≒100万(1MB)、2^30≒10億(1GB)、2^40≒1兆(1TB)という対応を覚えておくと、容量やデータ量の概算見積もりが暗算でできるようになる。コンピュータは2進数なので、10ビット増えるごとに約1000倍。
クイズ 4 問Powers of Two Table
概算見積もり
封筒の裏でやれる程度のざっくり計算で、QPS・ストレージ・帯域の規模感を素早く出す技術。『1か月≒250万秒』『40req/s≒1億req/月』などの換算を覚えておくと、システム設計面接で要件から必要リソースを即座に見積もれる。
クイズ 4 問Back-of-the-Envelope Calculation
一貫性と可用性
4CAP定理
ネットワークで複数台に分かれた分散システムでは、一貫性(C)・可用性(A)・分断耐性(P)の3つを同時には満たせず、最大2つしか選べない、という定理。
クイズ 9 問CAP Theorem
一貫性パターン
同じデータの複製(コピー)を複数持つとき、『いつ・どこまで最新が見えるか』を決める3つの方式。弱一貫性・結果整合性・強一貫性の順で、正確さは増すが速度・可用性は下がる。
クイズ 12 問Consistency Patterns
可用性パターン
システムを止めないための2大手法がフェイルオーバー(故障時に予備へ切替)とレプリケーション(複製)。故障しても誰かが肩代わりできる構成にして稼働率を上げる。
クイズ 18 問Availability Patterns
可用性の数字(9の数)
可用性は『99.9%』のように9の個数で表す。9が増えるほど許されるダウンタイムは激減する。直列はこの値を下げ、並列(冗長化)は上げる。
クイズ 5 問Availability in Numbers
ネットワーク
4ドメインネームシステム(DNS)
人間が覚えやすいドメイン名(www.example.com)を、機械が使うIPアドレス(93.184.216.34)に変換する『インターネットの電話帳』。階層的にキャッシュされて高速に動く。
クイズ 5 問Domain Name System (DNS)
コンテンツ配信ネットワーク(CDN)
世界中に分散したキャッシュサーバー網で、ユーザーに地理的に近い場所から画像・CSS・JS・動画などを配信する仕組み。速くなり、自前サーバーの負荷も減る。
クイズ 4 問Content Delivery Network (CDN)
ロードバランサー
大量のリクエストを複数のサーバーに振り分ける『交通整理係』。1台に集中させず分散することで、過負荷・単一障害点を防ぎ、水平スケールを可能にする。
クイズ 13 問Load Balancer
リバースプロキシ
内部のサーバー群を隠し、外部からは単一の窓口として振る舞うWebサーバー。セキュリティ向上・SSL処理・圧縮・キャッシュなどを一手に引き受ける。サーバー1台でも価値がある。
クイズ 4 問Reverse Proxy
アプリケーション層
3アプリケーション層の分離
Web層(表示)とアプリケーション層(処理)を分けることで、それぞれを独立にスケール・設定できるようにする設計。混雑している層だけを増強できる。
クイズ 10 問Application Layer
マイクロサービス
1つの大きなアプリを、独立してデプロイできる小さなサービス群に分割する設計。各サービスは1つの責務を持ち、別々に開発・スケール・障害分離できる。
クイズ 4 問Microservices
サービスディスカバリ
たくさんのサービスが動的に増減する環境で、『どのサービスがどこ(IP・ポート)にいるか』を自動で管理・案内する仕組み。Consul / Etcd / Zookeeper などが担う。
クイズ 3 問Service Discovery
データベース
13リレーショナルデータベース(RDBMS)
データを行と列のテーブルで管理し、トランザクションがACIDを満たすデータベース。整合性と複雑なクエリに強い。MySQL / PostgreSQL など。
クイズ 16 問Relational Database (RDBMS)
マスター・スレーブ レプリケーション
1台のマスターが書き込みを受け、その内容を複数のスレーブにコピー。スレーブは読み取り専用にして、大量の読み取りを分散する。読み取りが多いシステムに有効。
クイズ 0 問Master-Slave Replication
マスター・マスター レプリケーション
両方(以上)のマスターが読み書きを受け付け、互いに変更を同期し合う構成。片方が落ちても書き込みを続けられるが、書き込み競合の解決という難問が生じる。
クイズ 0 問Master-Master Replication
フェデレーション(機能別分割)
1つの巨大DBを、機能(役割)ごとに別々のDBへ分割する手法。例: ユーザー用DB、商品用DB、フォーラム用DB。各DBが小さくなり、読み書きとレプリ遅延が減る。
クイズ 5 問Federation (Functional Partitioning)
シャーディング(水平分割)
1つの巨大テーブルを行で分割し、複数のDB(シャード)に分散する手法。各シャードはデータの一部だけを持つ。例: 姓の頭文字や地域で分ける。書き込みもスケールできる。
クイズ 8 問Sharding
非正規化(デノーマライゼーション)
あえてデータの冗長なコピーを複数テーブルに持たせ、重いJOINを避けて読み取りを高速化する手法。読み取りが圧倒的に多いシステムで、書き込み性能を犠牲に読み取りを稼ぐ。
クイズ 5 問Denormalization
SQLチューニング
計測(ベンチマーク)とボトルネック特定(プロファイル)を起点に、スキーマ・インデックス・クエリを最適化してDBを速くする手法。新しいハードを足す前にまずやるべきこと。
クイズ 4 問SQL Tuning
NoSQL
リレーショナルでない4種(key-value / document / wide-column / graph)の総称。データは非正規化され、JOINはアプリで行う。多くは厳密なACIDより可用性・結果整合性(BASE)を優先する。
クイズ 10 問NoSQL
キー・バリュー ストア
『キーを渡すと値が返る』という最もシンプルなNoSQL。ハッシュテーブルが抽象モデルで、O(1)の超高速な読み書きができる。キャッシュやセッション保存の定番。
クイズ 0 問Key-Value Store
ドキュメントストア
キーに対して『ドキュメント』(JSON/XMLなどの構造を持つ塊)を値として格納するNoSQL。ドキュメントの中身でも検索でき、柔軟なスキーマを扱える。MongoDB / DynamoDB など。
クイズ 0 問Document Store
ワイドカラムストア
列(カラム)を基本単位とし、ネストしたマップでデータを表すNoSQL。超大規模・高可用に強く、巨大なデータセット向き。Bigtable / HBase / Cassandra が代表。
クイズ 2 問Wide-Column Store
グラフデータベース
ノード(点)とエッジ(線=関係)でデータを表すNoSQL。『友達の友達』のような複雑な関係をたどる処理に圧倒的に強い。SNSやレコメンドに最適。Neo4j など。
クイズ 0 問Graph Database
SQLとNoSQLの選択
整合性・複雑なクエリ・成熟度が要るならSQL、柔軟なスキーマ・超大規模・超高スループットが要るならNoSQL。用途で使い分ける(両方併用も普通)。
クイズ 5 問SQL or NoSQL
キャッシュ
3キャッシュの概要
よく使うデータを高速な場所(主にメモリ)に一時保存し、毎回元(DB)に取りに行かずに済ませる仕組み。表示を速くし、DB負荷を下げ、トラフィックの波を吸収する。
クイズ 0 問Caching Overview
キャッシュの場所と対象
キャッシュはクライアント・CDN・Webサーバー・DB・アプリの5か所に置ける。何をキャッシュするかは、行/クエリ単位/オブジェクト単位/レンダリング済みHTMLなど粒度の選択がある。
クイズ 9 問Cache Locations & What to Cache
キャッシュ更新戦略
キャッシュとDBをいつ・どう更新するかの4パターン。Cache-aside(遅延読み込み)、Write-through(同期書き込み)、Write-behind(非同期書き込み)、Refresh-ahead(先読み更新)。
クイズ 10 問Cache Update Strategies
非同期処理
3メッセージキュー
重い処理を後回しにするための『仕事の待ち行列』。ユーザーを待たせず受付だけ済ませ、裏のワーカーが順次処理する。リクエストの体感を速くする非同期処理の中核。
クイズ 12 問Message Queues
タスクキュー
タスクと関連データを受け取って実行し、結果を返す仕組み。スケジューリング(定期実行)に対応し、計算集約的なバックグラウンドジョブに向く。Celeryが代表。
クイズ 6 問Task Queues
バックプレッシャー
キューが溜まりすぎてシステムが崩壊するのを防ぐため、キューサイズに上限を設け、満杯なら受付を断る(503を返す)仕組み。処理能力を超える流入を抑えて全体を守る。
クイズ 3 問Back Pressure
通信プロトコル
5HTTP
クライアントとサーバーがデータをやり取りするための、リクエスト/レスポンス型のプロトコル。『動詞(GET等)+ リソース(URL)』で操作を表す。Web通信の土台。
クイズ 4 問HTTP
TCP
接続を確立してから通信する信頼性重視のプロトコル。全パケットが順序通り・破損なく届くことを保証する。代わりに少し遅い。Web/DB/メール等、確実さが大事な用途向き。
クイズ 5 問TCP
UDP
接続を確立せず、確認も再送もしない高速・低遅延のプロトコル。順序入れ替わりや欠落はありうる。音声・動画・ゲームなど『多少欠けても速さが命』の用途向き。
クイズ 0 問UDP
RPC(遠隔手続き呼び出し)
リモートのサーバー上の処理を、まるでローカルの関数を呼ぶように実行する方式。『振る舞い(操作)』を公開する。性能重視の内部通信でよく使われる。Protobuf/Thrift/gRPCなど。
クイズ 0 問RPC
REST
リソース(データ)を中心に据え、HTTPの標準的な仕組みでやり取りするアーキテクチャスタイル。ステートレスで疎結合なので、公開APIや水平スケールに向く。
クイズ 6 問REST
セキュリティ
11セキュリティの基礎
システム設計で最低限押さえるべきセキュリティの基礎4点。通信と保存の暗号化、入力のサニタイズ、パラメータ化クエリ、最小権限の原則。
クイズ 47 問Security Basics
OWASP Top 10
OWASP(世界中の専門家が運営する非営利団体)がまとめた『Webアプリで最も危険な脆弱性ワースト10』。2021年版が現行で、面接では『A01は何?』『この攻撃はどのカテゴリ?』と問われやすい定番リスト。
クイズ 18 問OWASP Top 10
認証 vs 認可
認証(AuthN)は『あなたは誰か』を確認すること、認可(AuthZ)は『あなたは何をしてよいか』を決めること。順番は必ず認証→認可。セッション・JWT・OAuth2・OIDC・mTLSの使い分けが面接頻出。
クイズ 7 問Authentication vs Authorization
暗号化
データを守る暗号の基礎。守る場所(転送時/保存時)、鍵の方式(対称/非対称)、パスワード保存(ハッシュ+ソルト+bcrypt/Argon2)、通信路の保護(TLS)を押さえる。『パスワードを暗号化』は減点表現で、正しくは『ハッシュ化』。
クイズ 8 問Cryptography
クロスサイトスクリプティング(XSS)
攻撃者のJavaScriptを他のユーザーのブラウザで実行させる攻撃。Cookie窃取やなりすましに使われる。根本対策は『出力時のエスケープ』とCSP。OWASPでは A03 Injection に分類される。
クイズ 2 問Cross-Site Scripting (XSS)
クロスサイトリクエストフォージェリ(CSRF)
ログイン済みのユーザーのブラウザを悪用し、本人が意図しないリクエスト(送金・設定変更など)を勝手に送らせる攻撃。Cookieが自動送信される性質を突く。防御はCSRFトークンとSameSite Cookie。
クイズ 2 問Cross-Site Request Forgery (CSRF)
SQLインジェクション(SQLi)
ユーザー入力をSQL文に文字列連結することで、攻撃者にSQLの構造を改変されてしまう攻撃。認証回避・情報窃取・データ破壊につながる。根本対策はパラメータ化クエリ(プリペアドステートメント)。OWASPでは A03 Injection。
クイズ 1 問SQL Injection (SQLi)
サーバサイドリクエストフォージェリ(SSRF)
サーバに任意のURLへリクエストを送らせる攻撃。特にクラウドのメタデータエンドポイント(169.254.169.254)を叩かせて認証情報を盗むのが典型。OWASP A10(2021新設)。防御は宛先allowlistと内部IP遮断、IMDSv2。
クイズ 1 問Server-Side Request Forgery (SSRF)
オリジン間リソース共有(CORS)
ブラウザの『同一オリジンポリシー(別サイトのデータを勝手に読ませない)』を、安全な範囲で緩めるための仕組み。攻撃ではなく許可の制御。設定を緩めすぎる(特に `*` + credentials)と逆に脆弱になる。
クイズ 1 問Cross-Origin Resource Sharing (CORS)
APIセキュリティ
APIを守るための要点: レート制限(枯渇・総当たり・課金爆発の防止)、強い認証・認可、サーバ側の入力検証、シークレット管理。OWASP API Security Top 10(2023)では BOLA(IDOR) が最大リスク。
クイズ 7 問API Security
ゼロトラスト & mTLS
『社内ネットワークだから信頼する』という境界型防御をやめ、すべてのアクセスを毎回検証する考え方(never trust, always verify)。mTLS(相互TLS)で通信相手も証明書で認証し、最小権限を徹底する。
クイズ 2 問Zero Trust & mTLS