Amazon Web Services ブログ

AWS Graviton2 インスタンスを利用した、Amazon DocumentDB のより良いパフォーマンスの実現

この記事は、2022 年 2 月 23 日に公開された Achieve better performance on Amazon DocumentDB with AWS Graviton2 instances を翻訳したものです。一部更新・加筆しています。

Amazon DocumentDB (MongoDB 互換) は、ミッションクリティカルな MongoDB ワークロードをサポートする、高速かつスケーラブルで可用性に優れたフルマネージド型のドキュメント指向データベースサービスです。先日 Amazon DocumentDB の AWS Graviton2 のサポートを発表しました。AWS Graviton2 プロセッサは、64 ビットのArm Neoverseコアを使用して AWS によってカスタム構成されたものであり、常時オン状態の DDR4 メモリ暗号化やコアごとに 50% 高速になった暗号化性能が備わっています。 AWS Graviton2 R6g インスタンスはこれらの性能改善により、データベースワークロードに最適な選択肢となります。

Graviton2 への移行メリット

Amazon DocumentDB にとって、AWS Graviton2 インスタンスへの移行理由はいくつか考えられます。

  • AWS Graviton2 インスタンスは、Amazon DocumentDB のデータサイズやワークロード特性に応じて、同等の Intel ベースのインスタンスと比べて、最大 30% 優れたコストパフォーマンス を提供しています。
  • AWS Graviton2 r6gインスタンスは、同等の r5 インスタンスより 5% 、AWS Graviton2 t4g.medium インスタンスは、t3.medium インスタンスより 3% コスト削減を実現できます。
  • 既存 Amazon DocumentDB インスタンスは Intel から AWS Graviton2 に移行する際、アプリケーションは通常通り動作しており、ソースコードを修正する必要はありません。
  • Intel ベースのインスタンスタイプ、例えば t3/r4/r5 シリーズで動作する Amazon DocumentDB すべての機能は、AWS Graviton2 ベースのインスタンスタイプ、例えば t4g/r6g も引き続き動作します。

Intel ベースの r4 もしくは r5 インスタンスから AWS Graviton2 インスタンスへの移行

AWS Graviton2 インスタンスに移行するには、AWS マネジメントコンソール、AWS コマンドラインインターフェイス(AWS CLI)、または AWS SDK を使用して、既存 Intel ベースのインスタンスタイプをアップグレードすることが可能です。

  1. Amazon DocumentDB のコンソールにアクセスし、対象クラスターを選択します。アップグレードしたいインスタンスに移動し、Modify を選択します。
  2. 新しい Instance class を選択します。
  3. Continue を選択します。
  4. この変更をすぐに適用するか、次のメンテナンスウィンドウで保留中の変更を適用するかを選択します。今回はこの記事では、Apply immediately (すぐに適用する)を選択します。
  5. Modify instance を選択します。

また、AWS CLIを使用してインスタンスをアップグレードすることも可能です。modify-db-instance APIを利用し、インスタンスタイプを変更するサンプルは以下ご参考ください。

aws docdb modify-db-instance 
    --db-instance-identifier testcluster 
    --apply-immediately 
    --db-instance-class db.r6g.large 

使用したベンチマークと具体的なベンチマーク設定

この記事では、ソースコードは Github 上に公開されている Socialite という MongoDB 社が提供しているソーシャルデータレファレンスアーキテクチャを利用します。ソースコードには、ベンチマークユーティリティが含まれ、様々なサーバー設定とトランザクションパターンを測定することができます。サポートしているスキーマはユーザーマスタ、ユーザーステータス更新、及び以下のようなユーザー操作です。

  • read-timeline – ユーザーのソーシャルネットワークの最新コンテンツを収集します。
  • scroll-timeline – ユーザーのソーシャルネットワークの古いコンテンツを収集します。
  • friends-of-friends-query – 通常クエリを使ってユーザーの友達の友達を取得します。
  • friends-of-friends-agg – 集計クエリを使ってユーザーの友達の友達を取得します。
  • unfollow – 他のユーザーをアンフォローします。
  • send-content – ユーザーの近況を投稿します。
  • get-followers – ユーザーのフォロワーを取得します。
  • get-follower-count – ユーザーのフォロワー数を把握します。
  • follow – 他のユーザーをフォローします。

