見出し画像

Now in REALITY Tech #23 配信サーバのマルチリージョン化

どうも、サーバエンジニアのうすぎぬです。今回は配信サーバのマルチリージョン化についてつらつら書いて行きます。

内容としては↓の2番で紹介されている内容の結果報告になります!

実施内容

REALITYでは配信の音声やモーションデータの配信をWebsocketサーバを中継してpublishしています。

そして、以前まではそのサーバが日本にのみ設置されていました。
つまり、アメリカユーザ同士での配信/視聴のシチュエーションでは下図の経路で音声/モーションなどがpublishされていたということです。効率悪すぎで草。

改善前のアメリカユーザ同士で配信/視聴した際の通信経路 ※1

まあどう考えても下図がレイテンシ的にもサーバ費用的にも効率が良さそうですね。ということで、アメリカに中継用のWebsocketサーバを設置するぞ!という内容です。

改善後のアメリカユーザ同士で配信/視聴した際の通信経路 ※1

計測

改善前のとある日の計測になりますが、下図はサーバから配信中のクライアントにpingを打ちpingが返ってくるまでの所要時間(レイテンシ)の中央値グラフです。

改善前のレイテンシ (ms) の中央値の遷移

日本のユーザにpingを打った場合は概ね 50 msec 以内に収まっていますが、アメリカのユーザにpingを打った時は 200 msec 程度かかっている様子がわかると思います。つまり、音声/モーションにおいてアメリカユーザの配信では日本ユーザの数倍程度の遅延があったということになります。

低遅延にこだわっているアプリでこれは由々しき問題ですね。

今回、アメリカにもサーバを立てました。レイテンシはどのように変化したのでしょうか。みてみましょう。

REALITYのWebsocketサーバの配置

グラフをどーん!青が改善前、赤が改善後のアメリカユーザのレイテンシです。

改善前と改善後のレイテンシ (ms) の中央値の遷移

アメリカユーザの配信も 100 msec以内 に収まるようになりましたね!良かった。

今後の展望

今回アメリカにサーバを配置したため、東アジア/北アメリカでのレイテンシは下図のようにヘルシーに見えますが、まだまだ改善できる地域は多いです。直近ではヨーロッパと南アメリカを改善予定です。

2022/01におけるLatency分布 ※2

やがて全世界にWebsocketサーバを配置し、世界中どこで配信しても低遅延である状態を目指して行きたいですね。

今後目指すWebsocketサーバ配置のイメージ図

最後に

ここまで読んでくださってありがとうございました。
もし一緒にREALITYを爆速にしてくれるエンジニアの方がいらっしゃいましたが、以下のリンクから気軽にお話を聞きにきてくれると嬉しいです。
REALITYエンジニアカジュアル面談お申し込みフォーム

引用

※1) The Submarine Cable Map (https://www.submarinecablemap.com/) によるコンテンツを引用・改変したものです。(2022/1/11)
※2) Google Data Studio (https://developers.google.com/datastudio?hl=ja)  より