ElastiCache(Redis)は「置けば速くなる」わけではありません。戦略・TTL・スタンピード・フェイルオーバーの設計が甘いと、障害時にDBを巻き込んで落ちます。実務で効く設計の型を、AWS一次情報をもとに整理します。

「DBが重いのでElastiCacheを前に置きたい」という相談は多くいただきます。ただ、キャッシュは魔法ではなく、戦略・TTL・可用性・障害時の振る舞いを設計しないと、平常時は速くても、有事にはDBを巻き込んで全体を落とす層になり得ます。本記事では、AWS公式の考え方をベースに、実務でつまずくポイントを順に整理します。

01まず用途を切り分ける — キャッシュ/セッション/その他

ElastiCacheの用途は大きく分けて次の3つで、設計上の要求がまったく異なります。ここを混ぜると設計がぶれます。

現場のコツ:「キャッシュ」と「セッション」を1つのクラスタに同居させる構成は、初期はよく見ますが、TTL方針もフェイルオーバー要件も違うため、規模が出てきたら分離を検討してください。片方の事故がもう片方に波及します。

02キャッシュ戦略 — cache-aside と write-through

AWSが挙げる代表的な戦略はLazy Loading(cache-aside)Write-Throughです(Caching strategies)。それぞれ長所と短所が明確です。

実務ではcache-asideを基本とし、更新頻度が高く鮮度が重要なキーだけwrite-throughを併用するのが素直です。AWSも「両者にTTLを組み合わせる」ことを推奨しています。判断軸は下表の通りです。

アプリケーション (APサーバ) ElastiCache (Redis / Valkey) データベース (RDS / Aurora) (1) get HITなら返却 (2) MISS時 query (3) set (書き戻し+TTL)
図:cache-aside(遅延読み込み)の基本フロー。ミス時のみDBを引き、TTL付きで書き戻す。

戦略の判断軸

02bTTL設計 — 「とりあえず1時間」をやめる

TTLはcache-asideとwrite-throughの弱点を埋める要です(Adding TTL)。期限切れキーは「見つからない」扱いになり、DBから引き直してキャッシュが更新されます。設計時に押さえるべき点は次の通りです。

03キャッシュスタンピード — 有事にDBを守る

キャッシュ設計で最も事故になりやすいのがスタンピード(thundering herd)です。人気キーが失効した瞬間、多数のリクエストが一斉にミスしてDBへ殺到し、DBが飽和して全体が落ちます。ノード障害でキャッシュが空になった直後も同じことが起きます。代表的な対策を整理します。

現場のコツ:スタンピードは平常時のベンチでは絶対に顕在化しません。顕在化するのは「キャッシュノード再起動直後」「一斉失効」「アクセス急増」の3シーンです。設計レビューでは必ず「人気キーが今この瞬間に消えたら、DBは何QPS受けるか」を試算してください。この一問で構成の穴が見えます。

04クラスタモード — 有効/無効の選択

Redis/Valkeyにはクラスタモード無効(CMD)クラスタモード有効(CME)があります(レプリケーションの理解)。要点は「シャーディングするか否か」です。

選定の判断軸

迷ったらCMDで始め、上限が見えてきた段階でCMEを検討する、で実務は回ります。数値上限はバージョン・ノードタイプ依存のため、公式で最新を確認してください。

05フェイルオーバーと Multi-AZ — 「消えても壊れない」を設計に落とす

可用性はMulti-AZと自動フェイルオーバーで担保します(Multi-AZによるダウンタイム最小化)。AWSの記述から、実務で押さえるべき挙動を抜き出します。

現場のコツ:「レプリカ0でMulti-AZ有効のつもり」という構成ミスは監査でよく見ます。レプリカがなければ自動フェイルオーバーは働きません。本番のキャッシュ/セッション層は、最低でも別AZに1レプリカ、を出発点にしてください。

06セッションストア用途 — 揮発前提を捨てる

ELB配下でステートレスにAPサーバをスケールさせる際、セッションをElastiCacheに外出しする構成は定番です。ただしキャッシュ用途と根本的に違うのは正データがRedis側にある点です。設計の勘所は次の通りです。

DB接続の枯渇対策と混同されがちですが、コネクション管理は別テーマです。RDS前段の接続集約はRDS Proxyによる接続管理を、DBそのものの選定はAurora/RDS選定を参照してください。

07Valkey/Redis OSSの動向 — 何を選ぶか

2024年以降、大きな地殻変動がありました。Redisのライセンス変更を受け、Linux Foundation配下でValkey(Redis OSS互換のフォーク)が立ち上がり、AWSもElastiCacheでValkeyを提供しています。EMWの見立てとして、新規はValkeyを基本線に据えて問題ない段階に来ています。

数値・料率はリージョンとバージョンで変わるため、必ず公式の最新料金で試算してください。

08コストの考え方 — 効くのはメモリとエンジン選択

ElastiCacheのコストは、突き詰めれば「どれだけのメモリ容量を、どの構成で確保するか」です。効かせどころを整理します。

監視設計そのものの型は監視・アラート設計CloudWatch監視の第一歩も併せて参照してください。

まとめ

ElastiCache(Redis/Valkey)は、置くだけで速くなる部品ではなく、次の型を通して初めて「有事に強い」層になります。

「今のキャッシュ層、有事に耐えるのか」を一度棚卸ししたい場合は、EMWが設計レビューから移行まで手を動かして支援します。お問い合わせください。導入事例もあわせてご覧ください。

参考(一次情報)

キャッシュ層の設計やDB前段の性能・可用性でお困りなら、お問い合わせください。現場で手を動かすコンサルとして、設計レビューから移行まで支援します。

相談する
← ブログ一覧へ戻る