Amazon Web Services ブログ

AWS の舞台裏 – DynamoDB の UpdateTable の高速化

AWS ではイノベーションのペースについてよく語られます。そしてその結果はこのブログ、AWS 新着情報ページや、毎週開催される AWS on Air ストリームで共有しています。今日は、舞台裏で起こっているイノベーションといった、少し変わった種類のイノベーションについてお話したいと思います。

AWS のお客様は、それぞれさまざまなサービスを組み合わせて利用しており、それらのサービスを独自の方法で使っています。すべてのサービスが計測および監視され、サービスの設計、構築、実行、スケーリング、進展を担当するチームは、得られるすべてのメトリクスに常に注意を払っています。このメトリクスは、サービスがどのように使用されているか、負荷がかかった状態でどのように機能するかについてのインサイトがまたらされます。そして多くの場合、可用性の向上、パフォーマンスの向上、およびコスト削減のために最適化すべき領域を明らかにします。

改善すべき領域が特定されたら、計画を立て、変更を加えて運用前の環境でテストし、複数の AWS リージョンにデプロイします。これは日常的に、そして (今日まで) さりげなく行われています。AWS の各部分はどんどん良くなっていきますが、お客様は何もする必要はありません。

DynamoDB UpdateTable
2021 年後半に、Amazon DynamoDB の Standard-Infrequent Access テーブルクラスを発表しました。Marcia が投稿で述べたように、このクラスを使用すると、既存の (標準) クラスと比較して、ストレージコストを 60% 削減できます。また、テーブルを変更して新しいクラスを使用する方法についても説明しました。変更操作には UpdateTable 関数を呼び出します。その関数がこの記事のテーマです。

AWS がローンチする度に大体そうであるように、お客様はすぐに新しいテーブルクラスを利用し始めました。お客様は新しいテーブルを作成し、既存のテーブルを変更しました。変更が完了するとすぐに料金が下がるというメリットがありました。

DynamoDB は高度に分散されたストレージアーキテクチャを使用しています。各テーブルは複数のパーティションに分割されています。ストレージクラスの変更などの操作は、パーティション間で並行して実行されます。DynamoDB チームは多くのメトリクスを調べた結果、並列処理を増やし、並列操作を管理するのに費やす時間を減らす方法を見つけました。

この変更は、サイズが 500 GB を超える Amazon DynamoDB テーブルに劇的な効果をもたらし、テーブルクラスの更新時間を最大 97% 短縮しました。

このような変更を行うたびに、「変更前」と「変更後」のメトリクスを収集し、その結果を社内で共有します。これにより、他のチームも同様の改善を行っている最中に、その経験から学ぶことができます。さらに良いことに、変更を加えるたびに他の変更への扉が開かれ、特定のサービスや機能を使用するすべての人に利益が (再び) もたらされるポジティブなフィードバックループが生まれます。

すべての DynamoDB ユーザーは、バージョンのアップグレードやメンテナンスのためのダウンタイムを必要とせずに、このパフォーマンスの向上をすぐにご利用いただけます (DynamoDB にはメンテナンスウィンドウすらありません)。

このようなパフォーマンスの段階的な改善や運用上の改善は、あまり大げさなものではなく、日常的に行われています。ただし、お客様自身が測定して AWS の一部が改善または速くなったことがわかった場合は、いつでもお客様からの返信をお待ちしています。

リーダーシップ原則
この記事を書く準備をしている際、この変更について考えていたときに、いくつかの Amazon のリーダーシッププリンシプルが思い浮かびました。DynamoDB チームは、500 GB を超えるテーブルを持つすべての DynamoDB ユーザーに役立つ変更を実装することで、「Customer Obsession」を示しました。そのためには、「Invent and Simplify」(考案して簡素化) して、UpdateTable 関数を実装するより良い方法を考え出す必要がありました。

AWS のお客様は、お客様側で何もする必要なくメリットを得られますが、だからといって、こちらがお客様の特定のユースケースに特に注意を向けるまで待たなければならないわけではありません。AWS の何らかの側面を限界まで押し上げている (またはそうしたい) 場合は、担当のサービスチームに連絡して、状況を知らせることをお勧めします。クォータやその他の制限に達していたり、帯域幅、メモリ、その他のリソースを極端に増やしたいと考えていたりもするでしょう。どのような場合でも、チームにご連絡ください。

ご期待下さい!
他にも社内で行った改善点はさまざまあり、チームと協力してさらに多くの改善点を 1 年を通じて共有していきます。

Jeff;

原文はこちらです。