日時: | 2022-03-28 |
---|---|
作: | voluntas |
バージョン: | 2022.5 |
URL: | https://voluntas.github.io/ |
Contents
2022 年 3 月 30 日に行われる 第1回 Takeshiba WebMeeting の発表者用の資料です。
Twitter ID は voluntas です。 時雨堂 の方から来ました。
今日は WebMeeting Software Suite に採用いただいた時雨堂製品の紹介と、WebRTC や WebTransport といった関連技術について簡単にお話しようと思います。
WebRTC SFU というサーバ経由で配信を行う製品である WebRTC SFU Sora を開発/販売しています。ありがたいことに多くのお客様に採用いただいています。よくある OSS をかついだ SaaS ではなく、1 から自社開発したパッケージ製品として販売してもう 7 年目です。
ウェブサイトやドキュメントにすべての情報を載せているので、気になった方はそちらを見てもらうとしてどんな特徴があるのかをざっと紹介していこうと思います。
見ていただければわかります。
https://sora.shiguredo.jp/cases
音声と映像の配信なので、クライアントが必要です。 時雨堂ではクライアントを実装するための SDK をすべて Apache License 2.0 でオープンソースとして公開しています。
もちろん、継続的なメンテナンスも行っています。
- shiguredo/sora-js-sdk: WebRTC SFU Sora JavaScript SDK
- shiguredo/sora-android-sdk: WebRTC SFU Sora Android SDK
- shiguredo/sora-ios-sdk: WebRTC SFU Sora iOS SDK
- shiguredo/sora-unity-sdk: WebRTC SFU Sora Unity SDK
コミュニティマネージャが 2 名おり、自社のオープンソース製品やサービスなどの疑問に対応します。
https://discord.gg/shiguredo から参加可能です。
オープンソースの SFU をベースにしているのではなく、プロトコルスタックからすべて自前で実装しています。 自前実装の最大のメリットは 実装してるので一通り理解している です。
数億ユーザがいる WhatsApp や同時接続数百万の Discord、任天堂の通知システム に利用されている Erlang/OTP という言語を採用しています。
7 年提供してきてお客様環境でのサーバシャットダウンまでの障害はコーナケースによるメモリリークでの OOM Killer で殺された一度だけです。
Sora 開発者は Sora サポートも兼任します。これはソースコードレベルで理解をしている開発者がサポートを担当することが一番効率よいという自分の経験から来ています。
独自機能
Sora はクラスター機能をもっており、ロードバランサー機能も提供しています。
https://sora.shiguredo.jp/features#cluster
独自機能
ユーザのマシン負荷を下げたい場合にできることは、とにかく受信パケットを減らすことです。 そうすることでデコード負荷がさがります。それをサーバ側でうまいことやる機能がスポットライトです。
https://sora.shiguredo.jp/features#spotlight
独自機能
WebRTC にある DataChannel という SCTP over DTLS over UDP を利用したメッセージング機能を互換性を維持しながら拡張することで、 リアルタイムなメッセージング機能を実現しています。
https://sora.shiguredo.jp/features#messaging
Signal や Google Duo が採用している End to End Encryption の仕組みを採用しています。
https://github.com/shiguredo/sora-e2ee
時雨堂では、Sora を便利に利用できるツールを Apache License 2.0 でオープンソースとして提供しています。
キャパシティプランニングしたいですよね、でも WebRTC の負荷試験は難しいです。 コマンド一つ、YAML でシナリオが書けて、ブラウザ互換の挙動をする負荷試験ツールを提供しています。
https://github.com/shiguredo/zakuro
WebRTC SFU は 転送 するため、合成ができません。そのため録画した映像は個別に録画されるため、1 つにまとめる仕組みが必要になります。JSON でレイアウトが指定できる合成ツールを提供しています。
https://github.com/shiguredo/hisui
WebRTC は リアルタイム を最優先にしているため、統計情報は刻々とかわり、クライアントの統計情報を取得するのはかなりコストが高くなります。
WebRTC SFU Sora 経由で統計情報を受け取り TSDB (タイムシリーズデータベース) に格納するツールを提供しています。
https://github.com/shiguredo/kohaku
Web会議をするときもう当たり前になった背景ぼかしや仮想背景、ノイズ抑制などをブラウザで実現するのは苦労する場合があります。それらを簡単に実現できるようなライブラリをベンダーロックフリーで提供しています。
https://github.com/shiguredo/media-processors
CPaaS (Communications Platform as a Service) ではなく SaaS (Software as a Service) です
パッケージメーカーが次にとるアクションとしては、パッケージのマネージドサービスの提供でしょう。 ということで、本当にマネージドしかしてくれないサービスを開発中です。
Sora に付加価値をつける素敵な機能などは提供しません。マネージドへ特化させるサービスです。
クラスターを構築し、がっつりと監視、転送量無制限のベアメタルサーバに乗せて、 ダッシュボードが利用できる、転送量無制限のサービスとして提供予定です。
また、先ほど紹介した録画合成や統計解析といった Sora 周辺ツールを追加費用で利用できるような仕組みを提供予定です。
制限は同時接続数と帯域だけです。価格も定額です。ただ固定だと困る方向けに上限ありきの使った分だけ追加で費用を請求する仕組みも提供します。ベースは固定です。
時雨堂 WebRTC SFU Sora as a Service Tobi 開発ログ
WebRTC は登場してもう 10 年以上過ぎています。もともと枯れていたプロトコルの寄せ集めということもあり、枯れきった技術といって問題ありません。
今後は新機能は特に出ることなく、小さな改善の積み重ねのターンに来ています。すごい技術から当たり前の技術になりました。
まだ新しい技術だし ... と思ってるかたはこれを機会に是非触ってみてください。
時雨堂の Sora が直近 30 日 2000 分まで無料で触れる Sora Labo というサービスがありますのでもしよければどうぞ。
https://sora-labo.shiguredo.app/
WebRTC の次の技術として WebTransport が取り上げられることが多いです。実際 WebRTC は様々な技術をひとかたまりにしてブラウザからシンプルな API で利用できるようにした技術です。
WebTransport はこれの真逆で双方向通信部分だけ WebRTC から取り出したプロトコルです。QUIC や HTTP/3 といった今時の技術を採用しています。 Chrome / Edge ではすでに利用可能です。
WebRTC の違いや、WebTransport の使い道について資料を見ながら簡単に話していきます。