導入
DBの前にキャッシュを1枚挟むだけで、レイテンシーと負荷の両方を劇的に改善できます。SAAの性能・コスト最適化ドメインの定番テーマ、ElastiCacheです。
説明
Amazon ElastiCache は、フルマネージドのインメモリデータストアです。DBの前段に置き、頻繁にアクセスされるデータをメモリ上にキャッシュすることで、読み取りレイテンシーの短縮とDB負荷の軽減を同時に実現します。
2つのエンジンから選べます。
| エンジン | 特徴 | 向いているケース |
|---|---|---|
| Redis | 永続化・レプリケーション・Multi-AZ・複雑なデータ構造(リスト、ソート済みセットなど)に対応 | セッションストア、リーダーボード、高可用性が必要なキャッシュ |
| Memcached | シンプルなキーバリューキャッシュ。マルチスレッドで水平分割しやすい | 単純なキャッシュをとにかく高速・シンプルに使いたい |
代表的な使い方がセッションストアです。Webサーバーをスケールアウトする構成(第2章のAuto Scaling等)では、各インスタンスがセッション情報をローカルに持つと、次のリクエストが別インスタンスに飛んだときに情報が失われます。セッションをElastiCacheに外出しすれば、どのインスタンスが応答してもセッションを共有できます。
flowchart LR
User["ユーザー"] --> ALB["ロードバランサー"]
ALB --> EC2a["EC2 #1"]
ALB --> EC2b["EC2 #2"]
EC2a --> Cache["ElastiCache (Redis)<br/>セッション/キャッシュ"]
EC2b --> Cache
Cache -.->|"キャッシュミス時のみ"| DB["RDS/Aurora"]
読んでみよう
「Redis vs Memcached」は頻出の対比です。高可用性(Multi-AZ)・永続化・レプリケーションが必要ならRedis、シンプルな水平分割キャッシュならMemcached、と覚えてください。「DBの読み取り負荷を減らしたい」「セッション情報をインスタンス間で共有したい」という文言はElastiCacheのサインです。