
【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 | エンジンログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| CacheHits | キャッシュヒット数 |
| CacheMisses | キャッシュミス数 |
| Evictions | 退避(Eviction)数 |
| NetworkBytesIn | 受信ネットワークバイト数 |
| NetworkBytesOut | 送信ネットワークバイト数 |
| NewConnections | 新規接続数 |
| ReplicationLag | レプリケーション遅延 |
| BytesUsedForCache | キャッシュ使用バイト数 |
| CPUUtilization | CPU使用率 |
| CurrConnections | 現在の接続数 |
| DatabaseMemoryUsagePercentage | データベースメモリ使用率 |
| EngineCPUUtilization | エンジンCPU使用率 |
| FreeableMemory | 空きメモリ容量 |
| CommandAuthorizationFailures | コマンド認証失敗数 |
制限値(固定値/ハードリミット/ソフトリミット)
| ハードリミット | 制限値 |
|---|---|
| ノードタイプあたりの最大メモリ | 317 GiB(r6gd.16xlarge) |
| ソフトリミット | 制限値 |
|---|---|
| ノード数/リージョン | 300 |
| クラスターあたりのノード数(Redis) | 500 |
| クラスターあたりのノード数(Memcached) | 40 |
| パラメータグループ数/リージョン | 150 |
| サブネットグループ数/リージョン | 150 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| ノード時間 | キャッシュノードの稼働時間 |
| バックアップストレージ | スナップショットの保存容量 |
| データ転送 | リージョン間、インターネットへの転送 |