コンピューティングにおいて、キャッシュは、データのサブセットが保存される (通常は一時的) 高速なデータストレージレイヤーです。このため、同じデータのリクエストが今後発生した場合、データのプライマリストレージロケーションにアクセスするよりも高速にデータが供給されます。キャッシュにより、以前に取得または計算されたデータを効率的に再利用できるようになります。キャッシュ内のデータは、一般的に RAM (ランダムアクセスメモリ) などの高速にアクセスできるハードウェアに保存され、ソフトウェアコンポーネントとの相関関係にも使用されます。キャッシュの主な目的は、基盤となる低速なストレージレイヤーにアクセスする必要を減らすことで、データ取得性能を向上することです。通常、データベース内のデータは完全で耐久性があるのに対して、容量よりも速度が優先されるキャッシュでは、一般的に、データのサブセットが一時的に保存されます。
キャッシュは、オペレーティングシステム、コンテンツ配信ネットワーク (CDN) や DNS などのネットワーキングレイヤー、ウェブアプリケーション、データベースといったさまざまなテクノロジーのレイヤーにわたって適用して活用できます。
RAM やインメモリエンジンによってサポートされる高いリクエストレートまたは IOPS (1 秒あたりの入力/出力オペレーション数) のため、キャッシュによってデータ取得性能が向上し、規模に応じてコストを削減できるようになります。従来のデータベースとディスクベースのハードウェアを使用して同一の規模をサポートするには、リソースの追加が必要になります。このような追加のリソースによってコストは上昇するものの、インメモリキャッシュによる低レイテンシーのパフォーマンスは実現できません。
キャッシュを使用すると、Q&A ポータル、ゲーム、メディア共有、ソーシャルネットワーキングなどの読み取り操作の多いアプリケーションワークロードのレイテンシーを大幅に削減し、IOPS を改善できます。キャッシュされた情報には、データベースクエリの結果、計算負荷の高い計算、API リクエスト/応答、ウェブアーティファクト (HTML、JavaScript、イメージファイルなど) を含めることができます。レコメンデーションエンジンやハイパフォーマンスコンピューティングシミュレーションなど、データセットを操作して大量の演算を行うワークロードでも、キャッシュとして機能するインメモリデータレイヤーの利点を活用できます。これらのアプリケーションでは、数百個のノードにまたがる場合があるマシンのクラスター全体で、非常に大規模なデータセットにリアルタイムでアクセスする必要があります。基盤となるハードウェアの速度のため、このようなアプリケーションでは、このデータをディスクベースストアで操作することが大きなボトルネックとなります。
分散コンピューティング環境では、専用のキャッシュレイヤーにより、キャッシュから独立して、システムとアプリケーションを独自のライフサイクルで実行できるようになります。キャッシュに影響を与えるリスクはありません。キャッシュは、独自のライフサイクルとアーキテクチャトポロジを備え、さまざまなシステムからアクセスされる一元的なレイヤーとして機能します。これが特に必要となるのは、アプリケーションノードが動的にスケールインおよびスケールアウトされるシステムです。キャッシュがアプリケーションやキャッシュを使用しているシステムと同じノードにある場合、スケーリングがキャッシュの整合性に影響を与える場合があります。また、ローカルキャッシュを使用する場合、データを消費するローカルアプリケーションのみがローカルキャッシュを活用できます。分散キャッシュ環境では、データが複数のキャッシュサーバーにまたがる場合があるため、データのコンシューマーすべてに活用されるように、一元的な場所に保存されます。

