WebRTC SFU を作るぞ!という思って、イニシャルコミットした日付をみたら、2012 年 11 月 11 日でした。それから 10 年以上が過ぎました。結果的に 1 から Erlang/OTP で WebRTC SFU を作ってきて、今どんな状況なのかを簡単に書いていきます。
2012-11-11 14:08 +0900 voluntas I─┘ Initial commit
自社紹介
WebRTC SFU のパッケージソフトウェアを開発販売している零細企業です。従業員は片手で収まる程度です。
自社開発ライブラリ
以下の WebRTC で利用するプロトコル等のライブラリを標準ライブラリのみを利用して開発しています。全て 1 から開発しています。
- DTLS ライブラリ
- SDP ライブラリ
- RTP / RTCP ライブラリ
- SRTP / SRTCP ライブラリ
- WebM ライブラリ
- MP4 ライブラリ
- STUN ライブラリ
- TURN ライブラリ
自社 WebRTC SFU
上記ライブラリを利用して、WebRTC SFU を開発、販売してからすでに 9 年目にはいりました。多くの企業に採用していただきました。
Erlang/OTP 最大の強みである「落ちにくい」は本当で、自社で運用している WebRTC SFU のサービスは今のところサービス開始から 1.5 年間メンテナンス時間 0、障害 0 で来ています。
性能もでており、お客様からは 1 ノードで 10 Gbps 近い負荷を安定的に処理できているという連絡も頂いています。
分散 WebRTC SFU
最近では Erlang/OTP の強みである分散機能を利用して WebRTC SFU をスケールアウトできる仕組みを実現させています。
RabbitMQ が利用してる Raft ライブラリである Ra を自社 WebRTC SFU へ組み込み、複数のノードでの配信を実現しました。
検証に協力して頂いたお客様からは、5 ノードで 20 Gbps 近い負荷を処理できたとのことです。設計上は 1000 ノード近くまではスケールアウトできると考えているため、超大規模な負荷にも耐えられる分散 WebRTC SFU ができました。
まとめ
Erlang/OTP というマイナーな言語を利用して、製品を開発して販売してきました。お客様から「Erlang/OTP で書かれてるの?」と怪訝な顔をされたことは一度も無いので、別に言語は関係ないということを実感しています。
「Erlang/OTP で書かれてるんですよね!!」という嬉しそうなお客様もまれにいらっしゃいますが … 。
WebRTC SFU を Erlang/OTP で作って良かったと実感しています。今後も良い製品を作っていければと思います。