MEGAZONEブログ
AWS re:Invent 2024 Dr. Werner Vogels 基調講演 <Part1>
AWS re:Invent 2024 Dr. Werner Vogels Keynote
講演概要
タイトル:Dr. Werner Vogels Keynote
Date: 2024年12月5日(木)
Venue: Venetian
Speaker:
Robert Christiansen (VP、エンジニアリング、Too Good To Go)
Dr. Werner Vogels (VP and CTO, Amazon)
Brendan Humphreys (CTO, Canva)
Andy Warfield (VP / Distinguished Engineer, AWS)
はじめに
ヴェルナー・フォーゲルス博士の講演は、「複雑性を探る」ということから始まりました。
その事例でAmazonのS3サービスを話しています。多くのピザを配達経験から得た知見に基づいて、2つのピザチームのコンセプトを構築し、機能的な足場構造を確立し、小規模に構築しましたまた自律的なチームによる組織を編成してイノベーションを行った経験を共有しました。
複雑性管理の教訓
複雑性は生成も消滅もしないが、別の場所に移動するだけであり、複雑性は避けられないものだと述べています。複雑性には、意図された複雑性と意図しない複雑性の2種類があります。
- 意図された複雑性は、システムの拡張、新しい機能の適応、顧客の要求の変化に対応するために必要であり、明確な目的を持っています。
- 一方、意図しない複雑性は次の7つの問題を引き起こします。
- 機能速度の低下
- 頻発する問題
- デバッグに時間がかかる
- 過剰なコードの増加
- 一貫性のないパターン
- 依存関係の増加
- 差別化されない作業
これらの複雑性は避けられないため、適切に管理することが必要だと話しました。
Brendan Humphreysの講演(CanvaのCTO)
Canvaは「世界中の誰もがデザインできるようにする」ことを目指して設立され、現在190か国で2億2千万人以上のユーザーが利用しています。プラットフォームは毎秒約120万件のリクエストを処理し、毎日230TBのデータを追加しているそうです。
当初は少人数のチームでモノリシックな構造を構築し、1つのMySQLインスタンスから始め、必要に応じて複数のインスタンスに拡張しました。しかし、サービスが成長するにつれてMySQLデータベースの限界に直面し、DynamoDBへの移行を準備しました。移行は容易ではありませんでしたが、最終的に成功を収め、930億件の項目を管理し、毎日約9,000万件の項目が増加しています。この結果、性能と信頼性が向上しました。
もしMySQLインスタンスに固執していたならば、サービスの拡張は止まっていたでしょう。Canvaは強力で一貫性のある抽象化を通じて拡張性を確保し、APIとSDKを通じて開発者がCanva上に機能を構築できるようにしたと語りました。
Lesson 1:進化可能性を必須要件とする
変化は絶えず起こり、ソフトウェアに新しい機能を追加しなければ品質が低下すると述べています。Amazonでは以下のガイドラインを設けています。
- 進化可能性を必須要件とする
- アーキテクチャの選択を定期的に見直す
例としてS3が挙げられました。S3は初期の6つのマイクロサービスから現在300以上に拡張され、これらの変化にもかかわらず顧客への影響はありませんでした。そのための変化のプロセスとして以下が示されています。
- フロントエンドの簡素化
- システム構成原則の確立
- CloudWatchの新機能追加
- プログラミング言語の変更(C言語からRustへ)
- サービスサイズの決定
S3がAWSの代表的なサービスとして長期間にわたり成長し、顧客から愛されているのは、絶えず進化し続けてきたからだと考えられます。
Lesson 2:複雑性の分散
マイクロサービスで新機能を追加する際、以下の2つのオプションがあります。
- 既存サービスを拡張する
- 新しいマイクロサービスを作成する
拡張は迅速でコード再利用が可能ですが、サービスが過剰に大きくなる問題があります。一方、新しいサービスを作成する場合、管理が容易ですが初期の労力が多く必要です。マイクロサービスが過大化してエンジニアが理解しづらくなる状況は警告信号とされています。
Andy Warfieldの講演(S3の複雑性管理)
S3は18年間運営されており、多くの驚くべきことがありましたが、組織内の複雑性を完全に解決するには至っていないと述べています。以下は成功例です。
- 複雑性と恐怖
- 成功するチームは常に「失敗するかもしれない」という若干の恐怖を抱いています。
- 絶えず質問をし、改善を続けています。
- オーナーシップ
- チームに問題解決の権限と責任を与えることが重要です。
- 優れたリーダーはチームにオーナーシップを持たせ、動機付けを高めます。
Lesson 3:組織をアーキテクチャに合わせて調整
オーナーシップの重要性が強調され、チームが問題解決の責任を負い成果物を所有することで、チームの関与とモチベーションを高められると述べられました。リーダーはチームに自律性を与えながらも、迅速な意思決定と緊急性を保つことで速やかな結果を支援すべきです。
まとめ
複雑性は避けられないものであり、それを克服するためには進化を続ける必要があると結論づけられました。特に、「ゆでガエル」のように現状に安住すると、サービスは退化すると語られた点が印象的でした。
モノリシックな構造からマイクロサービスへの移行は必然的な流れであり、複雑性が増大する現状において、Vogels博士が提唱する「simplexity(単純さ+複雑性)」の概念は非常に重要だと認識されています。
執筆:MEGAZONECLOUD Strategic Tech Center Cloud Native Platform Team ソヒョンチョルリーダー