このページの本文へ

アーキテクチャの知見を惜しみなくシェアしたre:Inventのエンジニア必見講演

複雑なシステムをシンプルに Amazon CTOボーガス氏が語る6つの学び

2024年12月30日 09時00分更新

文● 大谷イビサ 編集●ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

複雑なシステムはインパクトを軽減せよ

 ボーガス氏は「AWSはこのように進化してきている。アーキテクチャの形ばかりだけではなく、組織の形で進化している。小さなビルディングブロックに分割し、組織に整合させ、アーキテクチャを見ていく。そして運用につないでいく」と語る。

 この分割の単位がセルだ。大きなアプリケーションは障害が起こると、多くのユーザーに影響が出てしまう。これに対してセルベースのアーキテクチャでは、システムを独立したセルに分割。リクエストはルーターで各セルに振り分け、問題が起こったときのインパクトを削減するというもの。「複雑なシステムでは不可欠な概念」とボーガス氏は指摘する。

複数のセルに分割して、ルーターで振り分ける

 AWSはこのセルアーキテクチャの実績を積んでおり、アルゴリズムや可用性の確保、セルの構成方法など、さまざまなベストプラクティスを提供してきた。分割の際に利用するIDもサービスごとに異なっており、CDNのCloudFrontでは分散IDを、DNSサービスのRoute53ではホストゾーンIDを、Hyperplaneでは顧客IDを用いているという。新しいセルが増えた場合でも、コントロールプレーンが適切に構成してくれる。

 では、各セルはどれくらいにすべきか。へビーなワークロードを実行できる大型のセルか、テストするのに十分な程度の小型のセルか。ボーガス氏は「その中間くらいが答えと言えるかもしれない。経済規模で考えるべき。大型のセルは多くの顧客に影響を与えるが、小さければ経済効果が得られにくい。セルのサイズはバランスを見つけることが大切になる」と語る。

 また、セルの構築は、初期のデザインにフォーカスすることが重要になる。セキュリティやコスト効率に関しては、前払い(Upfront)で投資すべきであり、運用中での再設計を前提とすべきではないという意見だ。これにより、顧客は信頼性やセキュリティを管理できるという。「複雑なシステムでは、とにかくインパクトを軽減しなければならない」というのが4つ目の学びだ。

予測可能なプロセスを盛り込み、基本は自動化していく

 5つ目の学びは、未知の要素を可能な限り排除し、予測可能なシステムを構築することだ。数百万人のユーザーが利用するシステムで、イベントドリブンのアプローチで構成変更を行なうと、システムの挙動が予測できなくなることがある。Plot Twist(どんでん返し)が起きてしまうわけだ。

 そこでAWSではよりシンプルなアプローチを試した。コントロールプレーンから出力されたすべての構成変更をファイルとしてAmazon S3に保存し、数秒後に新しい構成になっても、それに対応できるようにした。構成ファイルは複数の固定セットを持っておき、予測できる再構成を可能にした。「シンプルで、予測可能なものを作る。アーキテクチャの変更を行なう際に、予測的なプロセスを作っておくことが重要だ」とボーガス氏。このConstant Workでは可用性の高いS3にファイルをつねに保存し、スパイクやバックログ、ボトルネックが生じないように設計している。

Amazon S3ではシンプルなアプローチを実装

 Amazon Route53についても、クライアントのDNSの構成変更をインメモリテーブルに書き、集約してヘルスチェッカーにプッシュするというシンプルな構成をとっている。システムに予測可能なプロセスを埋め込むことで、不確定さのインパクトを低減する。これが5つ目の学びだ。

 続く6つ目の学びは自動化だ。たとえば、新しいリージョンの構築も完全に自動化し、人が関わらないで済むようにしておくことだ。再構成がかけられても、ネットワークの能力があれば、複雑性は取り除ける。

 ここで重要なのは、「なにを自動化すべきか」ではなく、「なにを自動化しないか?」だという。ワークフロー内で必ず人が介在してしまう「Human in the loop」においては、人が関わらざるを得ないタスクがなにかを検討し、それ以外は自動化するというのがここでの鉄則。これによりヒューマンエラーを極力排除し、セキュリティも向上する。

 「AWSではすべての人がセキュリティに責任を持っているというアプローチをとっている。お客さまを守る上では、セキュリティはなによりも大事な要素になる」とボーガス氏。そのためには事後的な対策ではなく、あらかじめセキュリティを確保したシステムを構築することが大事だ。

 そのため、テクノロジーも自ら構築している。たとえば、脅威検知の仕組みがそれに当る。AWSが収集する悪意のあるドメインの情報は何兆にも及んでいるが、どのような脅威があるかを見極めるために自動化を導入している。また、AIを活用した同社のGuardDutyにより、ユーザーのシステムを保護している。

 一方で、サポートチケットに関しては、AWSの従業員が一体となって対応しつつ、処理フローは極力自動化している。同社のAgentic ticket triage systemではチケットの確認、現在のシステムのチェック、既存のイシューと解決の検索、カテゴリ化・優先順位付け、解決策の提示までの一連のプランを構築。プランに従ってツールを実行し、検証を行なうところまで自動化し、解決しなければチケットで解決すべき内容の全体像を示した上で、人間が介在する。「絶対に人が関わらなければならないことに関われるようにしておく。そしてより迅速に、適切な判断を下し、複雑な問題を解決できるようにしておくわけだ」(ボーガス氏)。

