MEGAZONEブログ
AWS re:Invent 2024 Dr. Werner Vogels 基調講演 <Part 2>
AWS re:Invent 2024 Dr. Werner Vogels Keynote
講演概要
タイトル:Dr. Werner Vogels Keynote
Date: 2024年 12月 5日(木)
Venue: Venetian
Speaker:
Robert Christiansen (VP, Engineering, Too Good To Go)
Dr. Werner Vogels (VP and CTO, Amazon)
Brendan Humphreys (CTO, Canva)
Andy Warfield (VP / Distinguished Engineer, AWS)
複雑性への対応方法
サービスが成長するにつれて、システムの負荷に対応するために、システムを分解し、独立して動作するブロックを構築する必要があります。複雑なシステムにおける影響範囲を最小限に抑えることが重要です。そのためには、小さなブロックに顧客の正確なリクエストを届けるルーターや、全体の可用性を管理するコントロールプレーンが必要です。
また、システム構築に要する時間は実行時間に比べて非常に短いため、管理のしやすさに対する事前投資、セキュリティ、コスト管理に注力しなければなりません。
不確実性への対応方法 – 自動化
Vogels博士は、不確実性もまた重要な課題であると述べ、予測可能なシステムを設計することでこれを緩和できるとしています。イベント駆動型アーキテクチャは、不確実性を処理するために非常に有効であり、Amazonでは変更や更新をシンプルに行うアプローチを採用しているとのことです。
Vogels博士は「複雑性を自動化すること」がもう一つの重要な教訓になると述べています。ただし、何を自動化すべきでしょうか?判断が必要な機能には人間が関与すべきですが、それ以外の多くの機能は自動化されるべきだと主張します。
人間がミスをすることはあっても、自動化はミスをしないと彼は指摘しています。特にセキュリティ分野では、Amazonの自動化が重要な役割を果たしています。
AWSは1日あたり1兆件以上のDNSリクエストを処理し、毎日124,000件以上の悪意のあるドメインを発見しています。これらはすべて、人間には追いつけない自動化されたプロセスによって実現されています。「自動化は複雑性を管理可能なものにする」と彼は断言し、高度な判断力を必要としないものはすべて自動化すべきだと述べました。
システムの安全性を保ちながら、複雑にスケール可能な「進化性」を持つことが重要です。複雑性を管理するためにシステムを分割し、そのアーキテクチャに合わせて組織を再編成する必要があります。予測可能なシステムを設計し、複雑性を自動化することが、Vogels博士が伝える教訓です。
持続可能な成長のためのシンプルさの維持
ロバート・クリステンセン氏(以下ロバート)は、「世界中で生産される食料の40%が無駄にされている」という問題提起から話を始めました。食品廃棄物は、世界全体の温室効果ガス排出量の10%を占め、航空業界全体の排出量の4倍に相当します。売れずに廃棄される食品、いわゆる余剰食品の問題を解決するために、2015年にデンマーク・コペンハーゲンで「TOO GOOD TO GO」が設立されました。
余剰食品のアイデアは、サービス開始から数週間で世界最大規模の余剰食品アプリへと成長しました。多くのユーザーが余剰食品を売買し、互いにとって利益となる好循環が生まれています。しかし、善意と賢いアイデアを持つ起業家も、事業が成長するにつれて技術的な限界に直面しました。
2018年、登録ユーザーが100万人に達した頃、プラットフォームに問題が発生しました。システムは単一のMySQLと旧式のPHPで実装されたアプリケーションであり、毎日過負荷に陥っていました。当時10人のエンジニアたちはシンプルさを保ちながらスケールアップを目指し、技術投資を行いました。
現在では、最大15のリードノードをサポートするマネージド型Amazon Auroraを使用し、旧式のPHPからJavaベースのSpringフレームワークに順次書き換えを行っています。さらに、コネクションプーリングやキャッシュ、メッセージキューの統合といった利点を享受し、シンプルさを保ちながら危機を乗り越えることができました。
こうした改善の結果、サービス開始から4年で登録ユーザーは1,000万人に達し、ユーザーの増加が加速し、新機能の要求が増えるまでになりました。
彼らはシンプルさを維持したかったため、言語とフレームワークは固定しつつ、トランザクション、キャッシング、メッセージング、セキュリティ、バックグラウンドプロセスをパターン化し、すべてのサービスに適用しました。また、キャッシュとAmazon OpenSearchを利用してトランザクションデータベースを保護する構造を取りました。その結果、2020年には登録ユーザーが2,400万人に達しました。
その後、北米市場への進出時も、既存の構造を維持しつつローカルデータの更新をAmazon SNSとSQSを使って接続することで、簡単に拡張を実現しました。オーストラリア市場でも同様に、最小限の努力で複製しながら拡張を行いました。
結果として現在では、1億人以上の登録ユーザーと175,000以上のパートナーを持つコミュニティへと成長しました。
お客様が直面する複雑性へのAWSの取り組み
クラウドサービスへの移行に伴い、お客様が保有していたデータベースの複雑性を解消するため、AWSはAmazon RDSを提供し、アップグレードやパッチ適用、バックアップ、復旧、スケールの拡張を簡単に行えるよう支援してきました。それでもなお、従来のデータベースが大規模なモノリシック構造であったため、さらなる革新が必要であると考えました。
AWSはAuroraを通じて、DBエンジンとストレージを分離し、より柔軟な拡張を可能にしました。また、Aurora Serverlessによって、拡張性の限界を超えることができるようになりました。
Amazon DSQL
さらにAWSは、より革新的なAurora DSQLを発表しました。この新サービスは、マルチリージョン間で低遅延かつ高い同時処理能力を提供し、グローバルに分散したアプリケーションを構築する基盤を提供します。(現在はN. VirginiaとOhioリージョンでのみ利用可能です)
DSQLのアーキテクチャは、システムの分離性、低結合性、ブロック内部の高い凝集性、明確に定義されたAPIを特徴としており、各コンポーネントを個別に拡張できます。この設計により、システムを詳細に制御し、ニーズに応じて構成要素を個別に拡張したり、特定の要件に基づいてセキュリティ設定を調整したりできます。
SQLの上位レベルブロックは以下のように構成されています:
SQLの上位レベルブロックは以下のように構成されています:
- フロントエンド
- SQL処理を行うクエリプロセッサ
- トランザクションを調整するアジャスティケーター
- 短期ストレージを担うジャーナル
- 長期ストレージにデータを保存するクロスバー
これらのコンポーネントは、それぞれ異なる基準で個別に拡張されます。例えば、クエリプロセッサはセッション数に応じて、アジャスティケーターはトランザクション数に応じて、ジャーナルはストレージ単位の処理能力に応じて、クロスバーはジャーナル数やデータベースサイズに応じて拡張されます。モノリシックな構造であれば、これらの拡張は非常に非効率的であったでしょう。
トランザクション処理の効率化
クライアントアプリがデータを読み取る場合、フロントエンドを経由してクエリプロセッサに送られた読み取りリクエストは、トランザクションパスを通過せずにシャードマップを参照してデータが保存されているストレージに直接アクセスします。この場合、読み取り操作のみであるため、比較的シンプルです。
一方、クライアントアプリが注文を行う場合には、データの読み取り、選択、それに基づくさらなる読み取りや選択といった一連の操作がクエリプロセッサによって統合され、トランザクションが実行されます。このプロセスでは、全ての操作が同一リージョン内で完結し、コミットの段階でのみリージョン間通信が発生するため、トランザクションの実行速度が向上します。
クエリプロセッサはベアメタルホスト上のマイクロVMに配置されており、クライアント側の操作が中断された場合、マイクロVMを一時停止し、再開時には数ミリ秒でスナップショットを復元してトランザクションを継続できます。この仕組みにより、長時間のトランザクションを効率化することが可能です。
短期ストレージであるジャーナルに記録された時点でコミットが完了したと見なされ、シャードストレージからの応答を待つことなく迅速に処理が完了します。これにより、各コンポーネントが独立して動作するという複雑性の原則に従ったアーキテクチャを実現しています。
Amazon Time Sync
AWSは、分散システムのボトルネックとなる時間同期の問題にも取り組みました。従来のNTP(Network Time Protocol)の限界を克服し、高精度な時間同期を実現するため、FPGAハードウェア、Nitroカードとバックボーン、衛星から成る専用インフラを構築しました。この仕組みで提供されるAmazon Time Syncは、マイクロ秒単位の精度を持ちます。これにより、DSQLでもトランザクションの開始時刻とコミット時刻を正確に比較できるようになります。
また、Clock Boundというシステムを利用することで、ナノ秒単位の精度を持つ時刻を提供し、現実世界での誤差に対応しています。このような基盤の上にAurora DSQLやDynamoDBグローバルテーブルが構築され、分散システムの複雑性を大幅に軽減しています。
まとめ
2024年のre:Inventに参加し、多くのAWSユーザーがVogels博士に熱狂する理由がわかったキーノートでした。特に、DynamoDBをSQLで操作できるDSQLのトランザクション保証により、グローバル規模のアプリケーションを容易に運用できるようになりました。また、NTPの遅延を克服するTime Syncサービスの将来的な影響についても興味を引かれました。
AWSがデータベースを新たな視点で再構築した今回の発表は、アカデミックな枠を超えた素晴らしい内容でした。技術を通じてラスベガスの熱気を昇華させた、非常に印象的なイベントでした。
イベント最終日の夜、名残惜しい気持ちとともにこの文章を終えます。
ありがとうございました。
執筆:MEGAZONECLOUD Strategic Tech Center Cloud Architect 1Team イ・テヒョン マネージャー