Amazon MemoryDB の特徴

MemoryDB を使用すべき理由

Amazon MemoryDB は、Valkey OSS および Redis OSS と互換性があり、耐久性のあるインメモリデータベースサービスで、超高速なパフォーマンスを実現します。これは、マイクロサービスアーキテクチャを採用したモダンアプリケーション用に構築されています。

MemoryDB は、Valkey OSS および Redis OSS と互換性があるため、お客様は、現在既に使用しているものと同じ、柔軟で使いやすい Valkey OSS および Redis OSS のデータ構造、API、コマンドを使用して、アプリケーションを迅速に構築できます。MemoryDB では、すべてのデータがメモリ内に保存されるため、マイクロ秒の読み取りと 1 桁ミリ秒の書き込みのレイテンシー、そして高いスループットを実現できます。また、MemoryDB は、分散トランザクションログを使用して、複数のアベイラビリティーゾーン (AZ) にまたがってデータを永続的に保存し、高速なフェイルオーバー、データベースリカバリ、ノードの再起動を可能にします。インメモリパフォーマンスとマルチ AZ 耐久性の両方を提供する MemoryDB は、マイクロサービスアプリケーション向けに高性能プライマリデータベースとして使用できるため、キャッシュと耐久性のあるデータベースの両方を個別に管理する必要はありません。

Valkey と Redis OSS の互換性

Valkey と Redis OSS は、高速でオープンソースのインメモリ key-value データストアです。デベロッパーは、Valkey と Redis OSS を使用してミリ秒未満の応答時間を実現し、ゲーム、アドテック、金融サービス、ヘルスケア、IoT の業界のリアルタイムアプリケーションで、1 秒間に数百万件のリクエストの処理を実現しています。 

Valkey と Redis OSS は、アジャイルで汎用性の高いアプリケーションを構築するための柔軟な API およびコマンド、ならびにストリーム、セット、リストなどのデータ構造を提供しています。MemoryDB は、Valkey と Redis OSS との互換性を維持し、使い慣れたのと同じ Valkey と Redis OSS のデータ型、パラメータ、コマンドのセットをサポートしています。つまり、Valkey と Redis OSS で現在使用しているコード、アプリケーション、ドライバー、ツールを MemoryDB で使用できるため、アプリケーションを迅速に構築できます。

超高速なパフォーマンス

MemoryDB は、データセット全体をメモリ内に保存して、マイクロ秒の読み取りレイテンシー、1 桁ミリ秒の書き込みレイテンシー、そして高スループットを実現します。1 日に 13 兆を超えるリクエストを処理し、ピーク時には 1 秒あたり 1 億 6000 万のリクエストをサポートします。 これらのアプリケーションでは、ユーザーインタラクションまたは API コールごとに多くのサービスコンポーネントとのやり取りが発生する可能性があるため、マイクロサービスアーキテクチャを使用して構築を行うデベロッパーは非常に高いパフォーマンスを必要とします。MemoryDB を利用すると、極めて低いレイテンシーを実現し、エンドユーザーのためにリアルタイムのパフォーマンスを提供できます。

MemoryDB には強化された IO 多重化が含まれています。これは、スループットとレイテンシーにおける大幅な改善を大規模にもたらします。強化された IO 多重化機能は、複数のクライアント接続を持つスループット制限のあるワークロードに最適で、そのメリットはワークロードの同時実行レベルに応じてスケールします。例えば、r6g.4xlarge ノードを使用して 5,200 のクライアントを同時に実行した場合、Redis OSS 互換の MemoryDB バージョン 6 と比較して、スループット (1 秒あたりの読み取りおよび書き込みオペレーション) が最大 46% 向上し、P99 レイテンシーが最大 21% 低減します。これらのタイプのワークロードでは、ノードのネットワーク I/O 処理がスケール能力の制限要因になることがあります。

強化された IO 多重化機能では、各ネットワーク IO の専用スレッドで複数のクライアントからのコマンドを Valkey と Redis OSS エンジンにパイプライン処理し、コマンドを効率的にバッチ処理する Valkey と Redis OSS の機能を活用します。

マルチ AZ の耐久性

MemoryDB は、データセット全体をメモリに保存するだけでなく、分散トランザクションログを使用して、データの耐久性、整合性、回復性を提供します。MemoryDB は、複数のアベイラビリティーゾーンにまたがってデータを保存するため、データベースの高速リカバリと再起動を実現できます。MemoryDB は、高速化のためのキャッシュや、信頼性のための追加のリレーショナルまたは非リレーショナルデータベースを個別に管理する代わりに、低レイテンシーと高スループットを必要とするワークロード向けの単一のプライマリデータベースサービスとして使用できます。

スケーラビリティ

MemoryDB クラスターは、変動するアプリケーションの需要に合わせてスケールできます。ノードを追加または削除することで水平方向に、またはノードタイプをより大きなものやより小さなものに変更することで垂直方向に、それぞれスケールできます。MemoryDB は、シャーディングによる書き込みのスケーリングと、レプリカの追加による読み取りのスケーリングをサポートしています。クラスターはオンラインのままで、サイズ変更の操作中に読み取りおよび書き込み操作をサポートします。

完全マネージド型

MemoryDB の使用を開始するのは簡単です。AWS マネジメントコンソールを使用して新しい MemoryDB クラスターを起動するか、AWS CLI または SDK を使用します。MemoryDB データベースインスタンスは、ノードタイプの選択に適したパラメータと設定によって事前構成されています。クラスターを起動し、数分以内にアプリケーションを接続することができます。追加の設定は不要です。

