ElastiCache の仕組み - Amazon ElastiCache

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ElastiCache の仕組み

ここでは、ElastiCache のデプロイの主なコンポーネントの概要を確認できます。

キャッシュとキャッシュエンジン

キャッシュは、キャッシュされたデータを保存するために使用できるメモリ内データストアです。通常、アプリケーションは応答時間を最適化するために、頻繁にアクセスされるデータをキャッシュにキャッシュします。ElastiCache には、サーバーレスクラスターと独自設計型クラスターの 2 つのデプロイオプションがあります。「デプロイオプションの選択」を参照してください。

注記

Amazon ElastiCache は、Valkey、Memcached、Redis OSS エンジンで動作します。必要なエンジンがわからない場合は、このガイドの「Valkey、Memcached、Redis OSS の独自設計型キャッシュの比較」を参照してください。

ElastiCache の仕組み

ElastiCache サーバーレス

ElastiCache サーバーレスでは、キャパシティプランニング、ハードウェア管理、クラスター設計を気にせずにキャッシュを作成できます。キャッシュの名前を指定するだけで、Valkey、Memcached、Redis OSS クライアントで設定してキャッシュへのアクセスを開始できる単一のエンドポイントを受け取ります。

注記
  • ElastiCache Serverless は Valkey、Memcached、または Redis OSS をクラスターモードで実行し、TLS をサポートするクライアントとのみ互換性があります。

主な利点

  • キャパシティプランニングなし: ElastiCache サーバーレスでは、キャパシティを計画する必要がありません。ElastiCache サーバーレスは、キャッシュのメモリ、コンピューティング、ネットワーク帯域幅の使用状況を継続的に監視し、垂直方向と水平方向の両方にスケールします。これにより、キャッシュノードのサイズが大きくなるのと同時に、並行してスケールアウトオペレーションが開始され、キャッシュが常にアプリケーションの要件を満たすように拡張できるようになります。

  • 従量制料金: ElastiCache サーバーレスでは、キャッシュに保存されたデータとワークロードによって使用されたコンピューティングに対して料金が発生します。「料金ディメンション」を参照してください。

  • 高可用性: ElastiCache サーバーレスは、データを複数のアベイラビリティーゾーン (AZ) に自動的に複製して高可用性を実現します。基盤となるキャッシュノードを自動的に監視し、障害が発生した場合はそれらを置き換えます。すべてのキャッシュで、99.99% の可用性 SLA を提供します。

  • ソフトウェアの自動アップグレード: ElastiCache サーバーレスは、アプリケーションの可用性に影響を与えることなく、キャッシュを最新のマイナーバージョンとパッチソフトウェアバージョンに自動的にアップグレードします。新しいメジャーバージョンが利用可能になると、ElastiCache から通知が届きます。

  • セキュリティ: サーバーレスでは、転送中および保管中のすべてのデータが暗号化されます。保管中のデータを暗号化するには、サービス管理キーを使用するか、独自のカスタマー管理キーを使用できます。

次の図は、ElastiCache サーバーレスの仕組みを示しています。

アベイラビリティーゾーンからカスタマー VPC へ、そしてサービス VPC への ElastiCache サーバーレスキャッシュの動作の図。

新しいサーバーレスキャッシュを作成すると、ElastiCache は VPC 内の選択したサブネットに仮想プライベートクラウド (VPC) エンドポイントを作成します。アプリケーションはこれらの VPC エンドポイントを介してキャッシュに接続できます。

ElastiCache サーバーレスでは、アプリケーションの接続先となる単一の DNS エンドポイントが用意されます。エンドポイントへの新しい接続をリクエストすると、ElastiCache サーバーレスはプロキシレイヤーを介してすべてのキャッシュ接続を処理します。プロキシレイヤーでは、基盤となるクラスターが変更された場合にクライアントがクラスタートポロジを再検出する必要がないため、複雑なクライアント設定が軽減されます。プロキシレイヤーは、Network Load Balancer を使用して接続を処理する一連のプロキシノードです。

アプリケーションが新しいキャッシュ接続を作成すると、リクエストは Network Load Balancer によってプロキシノードに送信されます。アプリケーションがキャッシュコマンドを実行すると、アプリケーションに接続されているプロキシノードがキャッシュ内のキャッシュノードでリクエストを実行します。プロキシレイヤーは、キャッシュクラスターのトポロジーとノードをクライアントから抽象化します。これにより、ElastiCache は、アプリケーションの可用性に影響を与えたり、接続をリセットしたりすることなく、インテリジェントに負荷分散、スケールアウト、新しいキャッシュノードの追加、キャッシュノードに障害が発生した場合のキャッシュノードの交換、キャッシュノード上のソフトウェアの更新を行うことができます。

独自設計型 ElastiCache クラスター

独自の ElastiCache クラスターを設計するには、クラスターのキャッシュノードファミリー、サイズ、ノード数を選択します。独自のクラスターを設計することで、きめ細かな制御が可能になり、キャッシュ内のシャードの数と各シャードのノード (プライマリとレプリカ) の数を選択できます。Valkey または Redis OSS は、複数のシャードを含むクラスターを作成してクラスターモードで運用するか、1 つのシャードで非クラスターモードで運用するかを選択できます。