様々なインスタンスタイプをベンチマークするために、以下のようなテスト設定を使用しました。

  • テストデータ – ユーザー数 100,000 、1 ユーザーあたり 100 メッセージ、最大 200 フォロー(データベースサイズ:4.5GB)
  • テスト環境 – Amazon DocumentDB クラスター(3つインスタンス)、プライマリーインスタンスと同じアベイラビリティゾーンにあるベンチマーククライアントが存在します。
  • セッション時間 – 10、同時実行数 2xl インスタンスでは 8、8xl インスタンスでは 32 を設定します。
  • トランザクション比率 – follow = 2%, unfollow = 1%, read-timeline = 50%, scroll-timeline = 41%, send-content = 4%, friends-of-friends-query = 1%, and friends-of-friends-agg = 1%

2xl、8xl、16xlの3つのインスタンスタイプに対してベンチマークを行いました。CPU使用率とトランザクションタイプごとの 99 パーセンタイルを比較するため、各インスタンスタイプにおいて、1 秒あたりのトランザクション数(tps)を制限しました。

r6g.2xlとr5.2xlのインスタンスのベンチマーク結果

2xl インスタンスタイプでは、トランザクションのスループットを 70 tps に制限しました。このスループットでは、Intel インスタンスのCPU利用率は 80% に対して、AWS Graviton2 インスタンスのCPU利用率は 60% になり、およそ 25% のパフォーマンス向上が見られました。トランザクション全体の 99 パーセンタイルは AWS Graviton2 インスタンスで 43.7% 短縮され、各トランザクションの 99 パーセンタイルは以下の2つのグラフの通りです。短期間で終了した処理が見やすくするために、2つのグラフを使ってデータを表示しています。

r6g.8xlとr5.8xlのインスタンスのベンチマーク結果

8xl インスタンスタイプでは、トランザクションのスループットを 300 tps に制限しました。このスループットでは、Intel インスタンスのCPU利用率は 88% に対して、AWS Graviton2 インスタンスのCPU利用率は 65% になり、およそ 26.1% のパフォーマンス向上が見られました。トランザクション全体の 99 パーセンタイルは AWS Graviton2 インスタンスで 25.4% 短縮され、各トランザクションの 99 パーセンタイルは以下の2つのグラフの通りです。

r6g.16xlとr5.16xlのインスタンスのベンチマーク結果

16xl インスタンスタイプでは、トランザクションのスループットを 600 tps に制限しました。このスループットでは、Intel インスタンスのCPU利用率は 93% に対して、AWS Graviton2 インスタンスのCPU利用率は 71% になり、およそ 23.7% のパフォーマンス向上が見られました。トランザクション全体の 99 パーセンタイルは AWS Graviton2 インスタンスで 46.2% 短縮され、各トランザクションの 99 パーセンタイルは以下の2つのグラフの通りです。

ベンチマーク結果まとめ

次の表はすべてのインスタンスサイズでのベンチマーク結果をまとめたものです。

サマリー

このブログ記事では、AWS Graviton2 インスタンスが旧世代ハードウェアより、高性能で低価格を提供することを示しました。Amazon DocumentDB v4.0 からご利用頂き、新しい AWS Graviton2 インスタンスを起動するか、既存インスタンスをアップグレードすることが可能です。リージョンごとインスタンスタイプの情報は インスタンスクラスの管理 を参照してください。

AWS フォーラムまたは通常の AWS サポートにフィードバックをしていただけます。Amazon DocumentDBへの機能要望があれば、documentdb-feature-request@amazon.com までご連絡ください。

翻訳はソリューションアーキテクトのまーさんが担当しました。原文は こちら です。