Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり

yuki_uchida
August 04, 2024
2.9k

SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり

SRE NEXT 2024で登壇した際に利用した資料です。
https://sre-next.dev/2024/schedule/#jp051

yuki_uchida

August 04, 2024
Tweet

Transcript

  1. © NTT Communications Corporation All Rights Reserved. 1 2024年8⽉4⽇ NTTコミュニケーションズ株式会社

    SKYWAY推進室 SkyWayが遭遇したWebRTC の可観測性に関する問題と 開発者向け可視化サービス提供までの道のり
  2. © NTT Communications Corporation All Rights Reserved. 2 SkyWayにDevOpsエンジニアとして参画 WebRTC

    R&Dチームの⽴ち上げ WebRTC R&Dチームのリーダー 次世代のWebRTCに関する技術調査 SkyWay推進室 WebRTC Researcher 内⽥ 裕貴(X: @yuki_wtz) 2019.04 2020.09 2022.11 2024.01
  3. © NTT Communications Corporation All Rights Reserved. 6 SRE領域に興味のある⽅々に MonitoringからObservabilityへ踏み込み

    Observabilityをユーザーに提供することになった例として 本セッションのゴール
  4. © NTT Communications Corporation All Rights Reserved. 7 SRE領域に興味のある⽅々に MonitoringからObservabilityへ踏み込み

    Observabilityをユーザーに提供することになった例として 課題・想い・解決までの道のりを 本セッションのゴール
  5. © NTT Communications Corporation All Rights Reserved. 8 SRE領域に興味のある⽅々に MonitoringからObservabilityへ踏み込み

    Observabilityをユーザーに提供することになった例として 課題・想い・解決までの道のりを参考にして頂く 本セッションのゴール
  6. © NTT Communications Corporation All Rights Reserved. 9 WebRTCとSkyWayとは WebRTCで発⽣する不具合

    WebRTC Platformとして求められる責任 MonitoringからObservabilityへ SkyWay Analytics β まとめ ⽬次
  7. © NTT Communications Corporation All Rights Reserved. 13 WebRTCとSkyWayとは WebRTCとは

    Web Realtime Communicationの略 ZoomやMicrosoft Teamsのようなビデオ通話サービスを実現するための プロトコルの集合体
  8. © NTT Communications Corporation All Rights Reserved. 14 WebRTCとSkyWayとは WebRTCとは

    Web Realtime Communicationの略 ZoomやMicrosoft Teamsのようなビデオ通話サービスを実現するための プロトコルの集合体 2011年に仕様草案がW3Cに提出され、2021年に勧告化(標準化)
  9. © NTT Communications Corporation All Rights Reserved. 16 WebRTCとSkyWayとは SkyWayとは

    WebRTC機能をユーザーが仕様追従・サーバ運⽤などのコストを負担することなく、 ビデオ通話を簡単に実現するためのマネージドサービス
  10. © NTT Communications Corporation All Rights Reserved. 17 WebRTCとSkyWayとは SkyWayとは

    WebRTC機能をユーザーが仕様追従・サーバ運⽤などのコストを負担することなく、 ビデオ通話を簡単に実現するためのマネージドサービス 2013年から10年以上提供
  11. © NTT Communications Corporation All Rights Reserved. 20 WebRTCで発⽣する不具合 以下の不具合を経験したことはありませんか?

    • 通話が始まらない • 映像や⾳声が⾒えない・聞こえない • 映像や⾳声が途切れる
  12. © NTT Communications Corporation All Rights Reserved. 21 WebRTCで発⽣する不具合 以下の不具合を経験したことはありませんか?

    • 通話が始まらない • 映像や⾳声が⾒えない・聞こえない • 映像や⾳声が途切れる これらはなぜ起こってしまうのか?
  13. © NTT Communications Corporation All Rights Reserved. 23 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 1.

    インターネットという不安定な物を酷使してリアルタイム通信を実現 2. 複雑かつ多機能
  14. © NTT Communications Corporation All Rights Reserved. 24 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 1.

    インターネットはベストエフォート(専⽤線のように常に同じ品質ではない)
  15. © NTT Communications Corporation All Rights Reserved. 25 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 1.

    インターネットはベストエフォート(専⽤線のように常に同じ品質ではない) 快適に通話をするためには⾼品質なNW環境が必要
  16. © NTT Communications Corporation All Rights Reserved. 26 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 1.

    インターネットはベストエフォート(専⽤線のように常に同じ品質ではない) 快適に通話をするためには⾼品質なNW環境が必要 • 遅延が⼩さい(250ms未満が望ましい) • パケットロスが発⽣しない(10%未満が望ましい) • 帯域幅が⼗分⼤きい(1Mbps以上が望ましい)
  17. © NTT Communications Corporation All Rights Reserved. 27 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 1.

    インターネットはベストエフォート(専⽤線のように常に同じ品質ではない) 快適に通話をするためには⾼品質なNW環境が必要 • 遅延が⼩さい(250ms未満が望ましい) • パケットロスが発⽣しない(10%未満が望ましい) • 帯域幅が⼗分⼤きい(1Mbps以上が望ましい) 上記は以下の要素によって左右される • 相⼿との物理的な距離 • デバイス性能 • NW機器・ISPの混雑・障害 • Wi-Fi利⽤やCellular回線の利⽤
  18. © NTT Communications Corporation All Rights Reserved. 30 WebRTCで発⽣する不具合はなぜ起こってしまうのか? WebRTCは様々な遅延や⽋損対策を⾏っている

    • FEC(Forward Error Correction) • ロスしたパケットの復元 • GCC(Google Congestion Control) • 帯域幅推定と映像エンコード時のQP値やフレームレートの制御
  19. © NTT Communications Corporation All Rights Reserved. 31 WebRTCで発⽣する不具合はなぜ起こってしまうのか? WebRTCは様々な遅延や⽋損対策を⾏っている

    • FEC(Forward Error Correction) • ロスしたパケットの復元 • GCC(Google Congestion Control) • 帯域幅推定と映像エンコード時のQP値やフレームレートの制御 • DTX(Discontinuous Transmission) • 送信量削減(無⾳パケット除去)
  20. © NTT Communications Corporation All Rights Reserved. 32 WebRTCで発⽣する不具合はなぜ起こってしまうのか? WebRTCは様々な遅延や⽋損対策を⾏っている

    • FEC(Forward Error Correction) • ロスしたパケットの復元 • GCC(Google Congestion Control) • 帯域幅推定と映像エンコード時のQP値やフレームレートの制御 • DTX(Discontinuous Transmission) • 送信量削減(無⾳パケット除去) • HWA(HardWare Acceleration) • デバイス負荷軽減
  21. © NTT Communications Corporation All Rights Reserved. 33 WebRTCで発⽣する不具合はなぜ起こってしまうのか? WebRTCは様々な遅延や⽋損対策を⾏っているが、⼗分ではない

    • FEC(Forward Error Correction) • ロスしたパケットの復元 • GCC(Google Congestion Control) • 帯域幅推定と映像エンコード時のQP値やフレームレートの制御 • DTX(Discontinuous Transmission) • 送信量削減(無⾳パケット除去) • HWA(HardWare Acceleration) • デバイス負荷軽減
  22. © NTT Communications Corporation All Rights Reserved. 36 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-1: プロトコルスタックが複雑 https://hpbn.co/webrtc/#real-time-network-transports
  23. © NTT Communications Corporation All Rights Reserved. 37 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-1: プロトコルスタックが複雑 • プロトコルの集まりがWebRTC https://hpbn.co/webrtc/#real-time-network-transports
  24. © NTT Communications Corporation All Rights Reserved. 38 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-1: プロトコルスタックが複雑 • プロトコルの集まりがWebRTC • ブラウザ内部で⾊々な処理が⾏われている
  25. © NTT Communications Corporation All Rights Reserved. 39 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-1: プロトコルスタックが複雑 • プロトコルの集まりがWebRTC • ブラウザ内部で⾊々な処理が⾏われている https://zenn.dev/tetter/articles/rtptransport-first
  26. © NTT Communications Corporation All Rights Reserved. 40 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-1: プロトコルスタックが複雑 • プロトコルの集まりがWebRTC • ブラウザ内部で⾊々な処理が⾏われている • シーケンシャルなフローに⾒えるが、実際は複雑に絡み合っている https://zenn.dev/tetter/articles/rtptransport-first
  27. © NTT Communications Corporation All Rights Reserved. 41 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-2: ハードウェア・OS・ブラウザの実装に依存する
  28. © NTT Communications Corporation All Rights Reserved. 42 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-2: ハードウェア・OS・ブラウザの実装に依存する https://zenn.dev/tetter/articles/rtptransport-first
  29. © NTT Communications Corporation All Rights Reserved. 43 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-2: ハードウェア・OS・ブラウザの実装に依存する • メディア取得時: ハードウェア・OSの機能を通してカメラ・マイクにアクセス https://zenn.dev/tetter/articles/rtptransport-first
  30. © NTT Communications Corporation All Rights Reserved. 44 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-2: ハードウェア・OS・ブラウザの実装に依存する • メディア取得時: ハードウェア・OSの機能を通してカメラ・マイクにアクセス • メディアエンコード時:ハードウェア・OSの機能を通してHWAのON/OFF https://zenn.dev/tetter/articles/rtptransport-first
  31. © NTT Communications Corporation All Rights Reserved. 45 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-2: ハードウェア・OS・ブラウザの実装に依存する • メディア取得時: ハードウェア・OSの機能を通してカメラ・マイクにアクセス • メディアエンコード時:ハードウェア・OSの機能を通してHWAのON/OFF • メディアエンコード時:エンコード処理の設定をブラウザが動的に変更する https://zenn.dev/tetter/articles/rtptransport-first
  32. © NTT Communications Corporation All Rights Reserved. 46 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-3: これ以外にも、拡⼤したユースケースに対応するために様々な機能を持つ
  33. © NTT Communications Corporation All Rights Reserved. 47 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-3: これ以外にも、拡⼤したユースケースに対応するために様々な機能を持つ • P2Pではなくサバクラ型で数⼈〜数百⼈通話 • ビデオ会議以外にも、⾳楽のライブ配信やゲーム映像の送信など • ブラウザ以外のiOS/Android/Unityなどの対応
  34. © NTT Communications Corporation All Rights Reserved. 48 WebRTCで発⽣する不具合はなぜ起こってしまうのか? 2.

    WebRTCが技術として複雑すぎる 2-3: これ以外にも、拡⼤したユースケースに対応するために様々な機能を持つ • P2Pではなくサバクラ型で数⼈〜数百⼈通話 • ビデオ会議以外にも、⾳楽のライブ配信やゲーム映像の送信など • ブラウザ以外のiOS/Android/Unityなどの対応 元々の仕様ではP2Pで1対1のビデオ会議を前提としていたが、今となっては膨⼤な機能が持 つようになった
  35. © NTT Communications Corporation All Rights Reserved. 52 WebRTC Platformに求められる責任

    不具合の説明責任 不具合が発⽣した際に、顧客に原因を説明し、解決⽅法を提⽰する。 そして、解決できなかったとしても納得してもらう責任
  36. © NTT Communications Corporation All Rights Reserved. 53 WebRTC Platformに求められる責任

    不具合の説明責任 不具合が発⽣した際に、顧客に原因を説明し、解決⽅法を提⽰する。 そして、解決できなかったとしても納得してもらう責任 しかし、この責任を全うするのは難しい
  37. © NTT Communications Corporation All Rights Reserved. 56 WebRTC Platformに求められる責任を全うするのは難しい

    なぜか? • アンコントローラブルな事象が多い • 動きのほとんどがブラウザ・OS・ハードウェアによって隠蔽されている
  38. © NTT Communications Corporation All Rights Reserved. 57 WebRTC Platformに求められる責任を全うするのは難しい

    なぜか? • アンコントローラブルな事象が多い • 動きのほとんどがブラウザ・OS・ハードウェアによって隠蔽されている • WebRTCのイベントや統計情報は多様で取捨選択が必要
  39. © NTT Communications Corporation All Rights Reserved. 58 WebRTC Platformに求められる責任を全うするのは難しい

    なぜか? • アンコントローラブルな事象が多い • 動きのほとんどがブラウザ・OS・ハードウェアによって隠蔽されている • WebRTCのイベントや統計情報は多様で取捨選択が必要 従来のメトリクスモニタリングなどでは原因究明が困難であるため、⼯夫が必要
  40. © NTT Communications Corporation All Rights Reserved. 63 MonitoringからObservabilityへ メトリクスモニタリングやログ監視では、『異常検知』は出来ても『原因究明』は難しい

    『原因究明』のために内部状態を正確に取得することは、隠蔽されているので不可能 よって、WebRTCのイベント情報や統計情報から、WebRTC通信の動きを推測する必要があった
  41. © NTT Communications Corporation All Rights Reserved. 64 MonitoringからObservabilityへ メトリクスモニタリングやログ監視では、『異常検知』は出来ても『原因究明』は難しい

    『原因究明』のために内部状態を正確に取得することは、隠蔽されているので不可能 よって、WebRTCのイベント情報や統計情報から、WebRTC通信の動きを推測する必要があった
  42. © NTT Communications Corporation All Rights Reserved. 65 MonitoringからObservabilityへ メトリクスモニタリングやログ監視では、『異常検知』は出来ても『原因究明』は難しい

    『原因究明』のために内部状態を正確に取得することは、隠蔽されているので不可能 よって、WebRTCのイベント情報や統計情報から、WebRTC通信の動きを推測する必要があった MonitoringからObservabilityへ踏み込むということ
  43. © NTT Communications Corporation All Rights Reserved. 66 MonitoringからObservabilityへ Observabilityとは

    ”外部出⼒の知識からシステムの内部状態をどれだけうまく推測することができるかの尺度” Charity Majors(2023) オブザーバビリティ・エンジニアリング
  44. © NTT Communications Corporation All Rights Reserved. 67 MonitoringからObservabilityへ Observabilityとは

    ”外部出⼒の知識からシステムの内部状態をどれだけうまく推測することができるかの尺度” Charity Majors(2023) オブザーバビリティ・エンジニアリング
  45. © NTT Communications Corporation All Rights Reserved. 68 MonitoringからObservabilityへ Observabilityとは

    ”外部出⼒の知識からシステムの内部状態をどれだけうまく推測することができるかの尺度” Charity Majors(2023) オブザーバビリティ・エンジニアリング “WebRTCのイベント情報や統計情報から、WebRTC通信の動きを推測する”
  46. © NTT Communications Corporation All Rights Reserved. 69 MonitoringからObservabilityへ Observabilityとは

    ”外部出⼒の知識からシステムの内部状態をどれだけうまく推測することができるかの尺度” Charity Majors(2023) オブザーバビリティ・エンジニアリング “WebRTCのイベント情報や統計情報から、WebRTC通信の動きを推測する” そして開発したものが、WebRTC専⽤のObservabilityシステム SkyWay Analytics β
  47. © NTT Communications Corporation All Rights Reserved. 72 SkyWay Analytics

    β SkyWayがWebRTC Platformとして、説明責任を果たすために WebRTCの通信状況をお客様に説明するプロダクト
  48. © NTT Communications Corporation All Rights Reserved. 73 SkyWay Analytics

    β お客様端末・サーバーから情報を吸い上げ、集積し、簡潔に要約する
  49. © NTT Communications Corporation All Rights Reserved. 74 SkyWay Analytics

    β お客様端末・サーバーから情報を吸い上げ、集積し、簡潔に要約する
  50. © NTT Communications Corporation All Rights Reserved. 75 SkyWay Analytics

    β お客様端末・サーバーから情報を吸い上げ、集積し、簡潔に要約する サーバやログ監視だけではなくEUMやAPM的な情報も含む
  51. © NTT Communications Corporation All Rights Reserved. 76 SkyWay Analytics

    β お客様端末・サーバーから情報を吸い上げ、集積し、簡潔に要約する サーバやログ監視だけではなくEUMやAPM的な情報も含む EUM(End User Monitoring): 端末・OS情報など
  52. © NTT Communications Corporation All Rights Reserved. 77 SkyWay Analytics

    β お客様端末・サーバーから情報を吸い上げ、集積し、簡潔に要約する サーバやログ監視だけではなくEUMやAPM的な情報も含む EUM(End User Monitoring): 端末・OS情報など APM(Application Performance Monitoring): NW品質やメディア品質など
  53. © NTT Communications Corporation All Rights Reserved. 82 参加メンバーごとの詳細情報 •

    SDK • 端末名 • OS • ブラウザ • ロケーション • 送受信した映像・⾳声の情報
  54. © NTT Communications Corporation All Rights Reserved. 83 参加メンバーごとの詳細情報 •

    SDK • 端末名 • OS • ブラウザ • ロケーション • 送受信した映像・⾳声の情報
  55. © NTT Communications Corporation All Rights Reserved. 84 参加メンバーごとの詳細情報 •

    SDK • 端末名 • OS • ブラウザ • ロケーション • 送受信した映像・⾳声の情報
  56. © NTT Communications Corporation All Rights Reserved. 85 映像・⾳声の詳細情報 •

    映像・⾳声のIDやユーザー情報 • WebRTC/SkyWayのイベントタイムライン • 有線/Wi-Fi • HWAの ON/OFF • カメラ・マイクデバイス名 • 映像・⾳声のコーデック
  57. © NTT Communications Corporation All Rights Reserved. 86 映像・⾳声の詳細情報 •

    映像・⾳声のIDやユーザー情報 • WebRTC/SkyWayのイベントタイムライン • 有線/Wi-Fi • HWAの ON/OFF • カメラ・マイクデバイス名 • 映像・⾳声のコーデック
  58. © NTT Communications Corporation All Rights Reserved. 87 映像・⾳声の詳細情報 •

    映像・⾳声のIDやユーザー情報 • WebRTC/SkyWayのイベントタイムライン • 有線/Wi-Fi • HWAの ON/OFF • カメラ・マイクデバイス名 • 映像・⾳声のコーデック
  59. © NTT Communications Corporation All Rights Reserved. 88 通信品質 •

    ジッタ • パケロス • ビットレート • RTT
  60. © NTT Communications Corporation All Rights Reserved. 89 メディア品質 •

    フレームレート • 解像度 デバイス性能 • エンコード/デコードに要した時間 • CPU負荷
  61. © NTT Communications Corporation All Rights Reserved. 91 SkyWay Analytics

    β の評価 SkyWayが10年以上蓄積してきたノウハウを活かして設計したことで お客様から「通話状況が理解しやすくなり、調査が捗った」と⾔って頂けるように
  62. © NTT Communications Corporation All Rights Reserved. 92 SkyWay Analytics

    β の評価 SkyWayが10年以上蓄積してきたノウハウを活かして設計したことで お客様から「通話状況が理解しやすくなり、調査が捗った」と⾔って頂けるように βから正式サービス提供へ
  63. © NTT Communications Corporation All Rights Reserved. 96 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い
  64. © NTT Communications Corporation All Rights Reserved. 97 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性
  65. © NTT Communications Corporation All Rights Reserved. 98 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ
  66. © NTT Communications Corporation All Rights Reserved. 99 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ • Platformとしての説明責任を果たすため、SkyWay Analytics βを提供開始した
  67. © NTT Communications Corporation All Rights Reserved. 100 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ • Platformとしての説明責任を果たすため、SkyWay Analytics βを提供開始した • お客様にも使ってもらえるプロダクトに
  68. © NTT Communications Corporation All Rights Reserved. 101 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ • Platformとしての説明責任を果たすため、SkyWay Analytics βを提供開始した • お客様にも使ってもらえるプロダクトに
  69. © NTT Communications Corporation All Rights Reserved. 102 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ • Platformとしての説明責任を果たすため、SkyWay Analytics βを提供開始した • お客様にも使ってもらえるプロダクトに
  70. © NTT Communications Corporation All Rights Reserved. 103 まとめ •

    WebRTCは様々な不具合が発⽣する • その不具合にはPlatformとして対応が困難なものも多い • サーバメトリクスやログの監視だけではなくAPM, EUMまでやる必要性 • MonitoringからObservabilityへ • Platformとしての説明責任を果たすため、SkyWay Analytics βを提供開始した • お客様にも使ってもらえるプロダクトに
  71. © NTT Communications Corporation All Rights Reserved. 105 最後に SkyWayを⼀緒に作ってくださる⽅を募集しています!

    • フロントエンド / バックエンド エンジニア • WebRTCエンジニア • モバイルエンジニア • リサーチャー • EM / PdM