第11章 — ケーススタディ: 現場の知恵
「理論を実践に変える」
ケンジが最後の講義を始めた。「これまで学んだ理論を、実際のプロジェクトでどう組み合わせるか。4つのケーススタディで見ていこう」
Case 1: EC サイト(FreshMarket)
マナミ自身のプロジェクト。全体像を振り返る。
Loading diagram...
結果
Loading chart...
教訓
- 最も効果が大きいのは CDN。設定だけで全体の60%を改善
- Redis は DB の前に置く。Cache-Aside パターンが最も安全
- キャッシュ無効化はイベント駆動。手動パージは運用事故の元
Case 2: ニュースサイト
ニュースサイトは読み取り極端多い + 更新頻度が不均一という特性を持つ。
戦略
| コンテンツ | キャッシュ | TTL | 理由 |
|---|---|---|---|
| トップページ | CDN + SWR | 30秒 + 5分 | 常に最新に近く |
| 記事ページ | CDN | 1時間 | 公開後は変更少ない |
| コメント | Redis | 30秒 | 頻繁に更新 |
| 速報 | キャッシュなし | — | 即時性が最優先 |
ポイント
- stale-while-revalidate が最適解。30秒前の記事でもユーザーは気にしないが、表示が遅いのは致命的
- 速報は
Cache-Control: no-storeで CDN をバイパス - 記事URLに公開日を含め、古い記事は長期キャッシュ
Case 3: SaaS ダッシュボード
ユーザーごとにデータが異なる SaaS は、キャッシュが最も難しい。
戦略
Loading diagram...
ポイント
Cache-Control: privateでCDNにキャッシュさせない- Redis のキーにテナントIDを含める:
tenant:123:dashboard - 集計データはマテリアライズドビュー + Redis で二重キャッシュ
Case 4: ゲームバックエンド
ゲームは低レイテンシが命。100ms の遅延がユーザー体験を破壊する。
戦略
| データ | キャッシュ | TTL | 理由 |
|---|---|---|---|
| プレイヤーステータス | Redis(ローカル) | リアルタイム | 数ms で返す必要 |
| ランキング | Redis Sorted Set | 5秒 | 頻繁に変動 |
| マスターデータ | インメモリ | デプロイまで | 変更なし |
| マッチング情報 | Redis Pub/Sub | — | リアルタイム配信 |
ポイント
- ゲームデータは Write-Behind が有効。Redis に即書き、DB は非同期
- ランキングは
ZINCRBY+ZREVRANGEで Redis ネイティブに処理 - マスターデータはアプリの起動時にメモリにロード
Case 5: Facebook TAO — ソーシャルグラフのキャッシュ
Facebook(Meta)の TAO は、ソーシャルグラフ(友達関係、いいね、投稿)を高速に提供するキャッシュシステム。
設計思想
- 読み取りが圧倒的 — 読み書き比率 500:1
- オブジェクトとアソシエーション — ユーザー・投稿がオブジェクト、「いいね」「友達」がアソシエーション
- マルチリージョン — 世界中のデータセンターに分散
Loading diagram...
学び
- 読み取りヘビーならキャッシュ層を厚くする
- 一貫性は**最終的な一貫性(Eventual Consistency)**で十分な場合が多い
- リージョン間は非同期レプリケーションで十分
Case 6: Netflix EVCache — ARC 採用の分散キャッシュ
Netflix の EVCache は、Memcached ベースの分散キャッシュ。ARC アルゴリズムを採用。
規模
- 毎秒3,000万リクエスト を処理
- 数テラバイトのデータをキャッシュ
- 複数の AWS リージョンに分散
設計のポイント
| 特徴 | 説明 |
|---|---|
| ARC アルゴリズム | LRU + LFU のハイブリッド。ワークロード変動に自動適応 |
| Zone-Aware | AWS AZ ごとにレプリカ。AZ 障害時も継続 |
| Write-Behind | 書き込みは非同期。パフォーマンス優先 |
| 自動フェイルオーバー | ノード障害時に自動切り替え |
学び
- 大規模環境では ARC のような適応型アルゴリズムが有効
- AZ(アベイラビリティゾーン)単位でのレプリケーションが可用性の鍵
- キャッシュの監視メトリクスを徹底(Netflix は全メトリクスをリアルタイム可視化)
キャッシュ戦略の選定フローチャート
Loading diagram...
マナミの成長
1年前、深夜2時のアラートに怯えていたマナミ。今では FreshMarket のキャッシュアーキテクチャを設計し、チームに教える立場になった。
「キャッシュは魔法じゃない。トレードオフの連続だ。速さと鮮度、シンプルさと堅牢性、コストとパフォーマンス——正解は一つじゃない。プロジェクトの特性を理解して、最適なバランスを見つけることが大事なんだ」
次の章では、この本の総まとめとして、キャッシュ設計のチェックリストとリファレンスを提供する。