メインコンテンツまでスキップ

キャッシュの概念 一般的なキャッシュの使用例

このレッスンでは、API レスポンスのキャッシュ、データベースのクエリ結果、静的アセットなど、キャッシュの一般的な使用例を紹介します。また、一般的なデータベースが提供するレベルの耐久性が必要ないセッションやパーソナライゼーション情報のように、キャッシュをプライマリデータストアとして使用することも取り上げます。

Video

Transcript

このモジュールでは、キャッシングの一般的な使用例と、それらがキャッシングとどのように連携するかについて説明します。

最初の一般的なユースケースはAPIレスポンスだ。これは、アプリケーションのパフォーマンスを向上させ、やや静的なコンテンツを生成するAPIへの呼び出しを減らすために、一般的に使用されるAPIコールをキャッシュする場所です。例えば、商品情報を取得するためにマイクロサービスへのAPIを使用しているeコマースサイトを考えてみましょう。

このAPIは、ユーザーが商品詳細ページにアクセスするたびに呼び出されます。サーバーの負荷を減らし、ウェブサイトのパフォーマンスを向上させるために、APIのレスポンスをキャッシュすることができる。そのため、ユーザーが商品詳細ページにアクセスすると、ウェブサイトはキャッシュをチェックして、レスポンスがすでに保存されているかどうかを確認することができます。もし保存されていれば、APIを再度呼び出すことなく、キャッシュされたレスポンスを即座に返すことができます。

2つ目のユースケースは、データベースのクエリー結果をキャッシュすることです。そしてこれは、私が目にする中で最も一般的かつ重要なものの1つかもしれません。これは、よく使われるデータをキャッシュしてデータベースの負荷を減らし、アプリケーションのパフォーマンスを向上させるというものです。例えば、記事のデータベースを持つニュースサイトを考えてみましょう。ユーザーがホームページにアクセスすると、ウェブサイトは最新の記事を表示するはずです。これらの記事がキャッシュにあれば、顧客はより速く、システム全体の負荷とコストを抑えてサービスを受けることができます。

3つ目のユースケースは、静的アセットのキャッシュです。このユースケースでは、画像ファイル、データファイル、設定ファイル、スクリプトなどのキャッシュについて議論します。これらのアセットの中には、キャッシュサーバーにキャッシュされるものもあれば、ユーザーのクライアントにキャッシュするのが理にかなっているものもあります。これらのアイテムは頻繁に変更されるわけではありませんが、頻繁に使用され、ユーザーにとって非常に迅速に利用できる必要があります。

ユーザーと接するものであるため、データが非常に速く利用可能で、変更可能であることが重要です。多くの場合、このようなデータは刹那的なものです。例えば、ユーザー・セッションが終わると、データはもう必要なくなります。したがって、キャッシュはまさにこれを保存するための素晴らしい場所なのです。time to live値を設定し、ユーザーセッションがタイムアウトすると、キャッシュされたデータはあなたの代わりにキャッシュによって削除されます。

最後のシナリオは、ユーザー・セッションとパーソナライゼーション・データです。これは厳密にはキャッシュではありません。どちらかというと一次データストアに近いものだが、一般的なデータベースが提供するレベルの耐久性を必要としないため、キャッシュの低コストと優れたパフォーマンスの恩恵を受けることができます。これは、ウェブやアプリの使用データ、ショッピングカート情報、サイト設定などです。このデータの中には静的なものもあるかもしれないが、ほとんどの場合、ユーザーがウェブサイトやアプリをナビゲートするにつれて素早く変化します。

キャッシュに関するこれら4つの一般的な使用例は、データをキャッシュしてユーザーにより良い体験を提供し、自社のコストを削減し、アーキテクチャをより良く管理する方法のほんの始まりに過ぎません。