| レイヤー | クライアント側 | DNS | ウェブ | アプリケーション | データベース |
| ユースケース | ウェブサイトからのウェブコンテンツの取得を高速化 (ブラウザまたはデバイス) | ドメインから IP 解決 | ウェブ/アプリケーションサーバーからのウェブコンテンツの取得を高速化。ウェブセッションの管理 (サーバー側) | アプリケーションのパフォーマンスとデータアクセスを高速化 | データベースクエリリクエストに関連するレイテンシーの低減 |
| テクノロジー | HTTP キャッシュヘッダー、ブラウザ | DNS サーバー | HTTP キャッシュヘッダー、CDN、リバースプロキシ、ウェブアクセラレーター、キー/値ストア | キー/値データストア、ローカルキャッシュ | データベースバッファ、キー/値データストア |
| ソリューション | ブラウザ固有 | Amazon Route 53 | Amazon CloudFront、Redis 用 ElastiCache、Memcached 用 ElastiCache、パートナーソリューション | アプリケーションフレームワーク、Redis 用 ElastiCache、Memcached 用 ElastiCache、パートナーソリューション | Redis 用 ElastiCache、Memcached 用 ElastiCache |
キャッシュレイヤーを実装する際、キャッシュされたデータの有効性を把握することが重要です。正常なキャッシュは、高いヒットレートにつながります。つまり、データが取得された時に存在するということです。キャッシュミスは、取得されたデータがキャッシュに存在しない場合に発生します。TTL (有効期限) などのコントロールを適用して、必要に応じてデータの有効期限が切れるように設定できます。別の考慮事項は、キャッシュ環境に高可用性が必要かどうかという点です。これを実現するために、Redis などのインメモリエンジンを使用できます。場合によっては、プライマリロケーションからのデータのキャッシュとは異なり、インメモリレイヤーをスタンドアロンのデータストレージレイヤーとして使用できます。このシナリオでは、これが適しているかどうかを判断するために、インメモリエンジン内に存在するデータに対して、適切な RTO (停止してから復旧までにかかる時間を表す復旧時間目標) および RPO (復旧でキャプチャされた最後のポイントまたはトランザクションを表す復旧ポイント目標) を定義することが重要です。さまざまなインメモリエンジンの設計戦略と機能を適用して、RTO および RPO の大半の要件を満たすことができます。
Amazon ElastiCache は、クラウド内のインメモリデータストアまたはキャッシュのデプロイ、運用、スケーリングを容易にするウェブサービスです。このサービスでは、低速のディスクベースのデータベースに完全に依存せずに、高速のマネージドインメモリデータストアから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスが向上されます。
効果的なキャッシュ戦略を実装する方法の詳細については、インメモリキャッシュに関する技術的なホワイトペーパーを参照してください。


メモリはディスク (磁気または SSD) よりも桁違いに高速であるため、インメモリキャッシュからのデータ読み取りは非常に高速 (ミリ秒以下) です。このきわめて高速なデータアクセスにより、アプリケーションの全体的なパフォーマンスが向上されます。

単一のキャッシュインスタンスは、数十万単位の IOPS (1 秒あたりの入力/出力オペレーション数) に対応でき、多数のデータベースインスタンスを置き換える可能性があるため、総コストの削減につながります。これは、プライマリデータベースがスループットごとに課金される場合に、特に重要です。このような場合、価格の節約が数十パーセントポイントにもなる可能性があります。

重要な読み取り負荷の一部をバックエンドデータベースからインメモリレイヤーにリダイレクトすることで、キャッシュではデータベースの負荷が軽減されるため、負荷時の低速なパフォーマンスやスパイク時に発生するクラッシュでさえも防止できます。

最新のアプリケーションにおける一般的な課題は、アプリケーションの使用量のスパイク時に対応することです。例えば、スーパーボウルまたは選挙期間中のソーシャルアプリケーション、ブラックフライデーの e コマースウェブサイトなどがあります。データベースへの負荷が増加すると、データを取得するレイテンシーが大きくなるため、全体的なアプリケーションのパフォーマンスを予測できません。高スループットのインメモリキャッシュを使用することで、この問題を軽減できます。

多くのアプリケーションでは、有名人のプロフィールや人気製品など、データの小さなサブセットへのアクセス数が他の部分よりも多くなる可能性があります。これにより、データベースにホットスポットが発生し、最も頻繁に使用されるデータのスループット要件に基づいて、データベースリソースの過剰プロビジョニングが必要になる場合があります。インメモリキャッシュに一般的なキーを保存することにより、過剰プロビジョニングの必要を軽減すると同時に、最も頻繁にアクセスされるデータに対して高速で予測可能なパフォーマンスを提供できます。

低レイテンシーに加えて、インメモリシステムでは、同等のディスクベースのデータベースと比較して、はるかに高いリクエストレート (IOPS) が提供されます。分散されたサイドキャッシュとして使用される単一のインスタンスにより、毎秒数十万個のリクエストに対応できます。
Amazon ElastiCache のような完全マネージド型サービスを使用して、クラウド内でキャッシュの使用を簡単に開始できます。これにより、セットアップの複雑さやキャッシュの管理が必要なくなり、組織に価値をもたらす作業に集中できるようになります。今すぐ Amazon ElastiCache にサインアップしてください。




















