雑に読むclusterのアーキテクチャ
>ゲームの技術でUGCやるし、3D空間同期&アーカイブやるし、大規模イベントの同接スパイクをさばかないといけないし
>うちほど総合的かつ面白いサーバー・インフラの仕事はないと自負してるし、採用加速中なのでみんな来て!
toC
>コンテンツクリエイターの方々がアバターやクラフトアイテム、アクセサリーなどを「cluster」上で販売しマネタイズできるようなシステムを提供して、クリエイターのエコシステムを構築しています。
toB
>法人企業から依頼を受け、メタバース空間上でプロモーションイベントやライブイベント、コンサート、ファンミーティングなどを開催します。クラスターはこのイベントの制作から運営までをワンストップで支援しています。
課題
3D のワールドやイベントを提供するためのサーバーとして、Amazon EC2 を使用しているが、インフラサービス利用者の増加に伴いインスタンスにかかるコストが大きくなっている
対応
すごい
システムアーキテクチャ
Webサイトのホスティング
3Dアバター情報配信(アバター更新をリアルタイムで同じ空間のユーザーに届ける)
ユーザーとのメッセージのやり取り
主要なWebAPI
リアルタイム系はDynamoDBを使うのね
ルームサーバー
>3D 空間内でのワールドやイベントを提供するためのサーバー群です。「cluster」ではユーザーがワールドやイベントに入る場合、システム側では Amazon EC2 が起動しており、ユーザーはその Amazon EC2 に対して接続します
今回のコストカットはここの話
Auto Scaling グループを用いて常時十分な量の Amazon EC2 インスタンスを立ち上げている
>3D 空間内での情報の同期を行うために、私たちは room server というソフトウェアを内製しています。
Go言語製
>3D 空間のメタデータやアバター、アイテム、state などの同期を行うものです。
>それにより、その時点で起動されている Amazon EC2 で動く room server をすべて新しいバージョンに置き換えて、再デプロイできるようにしています。その際、AWS AppConfig の feature flag も活用しています。
サービス運営において AWS のコストが大きい部分だった
GoだったのでCI/CDのビルド設定を変える程度で乗り換えることができた
月1でAWSとミーティング
>「cluster」は過去の実績として「イベント同時接続数 10 万人」と発表していますが、この数字がさらに大きくなっても、問題なくサービスを運営し続けられるアーキテクチャにしていきたいです。
素直に受け取るなら、現状はこれぐらいの規模が限界ということ
>もともと「cluster」は、IoT などのセンシングデバイスがサーバーにデータを送るために策定された MQTT プロトコルを、3D 空間のデータの同期に使うという発想から生まれたサービスでした。