ElastiCache

【VPC内リージョンサービス】

ElastiCache は、インメモリデータストアである Redis(レディス) および Memcached(メムキャッシュド) をマネージドサービスとして提供する、

高速でスケーラブルなキャッシュサービスです。アプリケーションとデータベースの間に配置することで、読み取り性能を大幅に向上させ、データベースへの負荷を軽減します。

Sharding(シャーディング) によってデータを複数ノードに分散し、スケーラブルに拡張できるほか、Replication(レプリケーション) 機能によりデータの冗長化と耐障害性を確保します。Auto Failover(オートフェイルオーバー) に対応しており、プライマリノード障害時にはスタンバイノードへ自動的に切り替わるため、高可用性を実現します。

Global Datastore 機能を利用することで、複数の AWS リージョン間でデータを非同期レプリケーションし、グローバル規模での読み取り負荷分散やDR(Disaster Recovery:災害復旧)にも対応できます。

セキュリティ面では、IAM認証による認証・暗号化をサポートしており、ユーザーやアプリケーションごとにアクセス制御を行うことができます。また、ElastiCache は VPC 内に配置 されるため、ネットワーク的にも安全な閉域環境で運用できます。

重要用語

関連サービス

ユースケース

DB前段のキャッシュによるレスポンス向上RDSやAuroraの前段にRedis/Memcachedキャッシュを置き、よく参照されるデータをメモリに保持してレスポンス向上とDB負荷軽減を図る。
セッション情報の共有ストアWebアプリのログインセッションや一時的なユーザーデータをRedisに保存し、複数のアプリケーションサーバーから共有できるようにする。
ランキングやキューなどの高速データ構造利用Redisのソート済みセットやリストを活用し、リアルタイムランキングや軽量なジョブキューを実装する。

ベストプラクティス

キャッシュ戦略の明確化ライトスルー、リードスルー、ライトビハインドなどの戦略を選定する。
パラメータ調整とモニタリング接続数やメモリ使用率を確認し、パラメータをチューニングする。
セキュリティグループと暗号化VPC内限定アクセスと暗号化でセキュアなキャッシュを実現する。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【マルチAZ】の有効化(デフォルトではシングルノード構成)
【レプリカノード】の作成(マルチAZが無効の場合、レプリカがあっても、すべて同じAZになる)
ElastiCache for Redis
【クラスターモード】の有効化(複数のシャードに分散する)
ElastiCache for Redis
【自動バックアップ】バックアップ保持期間 0~35 日(0 で無効)
 デフォルト 1 日
 データを S3 にスナップショット保存
 PITR なし:日次スナップショットにより、スナップショット取得時点に復元可能
ElastiCache for Redis
【スナップショット】任意のタイミングで手動スナップショットを取得可能
 保持期限は無制限(ユーザーが削除するまで保持)
 クラスタ(レプリケーショングループ)のデータ全体を S3 にスナップショットとして保存
 スナップショットからいつでもクラスタを復元可能(スナップショット時点の状態)
ElastiCache for Memcached
【バックアップ】なし(インメモリキャッシュのため永続化不可)

セキュリティ

関連サービス設定内容
Subnet(公開リソースと内部リソースの分離)【Cacheサーバ】
 Privateの専用SubnetでマルチAZ構成
SG(リソース単位のアクセス制御)【Cacheサーバ】
 インバウンド:6379(Redis)
        11211(Memcached)
 アウトバウンド:すべて許可
KMS(データの暗号化と鍵の安全管理)【AWS内部でTLS/AES暗号を実施している】
 独自KMSキー不要(鍵操作、監査ができない)
Secrets Manager(機密情報の安全管理)-
SSM Parameter Store(設定情報の一元管理)-
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
クラスター設定変更履歴・暗号化/Transit/At-rest/自動バックアップ準拠評価
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
ノード設定変更のAPI異常検知
ElastiCache が使用する SLR の連携パターン
SLR名 : AWSServiceRoleForElastiCache
SLR が操作するサービス用途
EC2キャッシュノード用のENI作成と管理
S3バックアップとスナップショットの保存
CloudWatchキャッシュメトリクスの送信
SNSイベント通知の送信
権限設計の原則

ログ・監視

ログ出力先ログの種類
CloudWatch Logsエンジンログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
CacheHitsキャッシュヒット数
CacheMissesキャッシュミス数
Evictions退避(Eviction)数
NetworkBytesIn受信ネットワークバイト数
NetworkBytesOut送信ネットワークバイト数
NewConnections新規接続数
ReplicationLagレプリケーション遅延
BytesUsedForCacheキャッシュ使用バイト数
CPUUtilizationCPU使用率
CurrConnections現在の接続数
DatabaseMemoryUsagePercentageデータベースメモリ使用率
EngineCPUUtilizationエンジンCPU使用率
FreeableMemory空きメモリ容量
CommandAuthorizationFailuresコマンド認証失敗数

制限値(固定値/ハードリミット/ソフトリミット)

ハードリミット制限値
ノードタイプあたりの最大メモリ317 GiB(r6gd.16xlarge)

ソフトリミット制限値
ノード数/リージョン300
クラスターあたりのノード数(Redis)500
クラスターあたりのノード数(Memcached)40
パラメータグループ数/リージョン150
サブネットグループ数/リージョン150

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
ノード時間キャッシュノードの稼働時間
バックアップストレージスナップショットの保存容量
データ転送リージョン間、インターネットへの転送
料金計算ツール

公式ページ

AWSドキュメント ElastiCache