分散 WebRTC SFU は良い

V
May 1, 2024

雑に書きたいことを書いていく。

自社製品の WebRTC SFU に Raft を利用した分散機能を追加したのが、去年。そして今年は分散機能を応用したリレー機能を追加している。

リレー機能というのは、オンラインミーティングをする際に、分散したノードのどこに参加しても同じミーティングに参加できると考えてもらえれば良い。

会社のブログ記事からひっぱてきた画像

このリレー機能は念願だったのだが、実際に使ってみると本当に便利な事に気付く。簡単に言えばスケールアウトするようになった。リソースが足りなくなったらサーバーを追加すればいいし、リソースが余ってきたらサーバーを減らせばいいだけ。

つまり、この分散 WebRTC SFU があれば、100 万同時接続の配信も現実になってしまった。もちろんサーバーとネットワークさえあればもっといける。

自社製品の強みはこの分散の仕組みを WebRTC SFU に組み込んだところ。ほんと Eralgn/OTP と Raft に感謝しかない。

スケールができないから WebRTC はストリーミングに向いていないと言われていると書いてある記事はもう古いので忘れてほしい。

リレー機能が入ったことで、自社で提供しているサービスも構成を変更していくことにした。今まではスケールアウトが難しいので強いサーバーを利用していたが、スケールアウトが容易になってしまったため、そこそこのサーバーを必要なときに用意すれば良くなってしまった。

また、テンポラリーノード( Raft で言う投票権がないノード)という概念を用意することで、気軽にスケールアウト/スケールインの運用を実現した。

今まで培った WebRTC ノウハウと Erlang/OTP のマルチコア機能を利用したスケールアップ、分散機能を利用した スケールアウトがいい感じにマッチして、強い WebRTC SFU ができたと思う。これを 1 から作り上げたのは自慢したい。

もちろん WebRTC なので双方向もがっつりできる。同じルームに 1 万人とかもいける。さらにデータチャネルを使ったメッセージもスケールアウトするので、ストリーミングのコメント配信も行ける。

このノウハウ、そのまま Media over QUIC Transport にも利用できるので、WebRTC だけでなく、リアルタイム配信であれば、時雨堂と思い出してもらえるよう頑張っていきたい。

--

--