クラウド向けのインメモリデータストアAmazon ElastiCacheでリアルタイム処理を強化

リアルタイム性が求められるアプリケーションは、たとえ大量のユーザーが頻繁にアクセスしたとしても、滞りなくコンテンツを配信できるようなITリソースが必須です。「Amazon ElastiCache」は、ミリ秒単位の応答時間が必要とされるような、厳しい要件にも対応できるインメモリデータストアを構築・運用・スケーリングできるサービスです。本コラムでは、その特徴や利用シーンを紹介します。

インメモリを使った高速データ配信環境を提供するAmazon ElastiCache

ソーシャルメディア、ゲーム、オンライン広告配信、配車サービスなど、リアルタイム性の求められるアプリケーションには、ユーザーのリクエストに対してより迅速に応答することが求められます。また、同時に利用するユーザーが増えたとしても、パフォーマンスを維持できなければなりません。応答が遅いサービスは、ユーザーがフラストレーションを感じ、利用しなくなる恐れがあるからです。

Amazon ElastiCacheは、分散型インメモリキャッシュシステムである「Memcached」および「Redis」をAWSクラウドにセットアップして実行、管理できるサービスです(利用の際は、目的に応じてMemcachedかRedisのいずれか、または両方を利用します)。高いスループットと低いレイテンシーのインメモリデータストアまたはインメモリキャッシュから、大量のデータを高速に配信できるアプリケーションの構築が可能です。クラウドサービスなので、ハードウェアの調達やソフトウェアの更新、情報セキュリティ設定など、設備機器の管理は不要です。アプリケーションに対する需要に応じてスケーリングも可能です。

インメモリデータストアをデータベースとして使用して高速なコンテンツ配信をサポート

コンテンツデータをキャッシュして瞬時に配信する場合は、「Amazon CloudFront」などの高速コンテンツ配信ネットワーク (CDN) サービスの利用でもいいと思いますが、リアルタイムにデータを頻繁にやりとりして処理し、瞬時に応答しなければならないアプリケーションの場合はAmazon ElastiCacheが向いているでしょう。

オブジェクトのキャッシュにはMemcached用のAmazon ElastiCache

Memcached は、高パフォーマンスキャッシュやセッションストアとして使用できる、分散型インメモリストアです。データベースのクエリ結果、セッション、Webページ、API、画像ファイルやメタデータなどのオブジェクトのキャッシュに使われています。マルチスレッドアーキテクチャに対応しているので、コンピューティング性能をアップすることで処理の向上が見込めます。

このため、データベースなどのオブジェクトをキャッシュし、頻繁にアクセスされるデータをインメモリから高速に配信したい場合は、Memcached用Amazon ElastiCacheがおすすめです。

データベースへ問い合わせた結果やファイルなどのオブジェクトのキャッシュに向いている

Amazon ElastiCacheにおける最小の構成要素をノード、ひとつ以上のノードの集合をクラスターと呼んでいます。もし既存のアプリケーションがすでにMemcachedを使用していたら、Memcached用Amazon ElastiCacheにも容易に対応できます。対応するために必要な情報は、デプロイしたElastiCacheノードのホスト名とポート番号だけです。そして、Memcachedの自動検出機能を使用することで、アプリケーションはクラスター内のすべてのノードを特定して利用できます。利用可能なホストやポートのリスト管理は必要ないのです。

各ノードには全ノードの設定情報が保持されているので、どのノードも設定情報をクライアントに渡せる

多様な要求に対応可能なRedis用のAmazon ElastiCache

Redisにはさまざまなデータ構造が用意されています。データのキャッシュだけでなく、チャットやメッセージング、ゲームの順位表、地理情報、機械学習、メディアストリーミング、リアルタイム分析など、さまざまな要件を満たしたい場合は、Redis用Amazon ElastiCacheが向いています。

Redisがサポートしているデータタイプ
  • Strings – 最大512MBのテキストまたはバイナリデータ
  • Lists – 追加順に並べられた文字列の集合
  • Sets – 順序なしの文字列の集合。他のSet型と演算を行うことができる
  • Sorted Sets – 値ごとに並べられたSet
  • Hashes – フィールドと値のリストを保存するデータ構造
  • Bitmaps – ビットレベルの演算ができるデータタイプ
  • HyperLogLogs – データセット内の一意の項目を推定する確率的データ構造

Redisでは、処理能力や耐障害性をアップできるよう、データを複数のレプリカサーバーに複製できる非同期レプリケーションをサポートしています。複数のアベイラビリティゾーン(AWSの各リージョンに内に存在するデータセンター)にレプリカを配置することで、アベイラビリティゾーンに障害が発生したときのデータ保全に備えられます。

ノードに障害が発生したときに、自動的に代替システムに切り替える仕組みも備えている

