分散 WebRTC SFU のパッケージ製品を作ってる

V
Dec 20, 2023

--

自社では WebRTC をサーバー経由で配信する、WebRTC SFU をパッケージとして開発、販売している。開発は 2013 年くらいからで、2015 年に販売を開始、2023 年の今はこの製品だけで十分な利益が出るところまで来た。

2023 年 12 月のリリースで分散 WebRTC SFU に向けた仕組みを追加して、2024 年前半には分散 WebRTC SFU を提供できるように開発を進めている。

分散 WebRTC SFU ってなに?

WebRTC SFU が複数が起動していて、どの WebRTC SFU にアクセスしても、同じルームの音声や映像、データを受信できるようになる仕組み。

つまり WebRTC SFU をスケールアウトさせる仕組みの一つ。

分散すると何が嬉しいの?

どの WebRTC SFU にアクセスしても良いので、大規模配信が実現可能になる。1 台のサーバーで 1 万の配信が出来るならば、 100 台サーバーがあれば 100 万の視聴者に 1 秒未満での配信が可能になる。

つまり超低遅延、かつ大規模配信を実現できるようになる。

もちろん、耐障害性もあがる。特定の WebRTC SFU が落ちても他の WebRTC SFU に繫げば良くなるので。

分散ってそんなに難しいの?

難しい。ただ片方向だけであればわざわざ分散させる必要もない。自社の場合は双方向も重視しているので、かなりやっかい。

分散はどうやって実現するの?

Erlang/OTP と Raft で実現する。サーバー間通信は Erlang/OTP 分散機能を利用し、Raft ライブラリは RabbitMQ が開発している ra というライブラリを利用する。

外部データベースに依存した方が楽では?

それはそう。ただ、パッケージ製品の場合は「外部にデータベースを用意してください」は許されないと思っており、パッケージ内で分散 WebRTC SFU を完結することが大事だと考えてる。

WebRTC SFU を起動するだけで、後は分散してくれるの大変良いし、運用も楽になる。

まとめ

  • 分散 WebRTC SFU をパッケージで提供する
  • 分散 WebRTC SFU は外部アプリケーションに依存せずスケールアウトできるようになる
  • 分散 Media over QUIC Transport も同じ仕組みで実現できるはず

--

--

V
V

No responses yet