【AWS】Amazon ElastiCacheとEC2の活用法


■はじめに

ネット環境がより快適になっていく昨今、リアルタイム性の求められるアプリケーションには、軽快でスピーディな応答が求められるようになってきています。ユーザーのリクエストに対してより迅速に応答することが重要で、遅延の多いサービスではユーザーが他のサービスに流れていってしまうからです。一度に大量のユーザーがアクセスしたとしても、円滑にコンテンツを配信できるようなITリソースが必要です。「Amazon ElastiCache」は、ミリ秒単位の応答時間が必要とされるような、厳しい要件にも対応できるインメモリデータストアを構築・運用・スケーリングできるサービスです。

■そもそもキャッシュとは

キャッシュとは、一度アクセスしたウェブページの情報(データ)をブラウザやノード側で一時的に保管し、次にまた同じページにアクセスした際の表示を速くする仕組みまたはデータそのものを指します。ウェブページを表示する際には、都度そのページのデータをダウンロードする必要が出てくるわけですが、画像やテキスト情報などのキャッシュという一時的な保存データが、ユーザーの端末側にあることで、表示スピードを向上させる効果があります。一般的にキャッシュと言われたら上記のような仕組みやデータそのもののことを指すことが多いでしょう。

■Amazon ElastiCacheとは

メインメモリキャッシュのデプロイ、運用、スケーリングをクラウド内で簡単に実行できるAmazonが提供しているウェブサービスのうちのひとつです。このサービスは、低速のディスクベースのデータベースに依存せず、AWSによって管理されたメモリ内のキャッシュから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させることができます。Amazon ElastiCacheはデータをノードのメモリに保存するので、非常に高速なデータの出し入れが可能となるのです。

●インメモリキャッシュとその仕組み

データベースのクエリは、キャッシュを検索するよりも常に時間がかかることが多く、コストがかさみます。インメモリキャッシュとは、データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリにキャッシュを保存することでディスクにアクセスする必要がなくなり、応答時間を短縮することができます。クエリの結果などもキャッシュすることで、クエリのコストは初回に発生するだけで済み、その後、クエリを再実行する必要がなく、複数回にわたってデータをすばやく取得できます。メインメモリキャッシュにデータが存在しない場合はデータベースにアクセスして取得することになります。

●インメモリデータベースとは

インメモリデータベースとは、専用データベースの一種です。データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリに主に依存しています。AWSのインメモリデータベースは、ディスクにアクセスする必要性を除くことによって、最小限の応答時間を達成するよう設計されています。

AWSクラウド内の様々なオープンソースと互換しているインメモリデータストアをデータベースとして使用することで、高スループットで低レイテンシーにデータを取得して、大量のデータを扱うアプリケーションを構築したり、既存のアプリケーションのパフォーマンスを向上させたりすることが可能です。

■サポートしているエンジン

Amazon ElastiCache は、次の 2 つのオープンソースインメモリストア(エンジン)をサポートしています。RedisMemcachedになります。可用性の観点では色々な構成が取れるRedisの方が性能が良さそうでしたが、単一ノードとしてのパフォーマンスはマルチスレッドで動作するMemcachedに軍配が上がりそうです。ただ、Memcachedはシンプルなデータしか格納できないそうなので、データを保存する場合にはアプリケーション側で格納できる型に変更する必要が出てきます。Redisでは豊富なデータ型を扱えます。さらに正規表現を用いたキーの曖昧検索、トランザクションのよるデータの更新など豊富な機能があります。シンプルさのMemcachedか痒い所に手が届くRedisかといった感じだと思います。

■おわりに

EC2との疎通確認の方法やElastiCacheコンソール上でのクラスター作成・設定は色々なサイトで解説されているので割愛しました。本記事執筆時点でもさほど操作に違いはありませんでした。ElastiCacheを利用してみようと思っている方へ少しでも情報が提供できればと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です