mybook

第11章 — ケーススタディ: 現場の知恵

「理論を実践に変える」

ケンジが最後の講義を始めた。「これまで学んだ理論を、実際のプロジェクトでどう組み合わせるか。4つのケーススタディで見ていこう」

Case 1: EC サイト(FreshMarket)

マナミ自身のプロジェクト。全体像を振り返る。

Loading diagram...

結果

Loading chart...

教訓

  • 最も効果が大きいのは CDN。設定だけで全体の60%を改善
  • Redis は DB の前に置く。Cache-Aside パターンが最も安全
  • キャッシュ無効化はイベント駆動。手動パージは運用事故の元

Case 2: ニュースサイト

ニュースサイトは読み取り極端多い + 更新頻度が不均一という特性を持つ。

戦略

コンテンツキャッシュTTL理由
トップページCDN + SWR30秒 + 5分常に最新に近く
記事ページCDN1時間公開後は変更少ない
コメントRedis30秒頻繁に更新
速報キャッシュなし即時性が最優先

ポイント

  • 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 Set5秒頻繁に変動
マスターデータインメモリデプロイまで変更なし
マッチング情報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-AwareAWS AZ ごとにレプリカ。AZ 障害時も継続
Write-Behind書き込みは非同期。パフォーマンス優先
自動フェイルオーバーノード障害時に自動切り替え

学び

  • 大規模環境では ARC のような適応型アルゴリズムが有効
  • AZ(アベイラビリティゾーン)単位でのレプリケーションが可用性の鍵
  • キャッシュの監視メトリクスを徹底(Netflix は全メトリクスをリアルタイム可視化)

キャッシュ戦略の選定フローチャート

Loading diagram...

マナミの成長

1年前、深夜2時のアラートに怯えていたマナミ。今では FreshMarket のキャッシュアーキテクチャを設計し、チームに教える立場になった。

「キャッシュは魔法じゃない。トレードオフの連続だ。速さと鮮度、シンプルさと堅牢性、コストとパフォーマンス——正解は一つじゃない。プロジェクトの特性を理解して、最適なバランスを見つけることが大事なんだ」

次の章では、この本の総まとめとして、キャッシュ設計のチェックリストとリファレンスを提供する。