可能な限り自動化されたチケット管理システム

フードロスに立ち向かうToo Good To Go 1億ユーザーへの道

 AWSが20年で得た学びの共有。続いてコミュニティの立場での学びを共有したのは、Too Good To GoのエンジニアリングVPであるロバート・クリスチャンセン氏だ。ボーガス氏は、「『AWS HERO』と呼ばれるAWSコミュニティのリーダーは現在グローバルで257人いる。彼らの話に耳を傾けてほしい。みなさんの仕事に有用なことがいっぱいある」と紹介する。

 Too Good To Goはフードロスという社会課題を解消すべく2015年にデンマークで設立されたスタートアップ。「食べ物をゴミ箱に捨てたことがある人は、正直に手を挙げてほしい。世界中で生産される食品の40%が無駄になっているという事実をご存じですか?」と聴衆に語りかけるクリスチャンセン氏。フードロスは温室効果ガスの10%を排出しているが、これは航空業界全体の排出量の4倍に当るという。

Too Good To GoのエンジニアリングVPであるロバート・クリスチャンセン氏

 Too Good To Goは廃棄食品の販売を手がけるマーケットプレイスを展開している。「立ち上げから数週間で数百の企業があまった食品を、マーケットプレイスにアップロードできるようになった。これは地球にとっても、懐にとってもうれしいWin-Winの結果だ」とクリスチャンセン氏は語る。

 2018年には登録者数は100万人を超えた。ただ、「高い志と卓越したアイデアを持っていた創業者たちだが、残念ながら開発者としての資質は欠けていた」とのことで、成長するにあたってアプリが大きな課題となってきた。当時は単一のMySQL DBで構築された典型的なPHPアプリケーションで、毎日の負荷に耐えきれなかった。

 そこでアプリケーションの更新を行なった。PHPアプリケーションをSpringベースに書き直し、優れたリソース管理を実現。データベースも書き込み用インスタンスと複数のリードレプリカから構成されたAuroraに移行した。「100万人のユーザーということで、われわれも圧倒されていたが、小さな改善を日々続けることで、創業から4年で登録ユーザーは1000万人まで伸ばすことができた」とクリスチャンセン氏は語る。

 ここで心がけたのもシンプルさだった。ビジネス側からはさまざまな機能要件が突きつけられていたが、開発者からはシンプルさをキープしてほしいというリクエストがあった。その点、言語とフレームワークを固定したことで、開発者はトランザクション、セキュリティ、バックグラウンド、キャッシュなど普段使い慣れたツールを利用できるようになった。

 2020年には登録者は2400万人を超えた。北米にも進出し、異なるパートナー、習慣、タイムゾーン、部隊でのシステム運用だったが、AWSをパートナーとしたからグローバルで単一のシステムを保つことができたという。「米国向けに新しいアプリやシステムを導入するのは避けたかった。シンプルさを保ちたかった」とクリスチャンセン氏。単一のシステムでありながら、ローカルの処理を最適化するため、データを各リージョンで分散させつつ、SQSやElastiCacheを活用することで同期可能なシステムを構築。同じ手法でオーストラリアにも進出することができたという。

異なるリージョンでの分散システムを構築

 現在、Too Good To Goの登録者数は1億人を超え、供給元のパートナーも17万5000社に拡大した。「今では4億食を無駄にしないで済むようになった」とクリスチャンセン氏。最近では賞味期限の迫った有名ブランド食品を詰め合わせたボックスを宅配する「Too Good To Go Parcels」をリリースした。

 でも、先は長いとクリスチャンセン氏は語る。「1秒あたり4食を救っているが、同時に8万食が無駄になっている。大きなチャンスがまだある。地球の健康がそれにかかっています。だから質問させてください。フードロスを減らすために、どうしますか? なにをしますか?」と聴衆に問いかけて、登壇を終えた。

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード