0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS SAA対策】ElastiCache / DAX まとめ ― Redis vs Memcached・キャッシュサービスの使い分けを整理する

0
Posted at

はじめに

AWS Solutions Architect Associate (SAA) の学習中に整理した ElastiCache / DAX 関連の知識をまとめました。
「どのキャッシュサービスを選ぶか」は試験で頻出であり、Redis vs Memcached の違い、DAX との使い分け、地理空間データの扱いなど、判断ポイントが多いサービス群です。

本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。


サービス概要

ElastiCache Redis vs Memcached

Redis Memcached
地理空間データ
データ構造 豊富(String, List, Set, Hash, Sorted Set, Geo 等) String のみ
永続化
レプリケーション
Pub/Sub
マルチスレッド

試験のポイントは明快です。「地理空間」が出たら Redis 一択。高度な機能が不要でシンプルなキャッシュだけなら Memcached です。


DAX(DynamoDB Accelerator)

  • DynamoDB 専用キャッシュ
  • DynamoDB API と完全互換 → コード変更最小
  • ミリ秒 → マイクロ秒に高速化

キャッシュサービスの使い分け

サービス 用途 特徴
DAX DynamoDB 専用キャッシュ API 互換、コード変更最小
CloudFront S3 等の静的/動的コンテンツ配信 エッジキャッシュ
ElastiCache Redis 汎用インメモリキャッシュ セッション、リーダーボード、地理空間
ElastiCache Memcached シンプルなキャッシュ 単純な Key-Value

ElastiCache Redis のユースケース

適している用途:

  • 読み取り負荷の高いアプリ(リーダーボード、SNS、Q&A)
  • コンピュート集約型の結果キャッシュ(レコメンデーション等)
  • セッションストア
  • リアルタイム分析
  • 地理空間データ(GEOADD, GEORADIUS, GEODIST)

適さない用途:

  • 書き込み負荷の高いアプリ(キャッシュがすぐ古くなる)

ElastiCache の高可用性

  • Multi-AZ + 自動フェイルオーバー
  • Read Replica はスケーリング用(DR ではない)
  • バックアップ(日次 / AOF)はデータ損失リスクあり

地理空間コマンド(Redis)

コマンド 用途
GEOADD 緯度 / 経度を追加
GEORADIUS 指定半径内のメンバーを検索
GEODIST 2点間の距離を計算

試験で問われる設計パターン


キャッシュサービスの選択

DynamoDB キャッシュ → DAX、S3 静的コンテンツ → CloudFront

シナリオ: DynamoDB の読み取り性能を改善しつつ、S3 の静的コンテンツも高速に配信したいです。それぞれどのキャッシュサービスを使うべきでしょうか?

正解: DAX + CloudFront

  • DAX = DynamoDB API 互換
  • ElastiCache Redis は汎用キャッシュ
  • ElastiCache Memcached は S3 キャッシュには不向き

Aurora 読み取り負荷(繰り返し同じクエリ)→ ElastiCache Redis

シナリオ: Aurora に対して同じクエリが繰り返し実行され、読み取り負荷が高くなっています。最もコスト効率の良い対策はどれでしょうか?

正解: ElastiCache for Redis

  • 同じクエリの繰り返し → キャッシュが最適
  • Read Replica を追加しても毎回 DB にクエリが飛ぶ

インメモリ + リアルタイムリーダーボード → ElastiCache Redis / DynamoDB + DAX

シナリオ: リアルタイムのリーダーボード機能にインメモリのデータストアが必要です。どのサービスが適切でしょうか?(2つ選択)

正解:

  1. ElastiCache for Redis
  2. DynamoDB + DAX
  • 「インメモリ」→ ElastiCache Redis / DAX
  • Aurora / Neptune はインメモリではない
  • DynamoDB 単体はインメモリではない(DAX が必要)

地理空間データ系

RDB キャッシュ + 地理空間データ → ElastiCache for Redis

シナリオ: リレーショナル DB のキャッシュとして使いつつ、地理空間データ(位置情報の検索)も処理したいです。どのキャッシュサービスが適切でしょうか?

正解: ElastiCache for Redis

  • 「地理空間」→ Redis 一択(Memcached は非対応)
  • DAX は DynamoDB 専用
  • Global Accelerator はネットワーク最適化

リアルタイム位置追跡 + 高頻度読み書き + 地理空間 → ElastiCache Redis

シナリオ: ライドシェアアプリで、ドライバーの GPS 座標を高頻度で更新・読み取りしています。「半径 X km 以内のドライバー」を検索する機能も必要です。どのサービスが最適でしょうか?

正解: ElastiCache for Redis + TTL ベースのキャッシュ戦略

  • Redis の地理空間コマンド(GEOADD 等)で半径検索が1コマンドで可能
  • RDS Read Replica は書き込み負荷を軽減しない

セッション管理系

分散インメモリセッション管理 → ElastiCache

シナリオ: 複数の EC2 インスタンスでセッション情報を共有したいです。サーバー障害時もセッションが失われないようにするにはどうすべきでしょうか?

正解: Amazon ElastiCache(Redis or Memcached)

  • サーバー障害時もセッション維持
  • ALB Sticky Sessions はサーバー障害時にセッション消失
  • DynamoDB はディスクベース(インメモリではない)

高可用性系

ElastiCache Redis DR → Multi-AZ + 自動フェイルオーバー

シナリオ: ElastiCache Redis のデータ損失を最小限にしたいです。DR(災害復旧)策としてどの構成が最適でしょうか?

正解: Multi-AZ + 自動フェイルオーバー

  • バックアップ(日次 / AOF)はデータ損失リスクがある
  • Read Replica は読み取りスケーリング用(DR ではない)

ユースケース選択系

ElastiCache の適切なユースケース

シナリオ: ElastiCache が最も効果を発揮するユースケースを2つ選んでください。

正解:

  1. 読み取り負荷の高いワークロードのレイテンシー・スループット改善
  2. コンピュート集約型ワークロードのパフォーマンス改善
  • 書き込み負荷が高いとキャッシュがすぐ古くなるため効果が薄い
  • ETL は Glue / EMR、複雑な JOIN は RDS / Aurora の領域

おわりに

キャッシュサービスの選択は「DynamoDB → DAX」「地理空間 → Redis」「シンプルなキャッシュ → Memcached」「S3 配信 → CloudFront」という判断パターンで整理できます。特に「地理空間データが出たら Redis 一択」というルールは、試験で反射的に使えるようにしておきましょう。

間違いや補足があればぜひコメントで教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?