AWS Startup ブログ
リアルタイム性と 40% のコスト削減を両立 | 国内最大級メタバースプラットフォーム cluster における AWS 活用【AWS Summit Tokyo】
AWS について学べる日本最大のイベント「AWS Summit Tokyo」が、2023 年 4 月 20 日(木)、21 日(金)の 2 日間にわたり開催されました。「AWS Summit Tokyo」では各種の基調講演や 150 を超えるセッション・企画、会場内のブースによって AWS の知識を身に付けられるだけではなく、参加者同士でベストプラクティスの共有や情報交換ができます。オンデマンド配信登録はこちら。
今回は、開催された事例セッション「リアルタイム性と 40% のコスト削減を両立 | 国内最大級メタバースプラットフォーム cluster における AWS 活用」(スピーカー:クラスター株式会社 執行役員 CTO 田中 宏樹 氏)のレポートをお届けします。
クラスター株式会社は 10 億人が使うサービスを目指して、メタバースプラットフォーム「cluster」の開発・運営を行っています。本セッションでは、「cluster」における 3D 空間内のアバター・イベント情報に関する処理を、リアルタイム性を保ちながらどのように AWS サービスを用いて実現しているのかを田中 氏が解説しました。
またサービスの特性上、大量の Amazon EC2 インスタンスを運用する必要があるため、コストの増加も課題となっていました。この課題に対して、AWS Graviton2 を活用することで 40% 以上のコスト削減に成功した事例についても紹介しました。
メタバースプラットフォーム「cluster」のアーキテクチャ
クラスター社は会社のミッションとして「人類の想像力を加速する」を、ビジョンとして「バーチャル経済圏のインフラをつくる」を掲げています。それらを実現するために、社名と同じ名前の「cluster」というメタバースプラットフォームを運営しています。
「cluster」の 3D 空間上ではたくさんのユーザーが集まって、アバター・コンテンツ制作やコンテンツでの遊興、イベント開催などを実施できます。こうしたサービスの特徴を、田中 氏は「“集まれない”時代の全部入りバーチャルソリューション」と表現しました。
「cluster」のシステムコンポーネントは大まかに分けると、「Web サイト」「アバター配信」「基本機能群(Web API)」「リアルタイム通信(room server)」から構成されています。
「Web サイト」の部分では、Amazon S3 に HTML や CSS、JavaScript のファイルを配置しています。それを Amazon CloudFront で配信し、一部は Lambda@Edge を用いてエッジロケーションでコードを実行。セキュリティ向上のために AWS WAF を導入しています。
次は「アバター配信」の部分。「cluster」でユーザーが使うアバターは、VRM 形式でサービスにアップロードされます。VRM ファイルは暗号化されたうえで Amazon S3 に置かれ、必要なときに Amazon CloudFront を経由してダウンロードされます。
アバターファイルを配信する以外にも、ユーザーがアバター情報を更新した際にその情報を同じ 3D 空間にいるユーザーに配信するための Web API があります。これらは、Amazon API Gateway や AWS Lambda、Amazon DynamoDB などを用いて構築されています。
「基本機能群(Web API)」は、比較的シンプルなアーキテクチャです。Application Load Balancer の後段に Amazon ECS 上で動く Web サーバーがあり、データベースとして Amazon Aurora を使用しています。外部向け・内部向けの Web API のいずれも、ほぼ同様のアーキテクチャです。また、3D 空間にいるユーザーの情報をリアルタイムでデータベースに記録するために Amazon DynamoDB を用いています。
最後に「リアルタイム通信(room server)」の部分。これは、3D 空間内でのワールドやイベントを提供するサーバー群です。「cluster」ではユーザーがワールドやイベントに入る場合、システムの裏側では Amazon EC2 が起動しています。ユーザーはその Amazon EC2 に対して接続するのです。
あらかじめ、Auto Scaling グループを用いて事前に一定量の Amazon EC2 インスタンスを立ち上げ、そこからデタッチしてユーザーに割り当てています。つまり、インスタンスのウォームプールを作るために、Auto Scaling グループを活用しているのです。
Amazon EC2 インスタンス上で動く room server というソフトウェアは、3D 空間内での情報の同期を行うためにクラスター社が Go で内製したものです。新しいバージョンの room server がリリースされた際には Amazon EC2 で動くソフトウェアをすべて更新するために、AWS Systems Manager Automation や AWS AppConfig を活用しています。
Amazon EC2 のコストを 40% 削減した AWS Graviton 活用
セッションの後半では、AWS のアカウントチームとの連携から実現した事例について、田中 氏が解説しました。前述のとおり、room server では Auto Scaling グループによって大量の Amazon EC2 インスタンスを立ち上げるため、多くの金銭的コストがかかります。
サービスの拡大とともにこのコストが線形に増えると事業に支障が出るため、コスト削減の必要があることをクラスター社は AWS のアカウントチームに共有しました。そして、AWS のソリューションアーキテクトを交えた定例会を実施し、アーキテクチャ改善の方法について議論できる場を用意したのです。
AWS のアカウントチームは、「cluster」のインフラ構成のレビューやコストを節約できる Savings Plans の提案、AWS の新サービス・新機能の紹介などを行いました。そのなかで「ARM ベースで作られた、AWS が独自に設計したプロセッサ AWS Graviton を搭載する Amazon EC2 インスタンスを用いることで、かなりのコスト削減を見込めること」を AWS 側が提案したのです。
そこでクラスター社は、2019 年にリリースされた AWS Graviton2 搭載の Amazon EC2 インスタンスを採用しました。幅広いワークロードに対応しているうえに、既存のインスタンスと比べてコストパフォーマンスがカタログスペックで 40% も向上します。
AWS Graviton に移行するうえで懸念となったのは「ARM ベースの CPU にソフトウェア側が対応できるか」という点でした。ですが、ここで功を奏したのがクラスター社がサーバサイドの言語として Go を採用していることです。
Go には 1 つのソースコードからさまざまな CPU アーキテクチャ向けのバイナリを生成するクロスコンパイル機能があります。だからこそ、CI/CD のビルドの設定を変える程度の作業で、スムーズに AWS Graviton2 搭載の Amazon EC2 インスタンスへと移行できたのです。
移行後のインスタンスでも、旧インスタンスと同等の性能を発揮できたためユーザーへの影響はありませんでした。また、room server にかかるコストもカタログスペックどおりに約 40% 削減を実現できたといいます。「cluster」の強みであるリアルタイム性やスケーラビリティを損なうことなく、コスト削減の成果を出せたのです。
最後に田中 氏は「私たちはインフラとして AWS を使い倒しており、AWS のアカウントチームとも強く連携しています。今後も『cluster』をより良いサービスにしていくために、AWS を活用し続けます」と結びました。
AWS Summit 2023 オンデマンド配信はこちら