主な利点

  • 独自のクラスターの設計: ElastiCache では、独自のクラスターを設計し、キャッシュノードを配置する場所を選択できます。例えば、高可用性と引き換えに低レイテンシーを追求したいいアプリケーションがある場合、キャッシュノードを単一の AZ にデプロイできます。あるいは、複数の AZ にまたがるノードを含むクラスターを設計して、高可用性を実現することもできます。

  • きめ細かな制御: 独自のクラスターを設計すると、キャッシュの設定をより細かく微調整できます。例えば、Valkey および Redis OSS パラメータ または Memcached 固有のパラメータ を使用してキャッシュエンジンを設定できます。

  • 垂直方向と水平方向のスケール: 必要に応じてキャッシュノードのサイズを増減することで、クラスターを手動でスケールできます。新しいシャードを追加したり、シャードにレプリカを追加したりして、水平方向にスケールすることもできます。自動スケーリング機能を使用して、スケジュールに基づくスケーリングや、キャッシュの CPU やメモリ使用量などのメトリクスに基づくスケーリングを設定することもできます。

次の図は、ElastiCache の独自設計型クラスターの仕組みを示しています。

アベイラビリティーゾーンからカスタマー VPC、そして ElastiCache マネージドキャッシュノードまで、ElastiCache の独自設計型クラスターの動作の図。

料金ディメンション

ElastiCache のデプロイには 2 つのオプションがあります。ElastiCache サーバーレスをデプロイする場合、GB 時間単位で保存されるデータと ElastiCache プロセッシングユニット (ECPU) を単位とするコンピューティングの使用に対して料金を支払います。ElastiCache クラスターを独自に設計する場合は、キャッシュノードの使用料金を時間単位で支払います。料金の詳細については、こちらを参照してください。

データストレージ

ElastiCache サーバーレスに保存されたデータの料金は、ギガバイト時間 (GB-時間) で請求されます。ElastiCache サーバーレスは、キャッシュに保存されたデータを継続的にモニタリングし、1 分間に複数回サンプリングします。これを基に、1 時間あたりの平均値を計算して、キャッシュのデータストレージ使用量 (GB-時間) を決定します。各 ElastiCache サーバーレスキャッシュは、最低 1 GB の保存データに対して従量課金されます。

ElastiCache プロセッシングユニット (ECPU)

アプリケーションが ElastiCache サーバーレスで実行するリクエストに対して、vCPU 時間と転送データの両方を含む単位である ElastiCache Processing Units (ECPU) で支払います。

  • 単純な読み取りと書き込みには、転送されるデータの 1 キロバイト (KB) につき 1 ECPU が必要です。例えば、最大 1 KB のデータを転送する GET コマンドは 1 ECPU を消費します。3.2 KB のデータを転送する SET リクエストは 3.2 ECPU を消費します。

  • Valkey および Redis OSS では、vCPU 時間をより多く消費し、より多くのデータを転送するコマンドは、2 つのディメンションのうち大きい方に基づいて ECPU を消費します。例えば、アプリケーションが HMGET コマンドを使用して単純な SET/GET コマンドの 3 倍の vCPU 時間を消費し、3.2 KB のデータを転送する場合、3.2 ECPU を消費することになります。あるいは、2 KB のデータしか転送しない場合、3 ECPU を消費することになります。

  • Valkey および Redis OSS では、追加の vCPU 時間を必要とするコマンドは、それに比例して消費する ECPU が増えます。例えば、アプリケーションが Valkey または Redis OSS HMGET コマンドを使用し、シンプルな SET/GET コマンドの 3 倍の vCPU 時間を消費する場合は、3 ECPU を消費します。

  • Memcached では、複数の項目に対して操作を行うコマンドは、それに比例して消費する ECPU が増えます。例えば、アプリケーションが 3 つの項目に対して multiget を実行すると、3 ECPU が消費されます。

  • Memcached では、操作する項目が多く、より多くのデータを転送するコマンドは、2 つのディメンションのうち大きい方に基づいて ECPU を消費します。例えば、アプリケーションが GET コマンドを使用して 3 つの項目を取得し、3.2 KB のデータを転送すると、3.2 ECPU を消費します。あるいは、2 KB のデータしか転送しない場合、3 ECPU を消費することになります。

ElastiCache サーバーレスは、ワークロードによって消費される ECPU を把握するのに役立つ ElastiCacheProcessingUnits という新しいメトリクスを発行します。

ノード時間

EC2 ノードファミリー、サイズ、ノード数、アベイラビリティーゾーン間の配置を選択することで、独自のキャッシュクラスターを設計できます。クラスターを独自に設計する場合は、キャッシュノードごとに時間単位で料金を支払います。

ElastiCache バックアップ

バックアップは、サーバーレスキャッシュ、または Valkey もしくは Redis OSS の独自設計型クラスターのポイントインタイムコピーです。ElastiCache では、いつでもデータのバックアップを取ることも、自動バックアップを設定することもできます。バックアップは、既存のキャッシュを復元するか、または新しいキャッシュをシードするのに使用できます。バックアップは、クラスターのすべてのデータといくつかのメタデータで構成されます。詳細については、「スナップショットおよび復元」を参照してください。