本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第6章 データベースの設計 · レッスン35

インメモリとキャッシュ ― ElastiCache

導入

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のサインです。