MemoryDB では、データベースインスタンス用に Amazon CloudWatch メトリクスを提供しています。コンソールを使用して、コンピューティング、メモリ、ストレージ、スループット、アクティブ接続など、クラスターに対する 35 以上の主要な運用メトリクスを確認できます。

MemoryDB では、新しいアップデートでクラスターを自動的に最新の状態に保ちつつ、クラスターを最新バージョンの Valkey と Redis OSS に簡単にアップグレードできます。

セキュリティ

MemoryDB は Amazon Virtual Private Cloud (Amazon VPC) で実行されます。これによりデータベースを独自の仮想ネットワークに隔離し、業界標準の暗号化 IPsec VPN を使用してオンプレミスの IT インフラストラクチャに接続できます。さらに、MemoryDB の VPC 設定を使用すると、ファイアウォールを設定してデータベースインスタンスへのネットワークアクセスを制御することもできます。

MemoryDB では、保管中のデータは、AWS Key Management Service (AWS KMS) で作成および管理するキーを使用して暗号化されます。 また、AWS Graviton2 ノードタイプで作成されたクラスターには、常時オン状態の 256 ビット DRAM 暗号化が含まれます。MemoryDB は、Transport Layer Security (TLS) を使用した実行中の暗号化をサポートしています。

AWS Identity and Access Management (IAM) の機能と MemoryDB を連携させて使用すると、IAM ユーザーおよびグループが MemoryDB リソースに対して実行できるアクションを管理できます。例えば、IAM ルールを設定して、特定のユーザーは読み取りアクセスのみ、管理者はリソースの作成、変更、削除が可能となるようにできます。API レベルの権限付与の詳細については、MemoryDB に対する IAM ポリシーの使用を参照してください。

MemoryDB は、Redis OSS アクセスコントロールリスト (ACL) を使用して、クラスターの認証と認可の両方を制御します。ACL によって、同じクラスター内の異なるユーザーのためにさまざまな許可を定義できます。

Kubernetes との統合

MemoryDB 向けの AWS Controllers for Kubernetes (ACK) を使用すると、Kubernetes クラスターから MemoryDB リソースを直接定義して使用することができます。これは、Kubernetes アプリケーションのサポートに MemoryDB を活用できるようにするもので、クラスター外で MemoryDB リソースを定義したり、クラスター内でインメモリデータベース機能を実行して管理したりする必要はありません。Amazon Elastic Container Registry (Amazon ECR) から MemoryDB ACK コンテナイメージをダウンロードすると、インストールガイダンスについてのドキュメントを参照できます。 詳細については、ブログもご覧ください。

注: MemoryDB 向けの ACK が一般公開されました。GitHub ページでフィードバックをお送りください。

 

JSON サポート

MemoryDB は、Redis OSS に含まれるデータ構造に加えて、JavaScript Object Notation (JSON) ドキュメントのネイティブなサポートを追加コストなしで提供しています。JSON ドキュメント用に設計および最適化された組み込みコマンドを使用することで、アプリケーションの開発を簡素化できます。MemoryDB は、JSON ドキュメントの一部のアップデートと、JSONPath クエリ言語を使用した高機能な検索およびフィルタリングをサポートしています。JSON サポートは、Valkey と Redis OSS 6.2 以降を使用している場合にご利用いただけます。詳細については、MemoryDB ドキュメントをご覧ください。

コストの最適化

MemoryDB は、クラスターを数百テラバイトの容量までスケールアップするための低コストな方法として、データ階層化を提供します。データ階層化は、データをメモリに保存するだけでなく、各クラスターノードに搭載された低コストのソリッドステートドライブ (SSD) を利用することで、MemoryDB の料金パフォーマンスの選択肢を提供します。データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に追加のレイテンシーを許容できるアプリケーションに最適です。

クラスターでデータを階層化して使用する場合、MemoryDB は、利用可能なメモリ容量が消費されると、自動的かつ透過的に、最近使用された項目をメモリからローカルにアタッチされた NVMe SSD に移動させるように設計されています。SSD に保存されたアイテムにアクセスすると、MemoryDB はそれをメモリに移動してからリクエストに対応します。MemoryDB データ階層化は Graviton2 ベースの R6gd ノードで利用可能です。R6g ノード (メモリのみ) と比較すると、R6gd ノードは約 5 倍の総容量 (メモリ + SSD) を持ち、最大使用率で稼働させた場合に 60% 以上のストレージコスト節約を達成可能です。500 バイトの文字列値を想定した場合、SSD に保存されたデータへの読み取りリクエストには、メモリ内のデータへの読み取りリクエストと比較して、通常 450 μs の追加レイテンシーが生じると考えられます。

MemoryDB では、1 年または 3 年の利用契約を条件に、オンデマンドノード価格より最大 55% 安く利用できるリザーブドノードを提供しています。リザーブドノードは MemoryDB オンデマンドノードを補完するもので、ビジネスに柔軟性をもたらし、コスト削減に役立ちます。MemoryDB では、リザーブドノードの支払い方法として、「前払いなし」、「一部前払い」、「全前払い」の 3 種類があり、前払いする金額と実効時間単価とのバランスを取ることができます。

MemoryDB リザーブドノードは、ノードファミリーおよび AWS リージョン内で柔軟にサイズを選べます。同じノードファミリーのすべてのサイズの使用には、割引されたリザーブドノード料金が自動的に適用されます。サイズが柔軟であるためリザーブドノードの管理に時間を減らすことができ、特定のデータベースノードサイズに縛られることもないため、データベースの更新が必要な場合も割引を最大限に活用できます。