リレーショナルデータベースは、ほとんどのアプリケーションの基礎になります。ただし、スケーラビリティと低レイテンシーに関しては、パフォーマンスを向上させるためにできることはほとんどありません。読み取りをスケーリングするためにレプリカを追加しても、ディスクベースのストレージによって課される物理的な制限が設けられます。この制限に対処するための最も効果的な戦略は、ディスクベースのデータベースにメモリ内キャッシュを追加することです。

このチュートリアルでは、リレーショナルデータベースにインメモリキャッシュのレイヤーを追加して、アプリケーションのパフォーマンスを向上させる方法を学びます。MySQL データベースの上に、Amazon ElastiCache for Redis を使用してキャッシュアサイド戦略を実装します。キャッシュアサイド戦略は、データベースのパフォーマンスを向上させるための最も一般的なオプションです。アプリケーションがデータベースからデータを読み取る必要がある場合、最初にキャッシュをクエリします。データが見つからない場合、アプリケーションはデータベースをクエリし、結果をキャッシュに入力します。基になるデータベースで関連するレコードが変更された場合にキャッシュを無効にする方法はたくさんありますが、このチュートリアルでは、Redis が提供する有効期限 (TTL) 機能を使用します。

Redis ノードの ElastiCache ノードと、このチュートリアルで作成された MySQL データベースは、AWS 無料利用枠の対象です。

Amazon ElastiCache for Redis を使用したキャッシュアサイドの実装

時間: 120 分

コスト: 無料利用枠の対象

使用例: キャッシュ、スケーリング、高可用性、リアルタイムアプリケーション

製品: Amazon ElastiCache for Redis、Amazon RDS MySQL、および AWS 無料利用枠

対象者: 開発者

レベル: 初級から中級

最終更新日: 2019 年 7 月 25 日

*この見積もりでは、ユーザーがチュートリアル全体で推奨される設定通り、2 時間以内にすべてのリソースを終了することを前提としています。

**過去 24 時間以内に作成されたアカウントは、このプロジェクトに必要なリソースへのアクセス権をまだ付与されていない可能性があります。

前提条件セクションを完了するために 20 分を割り当ててください。 

このチュートリアルでは、いくつかのメカニズムを説明し、いくつかのキャッシングテクニックを説明するために Python で記述された例を示しています。順調に進めば、簡単に選択した言語にコードを変換できます。

このチュートリアルを完了するには、EC2 インスタンスにアクセスする必要があります。まだ実行していない場合は、次の手順通りにプロビジョニングします。

EC2 インスタンスにアクセスしたら、次のコマンドを実行します。 

$ sudo yum install git -y
$ sudo yum install mysql -y
$ sudo yum install python3 -y
$ pip3 install --user virtualenv
$ git clone https://github.com/aws-samples/amazon-elasticache-samples/
$ cd amazon-elasticache-samples/database-caching
$ virtualenv venv
$ source ./venv/bin/activate
$ pip3 install -r requirements.txt

これで、チュートリアルを開始する準備が整いました。