スケールアウトできる WebRTC SFU

V
Mar 17, 2024

自社で開発している WebRTC SFU では、ここ数年クラスター機能に投資をしてきました。

最初に提供したクラスター機能は WebRTC SFU を複数ノードで状態を保持し、一部ノードを停止した場合でもサービスを継続するという仕組みです。つまり高い耐障害性を実現するのが目的です。

もともとクラスター機能を提供する最初の目的は運用負荷を下げるのが目的でした。もし一部ノードが障害で停止したとしても、運用チームが焦って対応しなくてもよくするためです。

この目標自体は無事達成しており、クラスター機能を利用した自社サービスではサービス停止メンテナンスを 1 年以上行っておらず、かつサービスダウンも 1 年以上発生していません。

そして耐障害性の次はやはりスケールアウトの実現です。ただ、 WebRTC SFU でスケールアウトはとても難しいです。なぜならリアルタムかつ双方向配信だからです。片方向配信であれば、難しくないのですが、双方向となるといきなりハードルが上がります。

今回、自社 WebRTC SFU ではノード間通信を実現するリレー機能を実装することで、双方向のスケールアウトを実現しています。

自社の検証サービスにこのリレー機能を有効にして開発版をデプロイしました。 3 種類のクラウドサービスで、12 台のノードで実現しています。どのノードに繋いでも同一チャネル(ルーム)に接続できるようになりました。

つまり、 1 ノードで 10000 接続まで処理できるサーバーを 100 台用意すれば 100 万接続まで配信できます。外部データベースに依存もせずマスターレスなのでノードをクラスターに登録/参加するだけですぐにスケールアウトできるようになりました。

まとめ

ねんがんの WebRTC を利用した超低遅延大規模配信を実現できるようになりました。

--

--