さらに、特定の時点のSnapshotを取得したり、RDBファイルを生成したりしてAmazon S3へバックアップしておいて、リストアすることも可能です。

スナップショットを使用してデータをディスクにバックアップできる

Redis利用例:キャッシュ

Memcachedと同じく、データベースクエリ結果のキャッシングや、Webページや画像、頻繁に使われるオブジェクトのキャッシュもRedisの得意とする用途のひとつです。オブジェクトストレージ、非定型データ、リレーショナルデータ、NoSQLなどさまざまなファイルやデータのキャッシュに利用できます。

Amazon RDSやAmazon S3など、データベースやファイルストアのキャッシュに活用

Redis利用例:チャットやメッセージング

Redisがサポートするさまざまなデータ構造により、リアルタイム性のあるチャットやソーシャルメディアのフィード、コメントストリームなどの提供が可能です。

パブリッシャーがチャンネル別のメッセージを生成し、各購読者に届ける仕組みも提供可能

Redis利用例:ゲームのリーダーボード

RedisのSorted Setsデータ構造では、スコア順に並べ替えたリストを維持できるので、リアリルタイムに変動するゲームのスコア順位も作成できます。

Sorted Setsにより、スコア順の表を作ったり、特定のユーザーの順位を取得したりできる

Redis利用例:ユーザーのセッションをキャッシュ

ゲームやECサイト、SNSなどではユーザーのセッション管理が必要になります。Redisでは、ユーザープロファイル、認証情報、セッション状態、ユーザー固有の設定や行動履歴などのセッションデータを管理することもできます。

ユーザー固有の情報をキャッシュしておくことで、快適な利用体験を提供できる

Redis利用例:リッチメディアストリーミング

ライブストリーミングや動画配信サービスでの配信コンテンツやユーザー認証のためのデータをRedisで管理し、数百万人の同時視聴に役立てることができます。

コンテンツのインデックスやユーザーの情報をキャッシュして快適な視聴環境を提供

Redis利用例:地理情報の利用

Redisには、地理情報をリアルタイムに保存して分析するためのコマンドが用意されています。運転時間、運転距離、重要地点などの位置情報に基づく機能を、カーナビや配車サービスなどのアプリケーションに活用できます。

移動するユーザーの位置に基づいておすすめのお店を瞬時に紹介することもできる

Redis利用例:機械学習でのライブデータ処理

金融やゲームでの不正検出、オンライン広告のリアルタイム入札、マッチングサービスでのマッチングなどでは、データをリアルタイムに高速に処理する必要があります。これらの分野では、特徴のあるデータを素早く自動的に処理する機械学習が活用されることも多くなっており、Redisのインメモリデータストアが活用されています。

インメモリデータストアに機械学習モデルを迅速に構築し、トレーニングや意思決定のための処理を行う

Redis利用例:ストリームデータのリアルタイム分析

Redisは「Apache Kafka」や「Amazon Kinesis」などのストリーミングデータをリアルタイムで収集、処理ができるサービスのデータストアとして活用され、IoTデバイスやソーシャルメディア、広告のターゲティングなどの分析に役立っています。

リアルタイムのデータの取り込みから分析まで、高速に処理ができる

Amazon ElastiCacheの料金

多くのAWSサービスと同じくAmazon ElastiCacheの利用には初期費用や最低料金の設定がない従量課金です。詳しくはAWSの公式ページをご覧ください

Amazon ElastiCache の料金
https://aws.amazon.com/jp/elasticache/pricing/別ウィンドウで開きます

まとめ

Amazon ElastiCacheは、インメモリをキャッシュやデータストアとして使うことで、大量データをリアルタイムに処理するサービスで、分散型インメモリキャッシュシステムである「Memcached」および「Redis」をAWS内でより手軽に使うことができます。

Memcachedはシンプルなファイルやデータオブジェクトのキャッシュに向いています。自動検出機能でより高速の処理をサポートします。また、マルチスレッド対応なので、ユーザーが増えた場合は、コンピューティング性能をアップさせることで対処できます。

Redisは、レプリケーションやスナップショットによる可用性の高いシステム構築にも対応しています。また、対応するデータタイプが豊富なため、ファイルやデータのキャッシュだけでなく、メッセージング、ゲームのリアルタイム順位、ユーザー情報の即時反映、地理情報の反映、機械学習によるリアルタイムデータ分析など多様な要求に応えられます。

クラウド向けのインメモリデータストアサービスであるAmazon ElastiCacheは、リアルタイムにデータを頻繁にやりとりして処理し、瞬時に応答しなければならないアプリケーション開発において有用です。開発アプリケーションの目的や特性、可用性、拡張性などを踏まえて適切に設計して利用しましょう。

移行準備段階で知っておくべきAmazon Web Servicesの
サービスを学び、具体的にクラウド検討を考える!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る