ElastiCache
サービス概要
クラウドでのメモリ内分散キャッシュ環境のセットアップ、管理、およびスケーリングを AWS クラウドで簡単に行うことができる。
高パフォーマンスでコスト効率に優れるだけでなく、サイズ変更も可能なメモリ内キャッシュを提供しながら、分散キャッシュ環境のデプロイと管理に伴う複雑性を排除。
ElastiCache は、Redis と Memcached エンジンのどちらでも使用可能。
特徴
Amazon ElastiCache for Memcached
- アプリケーションに必要な情報は、デプロイした ElastiCache ノードのホスト名とポート番号のみ。
- Memcached の ElastiCache 自動検出機能を使用すると、アプリケーションはキャッシュクラスター内のすべてのノードを特定し、接続可能。(利用可能なホスト名とポート番号のリストを管理する必要なくなる。)
- キャッシュノードの障害の自動検出と復旧。
- 自動検出を有効にしたクラスター内のノードが自動検出されるため、ノードの追加または削除時にアプリケーションに変更を加える必要なし。
- ノードとクラスターの柔軟なアベイラビリティーゾーンの配置。
- 他の AWS のサービス (Amazon EC2、Amazon CloudWatch、AWS CloudTrail、Amazon SNS など) とも連携した、安全でパフォーマンスの高い管理対象インメモリキャッシュソリューション。
Amazon ElastiCache for Redis
- キャッシュノードの障害の自動検出と復旧。
- 障害が発生したプライマリクラスターから、レプリケーションをサポートする Redis クラスター内のリードレプリカへの自動フェイルオーバーを備えたマルチ AZ。
- Redis バージョン 3.2 以降では、すべてのバージョンで転送時の暗号化と保管時の暗号化 (認証あり) がサポート。このサポートは、HIPAA 準拠のアプリケーションのビルドに役立つ。
- 耐障害性向上のためのノードとクラスターのAZの柔軟な配置。
- Amazon EC2、Amazon CloudWatch、AWS CloudTrail、Amazon SNS などの AWS のサービスとの統合。
種類やタイプ
MemchachedとRedis
Memcached | Redis | |
---|---|---|
ケース | ・シンプルなデータ型だけで充分な場合 ・マルチスレッドが必要な場合 |
・複雑なデータ型が必要な場合 ・永続化が必要な場合 ・フェイルオーバーが必要な場合 ・pub/subが必要な場合 |
スナップショット | - | 有り |
マルチスレッド | 有り | - |
暗号化 | - | 有り |
高可用性 | - | 有り |
類似サービスとの比較
RDS | DynamoDB | Redshift | ElastiCache | |
---|---|---|---|---|
概要 | ・リレーショナルデータベース。 ・主なDBエンジンをサポート、ツールがそのまま使えるため、オンプレからの移行に便利。 ・データベースソフトウェアのパッチは自動パッチが可能。 |
・NoSQL データベースサービス。 ・結果整合性 ・write直後のreadでは整合性が取れない場合あり。 ・「強い整合性」オプションを指定すると性能は落ちる。 ・レコードのサイズに上限あり。 ・リージョンサービスでありプライベートネットワークからはNAT経由でアクセスする必要あり。 |
・データウェアハウスタイプ ・スケーラブル ・高パフォーマンス |
・メモリーキャッシュタイプ ・Memcached:Key-Value Store形式のメインメモリキャッシュ。マルチノートのキャッシュクラスタ。 ・Redis:Memcached:Key-Value Store形式のメインメモリキャッシュ。 |
場所 | AZ サービス(VPC内に配置) | リージョン | AZ サービス | AZ サービス(VPC内に配置) |
バックアップ | スケージュールで1日1回取得可能(手動可)※ただし、バックアップ中はI/O停止、止めたくない場合はマルチAZ利用する必要あり | - | - | (memcached)バックアップ機能はなし(Redis)Snapshotによる永続化 |
ユースケース | OS以下レイヤの管理不要、高可用性な、既存データベースの利用など | 大量のオンライントランザクション処理など | 大容量データの分析など | DBの負荷低減用のメモリキャッシュ |
ベストプラクティス
- 遅延読み込み
- 必要なときにのみキャッシュにデータを読み込むキャッシュ戦略。
- 書き込みスルー
- データがDBに書き込まれると常にデータを追加するか、キャッシュのデータを更新する。
- TTL
- 「遅延読み取り」と「書き込みスルー」利点を活かす戦略。それぞれの書き込みに有効期限 (TTL) を追加し、過剰なデータでキャッシュがいっぱいになる事態が避けられる。
- TTL は、キーの有効期限の秒数を指定する整数値
- 高スループットかつ低レイテンシなインメモリデータストアからデータを取得し、大量のデータを扱うアプリケーションを構築したり、既存アプリケーションのパフォーマンス改善を検討する際にElastiCacheの利用がよい。(ex.ゲームのユーザー行動データの処理の高速ぱふぉーまなすなど)