COLUMN
クラウド向けのインメモリデータストア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の
サービスを学び、具体的にクラウド検討を考える!
RECOMMEND
その他のコラム
無料ダウンロード
自社のクラウド導入に必要な知識、ポイントを
この1冊に総まとめ!
あなたはクラウド化の
何の情報を知りたいですか?
- そもそも自社は本当にクラウド化すべき?オンプレとクラウドの違いは?
- 【AWS・Azure・Google Cloud】
どれが自社に最もマッチするの? - 情シス担当者の負荷を減らしてコストを軽減するクラウド化のポイントは?
- 自社のクラウド導入を実現するまでの具体的な流れ・検討する順番は?
初めての自社クラウド導入、
わからないことが多く困ってしまいますよね。
NTT東日本では
そんなあなたにクラウド導入に必要な情報を
1冊の冊子にまとめました!
クラウド化のポイントを知らずに導入を進めると、以下のような事になってしまうことも・・・
- システムインフラの維持にかかるトータルコストがあまり変わらない。。
- 情シス担当者の負担が減らない。。
- セキュリティ性・速度など、クラウド期待する効果を十分に享受できない。。
理想的なクラウド環境を実現するためにも、
最低限の4つのポイントを
抑えておきたいところです。
-
そもそも”クラウド化”とは?
その本質的なメリット・デメリット - 自社にとって
最適なクラウド環境構築のポイント - コストを抑えるための
具体的なコツ - 既存環境からスムーズにクラウド化を
実現するためのロードマップ
など、この1冊だけで自社のクラウド化のポイントが簡単に理解できます。
またNTT東日本でクラウド化を実現し
問題を解決した事例や、
導入サポートサービスも掲載しているので、
ぜひダウンロードして読んでみてください。
面倒でお困りのあなたへ
クラウドのご相談できます!
無料オンライン相談窓口
NTT東日本なら貴社のクラウド導入設計から
ネットワーク環境構築・セキュリティ・運用まで
”ワンストップ支援”が可能です!
NTT東日本が選ばれる5つの理由
- クラウド導入を
0からワンストップでサポート可能! - 全体最適におけるコスト効率・業務効率の改善を
中立的にご提案 - クラウド環境に問題がないか、
第3者目線でチェック
してもらいたい - 安心の24時間・365日の対応・保守
- NTT東日本が保有する豊富なサービスの組み合わせで
”課題解決”と”コスト軽減”を両立
特に以下に当てはまる方はお気軽に
ご相談ください。
- さまざまな種類やクラウド提供事業者があってどれが自社に適切かわからない
- オンプレミスのままがよいのか、クラウド移行すべきなのか、迷っている
- オンプレミスとクラウド移行した際のコスト比較を行いたい
- AWSとAzure、どちらのクラウドが自社に適切かわからない
- クラウド環境に問題がないか、第3者目線でチェックしてもらいたい
- クラウド利用中、ネットワークの速度が遅くて業務に支障がでている
クラウドを熟知するプロが、クラウド導入におけるお客さまのLAN 環境や接続ネットワーク、
クラウドサービスまでトータルにお客さまのお悩みや課題の解決をサポートします。
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。