Amazon Web Services ブログ
10歳の誕生日おめでとう – DynamoDB
2012 年 1 月 18 日、Jeff と Werner が、Amazon DynamoDB の一般提供を発表しました。Amazon DynamoDB は、あらゆる規模で 1 桁台のミリ秒のパフォーマンスを実現するフレキシブルなフルマネージド型 NoSQL データベースサービスです。
過去 10 年間で、何十万人ものお客様に DynamoDB を導入いただいております。DynamoDB では、定期的にパフォーマンスやスケーラビリティの新たなピークに達します。例えば、2021 年 6 月に開催された前回の Prime Day (プライムデー) のセールでは、1 桁台のミリ秒のパフォーマンスを維持しつつ、66 時間にわたって何兆回ものリクエストを処理し、ピーク時には 毎秒 8,920 万回のリクエストを処理しました。Disney+ は DynamoDB を使用して、コンテンツ、メタデータ、および数十億個もの視聴者のアクションを毎日取り込んでいます。パンデミックに起因する前例のない需要の中でも、DynamoDB は、世界中の多くのお客様が働き方を変え、バーチャルでミーティングやビジネス運営を行わなければならない状況に対応して支援を行うことができました。例えば、Zoom は、2020 年初頭に私たちがビデオ通話の利用を開始して以来、1 日あたりの会議参加者を 1,000 万人から 3 億人にまで拡大することができました。
(Amazon DynamoDB による 10 年にわたるイノベーション)
この特別な節目に、2022 年 3 月 1 日(米国時間)に Twitch で開催されるユニークなオンラインイベントにご参加ください。詳細については、この記事の最後でご説明します。しかし、オンラインイベントの説明の前に、このサービスが誕生した背景と、10 年前の最初のリリース以降に追加された主な機能について、この機会に振り返ってみましょう。
DynamoDB の背後にある歴史
DynamoDB にまつわるストーリーは、10 年前のリリースよりもずっと前に遡ります。2004 年のホリデーショッピングシーズン中に、Amazon の e コマースプラットフォームで一連の停止が発生したことが発端でした。当時、Amazon はモノリシックアーキテクチャからマイクロサービスに移行中でした。設計原則は、ステートフルマイクロサービスがそれぞれ独自のデータストアを使用し、他のサービスは一般公開されている API を介してマイクロサービスのデータにアクセスする必要がある、というものでした (現在もそうです)。データベースに直接アクセスするという選択肢は、もはや存在していませんでした。当時、ほとんどのマイクロサービスがサードパーティベンダーが提供するリレーショナルデータベースを使用していました。2004 年のホリデーシーズン中の大量のトラフィックにより、データベースシステムでデバッグや再現が困難なデッドロックが発生しました。プライマリキーのみによるクエリなどのシンプルな使用パターンを採用していたにもかかわらず、e コマースプラットフォームがリレーショナルデータベースを限界まで追い込んでいたのです。このような使用パターンでは、リレーショナルデータベースの複雑さが必要ありません。
Amazon と AWS では、停止が発生した後、エラーの修正 (COE、 Correction of Error) と呼ばれるプロセスを開始し、問題の根本原因の文書化、問題の修正方法の記述、再発防止に向けて行われている変更の詳細化などを行っています。このデータベース問題に対する COE を実行中に、若く素朴な 20 歳のインターン Swaminathan (Swami) Sivasubramanian (現 AWS、 データベース、分析、ML 組織、バイスプレジデント) から質問を受けました。「これにリレーショナルデータベースを使用する理由は何ですか? これらのワークロードには、SQL レベルの複雑さやトランザクションの保証は必要ありません。」
この質問を受けて、Amazon がデータストアのアーキテクチャを再考し、元となる Dynamo データベースを構築しました。その目的は、Amazon e コマースプラットフォームの厳しいスケーラビリティ要件と信頼性要件に対処することでした。この非リレーショナルの key-value データベースは、当初、買い物かごやセッションサービスなど、Amazon e コマースオペレーションの中核となるユースケースを対象としていました。
3 年後の 2007 年に AWS が Dynamo 論文を発表しました。この論文は、Amazon の中核となる e コマースオペレーションをサポートするためのもので、設計原則についての説明や、このデータベースの実行から学んだ教訓が記載されていました。ここ何年もの間に、Dynamo のクローンがいくつも登場し、他の企業が Amazon と同様にスケーラブルなソリューションを模索していることがわかりました。
数年後、Dynamo が Amazon の複数のコアサービスチームで採用されました。チームのエンジニア達は、そのパフォーマンスとスケーラビリティに非常に満足していました。しかし、Amazon 内で広く採用されなかったため、その理由を知ろうとエンジニアへのインタビューを開始しました。Dynamo はチームが必要とする信頼性、パフォーマンス、およびスケーラビリティを備えていましたが、システム実行に伴う運用上の複雑さを簡素化するものではないことがわかりました。Amazon のデータセンターでシステムをインストール、設定、および運用するチームが必要とされていました。
当時、AWS は Amazon SimpleDB を NoSQL サービスとして提案していました。ドメインを 10 GB を超える規模に拡張するのが難しく、レイテンシーは予測不能で (データベースのサイズとインデックスの影響を受けていた) 、結果整合性モデルであったにもかかわらず、多くのチームで SimpleDB のシンプルな運用性が好まれていました。
理想的なソリューションは、Dynamo の強み (スケーラビリティと予測可能な低レイテンシーのデータ取得) と SimpleDB の運用上のシンプルさ (宣言のみでシステムに低レベルの複雑性を透過的に処理させるテーブル) を組み合わせることだと結論付けました。
DynamoDB の誕生。
DynamoDB は、ハードウェアとソフトウェアの管理の複雑さからデベロッパーを解放します。スループット要件に合わせたデータの再パーティション化やパーティションのスケーリングに伴う、すべての複雑さに対応します。テーブルを手動で再パーティション化しなくてもシームレスにスケーリングでき、予測可能な低レイテンシー (1 桁台のミリ秒) でデータにアクセスできます。
AWS では、新しいサービスの開始は、プロジェクトの終わりを意味しません。それは実際には始まりなのです。過去 10 年間、お客様からのフィードバックに常に耳を傾け、DynamoDB に新しい機能を追加してきました。数百の段階的な改善に加え、以下が追加されました。
- ローカルおよびグローバルのセカンダリインデックスのサポートにより、スケーラビリティや可用性を損なうことなく、より複雑なクエリ機能を実現 (2013 年 12 月)
- DynamoDB Streams (2014 年 11 月) や DynamoDB 用 Amazon Kinesis Data Streams (2020 年 11 月) を使用して、大規模な変更をキャプチャすることが可能
- グローバルテーブルを作成し、AWS リージョン間でデータをレプリケートする機能 (2017 年 11 月)。これにより、複数のリージョンでホストされるアクティブ/アクティブアプリケーションを作成できるようになりました。DynamoDB グローバルテーブルは、複数のリージョンにある複数のレプリカで構成されます。アプリケーションがあるリージョンにあるレプリカテーブルにデータを書き込むと、DynamoDB はその書き込みを他のリージョンにある他のレプリカテーブルに自動的に反映します。
- DynamoDB のバックアップと復元機能により、長期保存や、規制コンプライアンスの要件に合わせたアーカイブが可能。(2017 年 11 月)
- ポイントインタイムリカバリ (PITR)。これにより、完全な整合性のあるバージョンのデータを使用していつでも復元できるよう、テーブルをバックアップできます (2018 年 3 月)
- 不均等なワークロードを無限に実行することを可能にするアダプティブキャパシティー (2018 年 8 月)
- ACID トランザクションのサポート (2018 年 11 月)
- AWS Backup との統合 (2021 年 11 月)
およびその他多数。
最後に、前回の AWS re:Invent カンファレンスで、Amazon DynamoDB Standard-Infrequent Access (DynamoDB 標準 – IA) が発表されました。この新しい DynamoDB テーブルクラスにより、アクセス頻度の低いデータのデータストレージコストを 60% 削減できます。理想的なユースケースは、長期間保持する必要があり、アクセスレイテンシーを犠牲にせずに、アプリケーションが時折アクセスする必要のあるデータがある場合です。以前は、このようなデータのストレージコストを下げるために、Amazon Simple Storage Service (Amazon S3) などの低コストのストレージに、アクセス頻度の低いデータを移動するコードの作成が行われていました。今は、DynamoDB 標準 – IA テーブルクラスに切り替えることで、DynamoDB の高可用性とパフォーマンスを維持しつつ、アクセス頻度の低いデータを保存できるようになりました。
開始方法
デベロッパーのお客様が、DynamoDB の使用を開始するには、ドキュメントの「DynamoDB の使用開始」を参照するか、Alex DeBrie によって書かれた、秀逸な「DynamoDB, Explained」(DynamoDB の解説) をお読みください。Alex DeBrie は AWS ヒーローの 1 人で、「The DynamoDB Book」の著者です。DynamoDB データモデリングの詳細情報を提供するために、AWS ヒーロー Jeremy Daly がビデオコース「DynamoDB Modeling for the rest of us」(一般向け DynamoDB モデリング) を作成中です。
お客様には、業種、地域、企業規模を問わず、事実上あらゆる分野で DynamoDB を活用していただけるようになりました。私たちは DynamoDB を使用するお客様のイノベーションに驚かされ続け、それは、次世代のアプリケーションの構築を容易にすべく DynamoDB を進化させ続けようという私たちの原動力となっています。私たちは今後も発展し続けるお客様のニーズに対応し、今後数十年にわたるイノベーションと拡張を可能にするため、お客様のフィードバックを起点とした取り組みを続けてまいります。
DynamoDB 10 年間のイノベーション — バーチャルイベント
冒頭で述べましたが、私たちはこの記念日をお客様と共にお祝いしたく思います。そこで、私たちは、Twitch のライブイベントを用意致しました。ベストプラクティスの学習、技術デモの参照、Q&A へのライブ参加が行えます。私たちの長年のお客様である SmugMug CEO の Don MacAskill 氏と Dropbox のエンジニアリングリーダーのお 2 人からお話を聞くことができます。また、AWS ブログのレジェンドでありチーフエバンジェリストである Jeff Barr、そして DynamoDB のプロダクトマネージャやエンジニアに、質問やチャットをする機会もあります。最後に、AWS ヒーローの Alex DeBrie と Jeremy Daly が 2 つのディープダイブテクニカルセッションを主催します。当日のアジェンダや詳細はこちらからご覧いただけます。
このイベントは 2022 年 3 月 1 日(米国時間)に Twitch でライブ配信され、こちらから今すぐ登録できます。米国からの最初の登録者 1,000 人には、「The DynamoDB Book」のデジタルコピーが無料で提供されます (小売価格は 79 USD)。
DynamoDB の次の 10 年に。乾杯 🥂。
原文はこちらです。