2023年05月26日

PaaSやSDKの制限に対する実装のコツ

paas_sdk

WebRTCやメッセージングの基盤を担うPaaSやSDKは開発工数の短縮に有効です。しかし、秒間あたりの実行数に上限がある等、制限事項もあります。制限事項の影響で実現できない非機能要件が発生する場合もあります。
この記事では、要件をさらに深掘りして実現させたい内容を満たす実装のコツを記載します。

お役立ち資料ダウンロード

オンライン体験におけるブイキューブの技術サポートのご案内

【図解】システム開発のお手伝い

ブイキューブのソリューションアーキテクトが、寄り添います!
各種ライブ配信システムのアーキテクチャについて わかりやすい構成図にてご紹介!

無料ダウンロード

制限事項の例

メッセージングを提供するAgoraやTencentの制限事項を例に解説します。AgoraのSignalingSDKではチャンネル毎に200件/秒以内(チャンネル参加者数が1,000人未満の場合)を推奨、TencentのChatでは40件/秒の制限になっています。

参考リンク
Signaling Limitations(Agora)
使用制限(Tencent Chat)

実装の改善例

連続したギフトやハートの処理要件

要件

・ハートを飛ばしてライブ配信の盛り上がりを演出
・応援する配信者へ積極的にギフトを送る

改善前の実装

  1. クライアントからハート又はギフトを送信
  2. サーバー側でデータ保存と決済処理を実施
  3. サーバー側からのレスポンス後、クライアントからメッセージングでハート又はギフト送信の旨をブロードキャスト
  4. 配信者や他の視聴者がメッセージを受信してUI更新

問題点

  • 送信側が連打できる為、メッセージの受信がスパイクして端末の負荷が上昇する
  • 決済処理やデータ保存用サーバーの負荷が上昇する
  • 大量にギフトの画像が流れていって読み取れない

改善のポイント

パターン1
ギフトの枚数や、ハートの数を入力するUIを追加し、件数とハート又はギフトの情報を合わせ、1回にまとめて送信
パターン2
クライアント側でボタンクリック数をカウントし、数秒待機してからクリック数とハート又はギフトの情報を合わせて1回送信

大量のチャット

要件

・10,000人規模のライブ配信でチャットをスムーズに流したい

改善前の実装

  1. メッセージング用に全員が1つのチャンネルに接続
  2. メッセージの送信
  3. 配信者や他の視聴者がメッセージを受信してUI更新

問題点

  • メッセージの受信がスパイクして端末の負荷が上昇する
  • PaaS側の負荷が上昇し、メッセージの遅延や送信できなくなる
  • 大量にチャットが流れていって読み取れない

改善のポイント

パターン1

視聴者をランダムで複数のチャンネルに分けて参加させる。数百人規模のグループであればメッセージも自然に流れ、盛り上がりの様子も失われない。

パターン2

チャットの投稿数が増えてきたらメッセージングですぐにメッセージを送信せずに、タイマー等で遅延させて送信する。

ベストプラクティス

PaaSやSDKを提供するベンダーは、設計や実装についてベストプラクティスをドキュメントとして公開しているケースもあります。コンセプトが実装中のサービスに対する同じソリューションなので参考になる場合が多いと思います。

例:Agora SignalingSDKTencent Chat

ガイドブックダウンロード

【すぐ読める!ガイドブック】ビデオ通話・ライブ配信SDK「Agora」

【大充実】通話・配信SDK「Agora」ガイドブック

通話・配信サービス開発や、配信技術のリプレイスを検討中の方、必見の内容です。
Agora SDKの特徴から活用例まで徹底解説!

無料ダウンロード
藤本 諭志

執筆者藤本 諭志

株式会社ブイキューブ 技術本部 Agora担当。 2007年ブイキューブ入社。 自社開発サービスであるV-CUBE セミナーの開発に携わる。現在はAgoraとTencent Cloudのプロダクト担当SEをしている。 スキル:Docker/AWS/Linux/DB/Ruby/PHP/JavaScript

関連記事

先頭へ戻る