【初心者向け】Amazon ElastiCache 入門!完全ガイド
Amazon ElastiCache
☘️ はじめに
本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報については、AWS 公式ドキュメントをご参照ください。
👀 Contents
- Amazon ElastiCache とは
- Memcached と Redis の比較
- どのように利用したらよいか?
- DynamoDB で代用できる?
- Amazon ElastiCache for Memcached
- Amazon ElastiCache for Redis
- 自動フェイルオーバー
- Amazon ElastiCache for Redis の Global Datastore
- 📖 まとめ
Amazon ElastiCache とは
フルマネージドのインメモリキャッシングサービスで、Memcached または Redis プロトコルに互換性があります。
【AWS Black Belt Online Seminar】Amazon ElastiCache(YouTube)(39:21)
古い資料(PDF)はこちら【AWS Black Belt Online Seminar】
Amazon ElastiCache-2017.12.14
レディス と読みます。
memory cache daemon の略でメムキャッシュディーと読みます。
ハンズオン
Amazon Aurora Serverless と Amazon ElastiCache を使用してリアルタイムなリーダーボードをビルドする
Amazon ElastiCache for Redis を使い、オンラインアプリケーション用の高速セッションストアを構築する(※英語のみ)
Amazon ElastiCache for Redis を使い、MySQL データベースのパフォーマンスを向上させる(※英語のみ)
Memcached と Redis の比較
主な比較は次のとおりです。
key | Memcached | Redis |
---|---|---|
マルチスレッド | Yes | No |
データ型 | シンプル | 複雑 |
自動フェイルオーバー | No | Yes |
レプリケーション | No | Yes |
バックアップと復元 | No | Yes |
Pub/Sub | No | Yes |
Memcached のほうが単純な Key-Value の処理だとパフォーマンスが優れるが、レプリケーション/自動フェイルオーバー/複雑な集計などが必要な場合は Redis を選択するケースが多くなると思います。
こちらにも詳しく記載があります。
どのように利用したらよいか?
- キャッシュは揮発性のあるデータであるため、消えて困るデータは保存しないほうがよいです。 -結果整合性(分散データベース環境でデータが更新された際に、一定時間経過後には最終的な一貫性が担保されること)を前提とした設計を行う必要があります。
- TTL(Time to Live, 有効期限)を設定しましょう。データを保存しすぎて、メモリが溢れてしまうといったことが発生します。TTL は長すぎても TTL が切れる前にメモリが溢れることにもなります。また、TTL が切れるタイミングが同じデータが多く存在すると、CPU 使用率が上昇することがあります。
DynamoDB で代用できる?
DynamoDB も Key-Value で低レイテンシーのサービスです。同じように代用もできるのではないかと考えます。
ただ、DynamoDB は可用性担保のため複数 AZ に保存しているので書き込みは遅くなります。また、DynamoDB はリクエスト数で課金されるため、頻繁に利用されるセッション情報などの場合はコストが急増したり、キャパシティが枯渇する可能性があります。DAX を利用することでこれらを回避することも出来ます。
つまり、基本的には永続化が不要であれば ElastiCache のほうがよいケースが多いと思われます。
Amazon ElastiCache for Memcached
構成イメージはこのようになります。クラスタ化されていますが、レプリケーションの機能はありません。
Amazon ElastiCache for Redis
クラスタモード有効/無効 × レプリケーション有/無のパターンがあります。
クラスタモードは複数のシャードにデータを分散させることが出来ます。クラスタモードが有効でもシャードを1つに設定することも可能です。
クラスタもレプリケーションもない単一の構成です。
レプリケーションが有効な構成です。
クラスタモードが有効ですが、レプリケーション無しの構成です。
クラスタモードが有効でレプリケーション有りの構成です。
自動フェイルオーバー
レプリケーションされている場合、自動的にフェイルオーバーが実行されます。
Amazon ElastiCache for Redis の Global Datastore
Global Datastore for Redis 機能を使用すると、AWS リージョン全体で完全マネージド型、高速、信頼性、安全なレプリケーションを実行できます。
Discussion