AWS認定資格 WEB問題集&徹底解説

AIプラクティショナー

Amazon ElastiCache の概要と試験出題ポイントは?

AWSサービスの一つであるAmazon ElastiCacheはどんな内容なのでしょうか?また、AWS認定資格のAIプラクティショナー(AIF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

Amazon ElastiCache 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

Amazon ElastiCache は、Redis または Memcached をフルマネージドで提供するインメモリデータストアサービスです。 データベースの前段にキャッシュを配置することでレイテンシをミリ秒以下に短縮し、バックエンドDBへの負荷を大幅に軽減します。

2023年に ElastiCache Serverless が追加され、キャパシティ管理なしで自動スケールするオプションも利用可能になりました。 主なユースケース: データベースキャッシュ、セッションストア、リーダーボード、Pub/Sub、リアルタイム分析。

2. 主な特徴と機能

2.1 Redis vs Memcached の比較(最頻出)

  • Redis(推奨・高機能):
    • データ型: String・List・Set・Sorted Set・Hash・Bitmap・HyperLogLog・Stream。
    • 永続化(AOF/RDB スナップショット)・バックアップ・復元に対応。
    • レプリケーション(プライマリ/レプリカ)・マルチAZ 自動フェイルオーバー。
    • Pub/Sub メッセージング、Lua スクリプト、トランザクション(MULTI/EXEC)に対応。
    • クラスターモードで水平シャーディング(最大 500 ノード)。
    • AUTH コマンド・TLS 暗号化・保存時暗号化に対応。
  • Memcached(シンプル・マルチスレッド):
    • シンプルなキーバリューストアのみ。データ型は文字列のみ。
    • 永続化・バックアップ・フェイルオーバーなし。
    • マルチスレッドでコアをフル活用。シンプルなキャッシュに限れば高スループット。
    • 水平スケールはノード追加のみ(レプリケーション概念なし)。

2.2 Redis の構成オプション

  • レプリケーショングループ(クラスターモード無効): プライマリ 1 台 + レプリカ最大 5 台。マルチAZ 自動フェイルオーバー。スケールアップ・リードレプリカによる読み出し分散。
  • クラスターモード(シャーディング): データをシャードに分割して水平スケール。最大 500 ノード。書き込みスケールが必要な場合に採用。

2.3 ElastiCache Serverless(2023年〜)

  • ノード数・シャード数の設定不要。キャパシティを自動スケール。
  • 数秒以内にスケールアップし、常にキャパシティオーバーを防止。
  • Redis と Memcached の両方に対応。使用量ベースの課金(vCPU 時間 + 保存データ GB/時)。

2.4 キャッシュ戦略

  • Lazy Loading(Cache-Aside / Read-Through): キャッシュミス時にのみ DB からデータ取得してキャッシュに書き込む。最も一般的。TTL を設定してデータ鮮度を管理。
  • Write-Through: DB 書き込み時に必ずキャッシュも更新。データの一貫性が高い。書き込みオーバーヘッドあり。
  • Write-Behind(Write-Back): キャッシュに書き込み後、非同期で DB に反映。書き込みパフォーマンス最大化。データ損失リスクあり。

3. アーキテクチャおよび技術要素

  1. アプリケーション(EC2/Lambda/ECS)が ElastiCache のエンドポイントに接続(プライマリエンドポイント / リーダーエンドポイント)。
  2. キャッシュヒット: ElastiCache からデータを直接返す(数十〜数百 μs)。
  3. キャッシュミス: RDS/Aurora/DynamoDB から取得し、ElastiCache に TTL 付きで書き込む。
  4. マルチAZ 構成: プライマリ障害時にレプリカが自動昇格(フェイルオーバー数秒〜数十秒)。

典型パターン: ALB → EC2/ECS(アプリ) → ElastiCache(セッション/キャッシュ) + RDS(永続データ)。 セッション共有では Redis にセッションデータを格納し、複数のアプリサーバー間で状態を共有する(スティッキーセッション不要)。

4. セキュリティと認証・認可

  • VPC 内配置: ElastiCache はパブリックアクセスを持たない。必ず VPC 内プライベートサブネットに配置し、セキュリティグループで接続元を制限。
  • Redis AUTH コマンド: パスワード(AUTH トークン)を設定してクライアント認証。ElastiCache では --auth-token パラメータで設定。
  • 転送時暗号化(TLS): Redis / Memcached ともに TLS 接続に対応(Redis は有効化が推奨)。
  • 保存時暗号化: Redis は KMS 統合で保存時暗号化が可能(Memcached は非対応)。
  • IAM 認証(Redis 6.x 以降): ElastiCache for Redis でのユーザー管理と IAM 認証に対応。

5. 料金形態

  • ノードベース: ノードタイプ × 実行時間で課金。リザーブドノード(1年/3年)で最大 65% 割引。
  • ElastiCache Serverless: vCPU 時間(処理量)+ 保存データ GB/時 + データ転送で課金。
  • バックアップ(Redis): 無料枠(実データの合計容量分)を超えると GB 単位で課金。
  • データ転送: 同一 AZ 内は無料。AZ 間は転送料が発生。

6. よくあるアーキテクチャ・設計パターン

  • DB 読み取りキャッシュ(Lazy Loading): RDS/Aurora の SELECT 結果を Redis にキャッシュ。同じクエリを繰り返す場合に DB 負荷を大幅削減。
  • セッション管理: HTTP セッションデータを Redis に格納。ALB のスティッキーセッション不要で水平スケール可能。
  • リーダーボード: Redis の Sorted Set でスコアランキングをメモリ上で管理。O(log N) で高速ランキング更新。
  • レートリミット: Redis の INCR / EXPIRE コマンドで API レートリミットをアトミックに実装。
  • Pub/Sub: Redis の Pub/Sub でリアルタイム通知をサービス間に配信(軽量な非同期メッセージング)。

7. 設定・デプロイ手順(ハンズオン例)

  1. ElastiCache コンソールでクラスターを作成(Redis / クラスターモード無効 / マルチAZ 有効 / レプリカ 2 台)。
  2. VPC 内プライベートサブネットに配置し、アプリ用セキュリティグループからの 6379 番ポートのみ許可。
  3. AUTH トークンと TLS を有効化してセキュリティを強化する。
  4. アプリケーションにプライマリエンドポイント(書き込み用)とリーダーエンドポイント(読み取り用)を設定。
  5. TTL を設定してキャッシュミス時に DB から取得する Lazy Loading ロジックを実装。
  6. CloudWatch で CacheMisses / CacheHitRate / CurrConnections / Evictions を監視。

8. 試験で問われやすいポイント

8.1 Redis vs Memcached の選択(最頻出)

Q: バックアップ・復元・マルチAZ フェイルオーバー・Sorted Set(ランキング)が必要な場合は?
A: Redis。Memcached はシンプルなキャッシュのみでバックアップ・フェイルオーバーなし。

Q: 「マルチスレッドで超高スループットの単純キャッシュが必要」な場合は?
A: Memcached。シンプルなキャッシュ専用でマルチスレッドによる高スループット。

8.2 セッション管理パターン

Q: ALB のスティッキーセッションを使わずに複数 EC2 でセッションを共有するには?
A: Redis(ElastiCache)にセッションデータを保存する。すべてのEC2インスタンスが同じElastiCacheからセッションを読み書きする。

8.3 ElastiCache vs DAX

Q: DynamoDB の読み取りパフォーマンスをマイクロ秒単位に改善したい場合は?
A: DAX(DynamoDB Accelerator)。ElastiCache は汎用インメモリキャッシュで DynamoDB 専用の最適化はない。

8.4 Lazy Loading vs Write-Through

Q: キャッシュとDBの一貫性を最も高めたい(古いデータを返さない)場合のキャッシュ戦略は?
A: Write-Through。DB 書き込み時に必ずキャッシュを更新するため常に最新データを返す。ただし書き込みオーバーヘッドがある。

8.5 クラスターモードの使い分け

Q: Redis で書き込みスループットを水平スケールするには?
A: クラスターモード(シャーディング)を有効化。クラスターモード無効はスケールアップ・レプリカによる読み取り分散のみ。