
Webサービスを運用するうえで、ネットワークの応答時間の遅延(レイテンシー)問題は避けて通れません。そのようなレイテンシーの短縮に役立つのが、キャッシュサービスです。
AWSでは、高速なデータアクセスを実現するためのキャッシュサービスとして、Amazon ElastiCacheを提供しています。本記事では、Amazon ElastiCacheの基礎的な知識や活用例、料金例をご紹介します。
目次
Amazon ElastiCacheとは
Amazon ElastiCacheとはAWSが提供する、フルマネージド型のインメモリキャッシュサービスです。まずは、キャッシュサービスの基本的な知識から、確認していきましょう。
キャッシュとは
キャッシュとは、一度利用したデータをメモリに保存しておくことで、再アクセス時のスピードを高速化する仕組みのことです。データを取得する際、データが保存されているストレージに毎回アクセスしていると、応答に時間がかかってしまいます。同じデータを取得する際には、ストレージにアクセスせずキャッシュにアクセスすることで、アクセスにかかる時間を短縮することが可能です。
Amazon ElastiCacheの特徴
Amazon ElastiCacheは、キャッシュの仕組みを備えたサービスです。Amazon ElasticCache最大の特徴は、高速のデータアクセスにあります。一般的なデータベースでは、ストレージに保管されているデータを取得し、メモリでデータを処理します。対してAmazon ElastiCacheは、メモリ上でデータの取得と処理をまとめて行うことで、高速の処理速度を実現しています。
Amazon ElastiCacheのエンジン:Redis、Memcached、Valkey
続いて、Amazon ElastiCacheがサポートしている3つのエンジン、Redis、Memcached、Valkeyについてご紹介します。なお、Valkeyは2024年10月に追加された新たなエンジンです。
RedisとMemcachedとの違い
まずは、RedisとMemcachedという従来エンジンの違いについて説明します。Redisは比較的多機能で複数のデータ構造をサポートしており、低レイテンシーが求められるリアルタイム分析や、データの永続性が求められるトランザクションデータなど、幅広い用途に対応しています。対してMemcachedは、シンプルさを重視して設計されています。
Valkeyとは?
Valkeyは、Redisのソースコードから開発されたインメモリデータベースです。Redisはオープンソースのデータベースとして人気を集めていましたが、Redis 7.4以降にライセンス形態が変更されることになり、従来通りにAWSのようなクラウドサービスで商用利用をすることが難しくなりました。そこでRedisの開発に携わっていた人材がRedisをフォーク(ソフトウェアのソースコードを分岐させ、独立した別のソフトウェアを開発すること)した「Valkey」を発表。AWSも、Redisと似た特徴を持つValkeyのサポートを開始することをアナウンスしました。
ValkeyがRedisよりも低価格・高パフォーマンスになることや、Redisからダウンタイムなしでアップグレードできることからも、Valkeyへの移行が推奨されています。
ここまでの内容を踏まえ、Redis、Memcached、Valkeyの主な違いを下記の通り表にまとめました。
Redis | Memcached | Valkey | |
---|---|---|---|
データの型 | 豊富な型に対応 | 文字列のみ | 豊富な型に対応 |
マルチスレッド | × | ○ | ○ |
バックアップ | ○ | × | ○ |
可用性(マルチAZ対応) | ○ | × | ○ |
Amazon ElastiCacheの基本用語
続いて、Amazon ElastiCacheを理解するうえで知っておくべき基本用語、ノード、シャード、クラスターについてご紹介します。
ノード
ノードは、Amazon ElastiCacheにおける最小単位の要素で、データの保存・処理を行っている部分です。
エンジンにRedis、Valkeyを選択する場合、ノードは、データの読み書きを行える「プライマリノード」と読み取り専用の「レプリカノード」の2種類に分かれます。プライマリノード1つに対して、レプリカノードは5つまで組み合わせることが可能です。レプリカノードは、複数のアベイラビリティーゾーン(AZ)に配置してマルチAZ構成にできるため、プライマリノードで障害が発生した場合には、レプリカノードが処理を行うように設定できます。
シャード
AWSにおけるシャードとは、1つのプライマリノードと最大5つまでのレプリカノードから構成されるグループのことです。なお、大規模なデータベースをより速い処理速度で簡易に管理できるようにデータベースを水平分割する方法を、一般的に「シャーディング」あるいは「データベースシャード」と呼びます。
クラスター
クラスターは、シャードあるいはノードをまとめたグループのことです。RedisやValkeyでクラスターモードを有効にすると複数のシャードを保有でき、キャッシュデータを複数のシャードに分割して保存できます。これによってコストを抑えつつ、データの保存容量を増やすことが可能になります。クラスターモードが無効の場合は、クラスターが持てるシャードが1つになります。
Memcachedの場合、クラスターは1~60個のノードを持ち、ノード間で水平に分割してデータを保存できます。
Amazon ElastiCacheの活用事例:The Pokémon Company International
Amazon ElastiCacheの活用事例として、The Pokémon Company International (TPCi)の取り組みをご紹介します。
株式会社ポケモンの子会社であるTPCiでは、ポケモン(ポケットモンスター)に関する最新情報を発信しています。「Pokémon GO」「Pokémon UNITE」などのゲーム・アプリと連携して、ユーザーのプロファイル情報を管理するアカウントサービス「ポケモントレーナークラブ」も、TPCiが提供するコンテンツの1つです。
ポケモントレーナークラブにおいては当初、サードパーティーのNoSQLドキュメントデータベースを使ってユーザー情報を管理していました。しかし、Pokémon GOのユーザー数が2年間で3億人以上にまで上り、レイテンシーが増加していました。
そこで TPCiでは、フルマネージドデータベースを利用するためにAWSへの移行を決断。ユーザーのキャッシュについてはAmazon ElastiCacheを活用し、エンジンとしてRedisとMemcachedの両方を使って管理することにしました。これによって、認証プロセスの高速化を実現するとともに、データベースの管理にかかる時間も大幅に短縮。さらに、移行前の6か月間では168時間も発生していたダウンタイムが、移行後はゼロになりました。
Amazon ElastiCache の料金について
Amazon ElasticCacheの料金は、基本的にノードタイプによって設定されており、利用時間に応じて支払う方式となっています。
Amazon ElastiCache の料金体系
ElastiCacheのノードタイプには、利用した分だけ料金が発生するオンデマンドノードと、事前支払いで割引を受けられるリザーブドノードがあります。また、利用頻度の低いデータをSSDに移動させる「データ階層化」や、サーバーレスオプションといったAmazon ElastiCacheの機能によっても料金が変わります。
その他、AWS無料利用枠を使用できないケースがあるなど、細かな料金設定があるため、詳しくは下記をご参照ください。
参考:料金|Amazon ElastiCacheAmazon ElastiCache の料金例
東京リージョンでの料金例を2つご紹介します。
- 〈2025年2月時点の東京リージョンの料金〉
-
- ノード: 0.0616 USD/時間 ※オンデマンド/Valkey/cache.m5.large※の場合
- ElastiCache 処理装置 (ECPU)料金:0.0027 USD / 100 万 ECPU
- ※ cache.m5.largeのスペック
- vCPU(仮想CPU):2
- メモリ:6.3GB
- ネットワークパフォーマンス:最大 10 ギガビット
〈料金例1〉アプリケーションのキャッシュを保存する(サーバーレス)
ElastiCacheサーバーレスでは、キャッシュのデータストレージとECPUの量に対して料金が発生します。
- 前提条件
-
- データの平均サイズ:約10 GB/時間
- 平均リクエスト:1秒あたり50,000リクエスト
- 1リクエストで1 ECPUを消費する
- 料金計算結果
-
データストレージ料金 0.616 USD ECPU料金 0.486 USD 合計(1時間あたり)
1.102 USD
- 内訳
-
データストレージ料金
10 GB * 0.0616 USD/時間 = 0.616 USDECPU料金
ECPU使用量 = 50,000リクエスト * 3,600秒(1時間)= 1億8000万リクエスト = 1億8000万ECPUであることから、
(180,000,000/1,000,000) * 0.00227 USD = 0.486 USD
〈料金例2〉ECサイトにおいて、トラフィックの急増にも耐えられる、キャッシュ保存の仕組みを構築する
アイドル時とピーク時の平均を算出し、データストレージ料金とECPU料金を計算します。なお、AZ間のデータ転送料金は発生しません。
- 前提条件
-
- アイドル状態でのキャッシュの合計サイズは10GB、リクエストは1秒あたり100,000件。アイドル時間は22時間
- ピーク時のキャッシュの合計サイズは100 GB、リクエストは1秒あたり 100 万件。ピーク時間は2時間
- 1リクエストで1 ECPUを消費する
- 料金計算結果
-
データストレージ料金 1.078 USD ECPU 料金 1.701 USD 合計(1時間あたり)
2.779 USD
- 内訳
-
データストレージ料金
1時間あたりのデータストレージの平均使用量 = ((10 GB * 22時間) + (100 GB * 2時間)) / 24時間 = 17.5 GBであることから、
17.5 GB * 0.0616 USD/時間 = 1.078 USDECPU 料金
1時間あたりの平均ECPU使用量 = (100,000 ECPU/秒 * 3,600秒 * 22時間 + 1,000,000 ECPU/秒 * 3,600秒 * 2時間) / 24時間 = 630,000,000 ECPUであることから、
(630,000,000/1,000,000) ECPU * 0.0027 USD = 1.701 USD
まとめ
Amazon ElastiCacheをうまく活用すれば、データの高速処理によるレイテンシーの短縮や、ユーザーエクスペリエンスの向上が見込めます。導入する際にはRedis、Memcached、Valkeyという3つのエンジンの違いを理解し、用途にあった適切なものを選びましょう。
AWSの導入や移行でお悩みの方は、当社までお気軽にご相談 ください。多数の導入実績を誇る当社が、お客様のニーズに合った最適なプランを提案いたします。
関連サービス
おすすめ記事
-
2020.06.23
Amazon Connectで在宅勤務でも対応できる問合せ窓口を立ち上げてみた
-
2020.08.17
Datadogで実現するモニタリングとオペレーションのオートメーション化
-
2020.04.27
Amazon FSx for Windows ファイルサーバーへの移行と活用方法
-
2020.06.11
Amazon WorkSpacesとは?その特長をまとめてみた
-
2020.06.23
AWSのDevOpsサービスと当社マネージドサービスを活用したDevOpsの実装①~概念編~