スポンサーリンク

【図解】AWSのキャッシュを担う4つのサービスを徹底解説

★悩み★
・Webアプリケーションのレスポンスが遅いけどどうにかならないか。
・AWSでキャッシュを提供してくれるサービスはないのか。
・キャッシュサービスをどの位置に配置するべきなのだろうか。

こういった「悩み」に答えます。

★本記事の内容★
AWSのキャッシュを担う4つのサービスをご紹介

これからご紹介する「AWSのキャッシュを担う4つのサービス」を理解しておくことで、「AWS 認定 ソリューションアーキテクト アソシエイト」の資格に合格しやすくなります。

本記事では「AWSのキャッシュを担う4つのサービス」を解説しつつ、「AWSのキャッシュを利用するユースケース」も具体的に解説します。

この記事を読み終えることで、「AWSのキャッシュを担う4つのサービス」を理解した状態になります。

「AWSとは何か?」や「AWSの基礎的なサービスは何か?」を知りたい方は、以下の記事をご覧ください。

AWSのキャッシュを担う4つのサービスを徹底解説

AWSでキャッシュを担うサービスをご紹介します。

結論から言いますと、AWSには4つのキャッシュのサービスがあります。

★AWSにおけるキャッシュサービス★
・Amazon CloudFrontによるエッジキャッシュ
・Elastic Load Balancingによるセッションの管理
・Amazon ElastiCacheによるデータベースのキャッシュ
・Amazon DynamoDB AcceleratorによるDynamoDB向けのキャッシュ

以降で、上記のサービスに関して説明します。

Amazon CloudFrontによるエッジキャッシュ

Amazon CloudFrontを使うことでエッジキャッシュを実現できます。

★Amazon CloudFrontとは★
エッジロケーションに配備されるエッジキャッシュ提供サービスです。
Amazon CloudFrontを利用することで、AWSサービスまでのネットワーク通信に要する時間を削減できます。

Amazon CloudFrontを使うことで、エンドユーザーは高速にデータを取得できます。

下の例ですと、S3内にあるオブジェクトをAmazon CloudFrontにキャッシュすることで、S3までのアクセスにかかる時間を削減できます。


Amazon CloudFrontを利用する際のポイントは、以下となります。

★ポイント★
キャッシュファイルは、 24 時間後に自動的に有効期限切れになります。
有効期限の決め方に関しては管理者が設定することができます。
参照:キャッシュの有効期限に関する公式ページ

以上が、エッジキャッシュを担うサービスであるAmazon CloudFrontです。

Elastic Load Balancingによるセッションの管理

Elastic Load Balancingによるセッション(認証とアクセス制御)の管理に関してご紹介します。

★Elastic Load Balancing(ELB)とは★
ELBとは、トラフィック分散させるロードバランサーです。
ELBのクライアントのCookieなどを使うことで、通信を特定のサーバにルーティングすることができます。

アプリケーションが動作しているウェブサーバにセッションを保存する方式(スティッキーセッション)があります。

この保存形式をとることで、セッションを取り出すためのネットワーク通信時間を削減できます。

★スティッキーセッションの注意点★
アプリケーションが動作しているウェブサーバが停止すると保存していたセッション情報が消失します。
セッション情報消失対策としてDynamoDBにセッション情報を格納があります。

ELBの機能の1つである「あるユーザの通信を決められたサーバーにルーティングする」ことで、スティッキーセッションを実現できます。


以上が、Elastic Load Balancingを利用したセッションの管理となります。

Amazon ElastiCacheによるDBのキャッシュ

Amazon ElastiCacheによるデータベースのキャッシュに関してご紹介します。

★Amazon ElastiCacheとは★
・Amazon Elastic Cacheは、メモリ内にデータを保持するインメモリデータベースです。
・ElasticCacheの内部ではEC2をクラスタリングし、スケールアウト/アップが容易な作りになっています。

ElastiCacheの種類は2つ

ElastiCacheの種類として、「Redis」と「Memcached」(下図の赤枠)があります。


種類ごとの比較は、以下の通りです。
AWS公式ページでの比較紹介

 MemcachedRedis
ミリ秒未満のレイテンシー
開発者の使いやすさ
データのパーティション
幅広いプログラミング言語のサポート
柔軟なデータ構造
マルチスレッドアーキテクチャ
スナップショット
レプリケーション
トランザクション
Pub/Sub
Lua スクリプト
地理空間のサポート
AWS公式ページに掲載されている比較表

ある特定のデータ構造を使いたい場合は、Redisを選択しましょう。

今後スケールアップする予定がある場合、Memcachedを選択しましょう。

MemCachedの方がスケールアップさせた時の性能がRedisより大幅に向上します。

キャッシュするタイミング

キャッシュするタイミングとして、2パターン考えられます。

1つ目のパターンとして、「遅延読み込み」があります。

「遅延読み込み」の流れは、以下のようになります。


「遅延読み込み」の特徴は、以下となります。

★遅延読み込みの特徴★
実際に読み込みされたデータのみをキャッシュに保存します。そのため、不要なデータでキャッシュが枯渇することを防ぐことができます。
ただし、キャッシュに欲しいデータがない場合、アプリケーションの処理速度が低下します。

2つ目のパターンとして、「ライトスルー」があります。

「ライトスルー」の流れは、以下のようになります。


「ライトスルー」の特徴は、以下となります。

★ライトスルーの特徴★
ライトスルーでは、データベースにデータを保存する際にキャッシュにも保存する方式です。
キャッシュ内にあるデータとデータベース内にあるデータに不整合が発生しない利点があります。
読み込み頻度が少ないデータもキャッシュに保存されるため、キャッシュが枯渇しやすいです。

以上が、「Amazon ElastiCacheによるDBのキャッシュ」となります。

Amazon DynamoDB AcceleratorによるDynamoDB向けのキャッシュ

Amazon DynamoDB AcceleratorはDynamoDB向けのキャッシュです。

★Amazon DynamoDB Accelerator(略称はDAX)とは★
Amazon DynamoDB Acceleratorは、DynamoDB専用のキャッシュです。
完全マネージド型で容易にスケールアウトができるサービスです。
DAX利用することで、DynamoDBの読み込み負荷が軽減できます。

Amazon DynamoDB Acceleratorは、以下のように利用します。

引用元:AWS公式ページ

以上が、「Amazon DynamoDB AcceleratorによるDynamoDB向けのキャッシュ」となります。

【まとめ】AWSのキャッシュを担う4つのサービスを徹底解説

今回の記事を通して、AWSのキャッシュを担う4つのサービスをご紹介することで、以下の悩みを解消しました。

★悩み★
・Webアプリケーションのレスポンスが遅いけどどうにかならないか。
・AWSでキャッシュを提供してくれるサービスはないのか。
・キャッシュサービスをどの位置に配置するべきなのだろうか。

「AWSでのキャッシュは?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

タイトルとURLをコピーしました