ElastiCacheとは
インメモリキャッシュデータベースのマネージドサービス
- KVS型で、キャッシュとしての利用に適する
- 書き込み・読み込みが高速である
- トランザクション機能は無く、完全性を求められるデータの保存には適さない
- 利用可能なデータ容量に制限がある
- アプリケーションが高速なI/Oを必要とする処理を行う場合、一時的にElastiCacheにデータを格納し処理を行うことでパフォーマンスの向上が可能
ユースケース
- セッション管理
- IoT処理とストリーム分析
- メタデータの蓄積
- pub/sub処理 ※
- DBキャッシュ処理
- ソーシャルメディアのデータ処理・分析 など
pub/sub処理
「イベントを起こす側」と「イベント処理を行う側」を分離するpub/subモデルを活用した処理
(例)メッセージ処理、チャットアプリ
ElastiCacheのエンジン
1. Memcached用ElastiCache:扱うデータ型・暗号化・高可用性構成・コンプライアンスなどへの対応が不要なシンプルな利用に適する
2. Redis用ElastiCache:複雑なデータ型・暗号化・高可用性構成・コンプライアンスへの対応がサポートされているミッションクリティカルな業務用途に適する
Memcached用ElastiCache | Redis用ElastiCache | |
---|---|---|
データ型 | シンプル | 複雑 |
暗号化 | なし | あり 保管時・通信時をそれぞれ設定可 |
コンプライアンス認証 (FesRAMP/HIPAA/PCIDSS) |
なし | あり |
マルチスレッド | あり | なし |
高可用性(レプリケーション) | なし | あり |
自動フェイルオーバー | なし | 必須 |
スナップショット機能 | なし | あり |
バックアップと復元 | なし | あり バックアップ保持期間はデフォルト1日 |
pub/sub機能 | なし | あり |
データ書き込み方式
遅延読み込み
データ読み込み時にキャッシュを参照し、ヒットしなかった場合にデータソースから必要なデータを取得してキャッシュに書き込む方式
メリット
・リクエストされたデータのみをキャッシュするため、データ使用量が比較的少ない
・障害発生時にノードが空になった場合、レイテンシーは高くなるがシステムを継続して使用可能
デメリット
・キャッシュミス時のレイテンシーが高い
・キャッシュヒット時にはキャッシュデータを更新しないため、キャッシュデータが古い可能性がある
書き込みスルー
データ書き込み時にキャッシュにも書き込みを行い、データは全てキャッシュから読み込む方式
メリット
・キャッシュのデータが常に最新となっている
・読み込み時のキャッシュミスが発生しない
デメリット
・障害発生時にノードが空になった場合、データの読み込みが行えない
・データソースへの書き込み後、キャッシュへの書き込みに失敗した場合にデータが欠落する
・メモリの使用量が多い