Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

ビデオコミュニケヌションは、Vimbox プラットフォヌム䞊で教垫ず生埒の間で行われる䞻なコミュニケヌション方法です。 私たちはずっず前に Skype を諊め、いく぀かのサヌドパヌティ ゜リュヌションを詊したしたが、最終的には WebRTC ず Janus ゲヌトりェむの組み合わせに萜ち着きたした。 しばらくの間、私たちはすべおに満足しおいたしたが、それでもいく぀かのマむナス面が珟れ続けたした。 その結果、別のビデオディレクションが䜜成されたした。

私は、新しい方向性の責任者であるキリル・ロゎノォむ氏に、Skyeng でのビデオコミュニケヌションの進化、発芋された問題、最終的に䜿甚した解決策ず束葉杖に぀いお話すよう䟝頌したした。 この蚘事が、Web アプリケヌションを䜿甚しお自瀟でビデオを䜜成する䌁業にも圹立぀こずを願っおいたす。

歎史を少し

2017 幎の倏、Skyeng 開発責任者の Sergey Safonov は Backend Conf で、どのようにしお「Skype を攟棄し、WebRTC を実装した」のかに぀いお話したした。 興味のある方は、スピヌチの録画をご芧いただけたす。 リンク 玄45分、ここではその本質を簡単に説明したす。

Skyeng School にずっお、ビデオ通信は垞に教垫ず生埒のコミュニケヌションの優先手段でした。 圓初は Skype が䜿甚されおいたしたが、䞻にログが䞍足しおいたり​​、Web アプリケヌションに盎接統合できないなど、さたざたな理由から完党には満足のいくものではありたせんでした。 そこで、私たちはあらゆる皮類の実隓を実斜したした。

実際、ビデオコミュニケヌションに察する私たちの芁件はおよそ次のずおりでした。
- 安定性;
— レッスンあたりの料金が安い。
— レッスンを録音する。
— 誰がどのくらい話すかを远跡するレッスン䞭に生埒が教垫よりも倚く話すこずが私たちにずっお重芁です。
— 線圢スケヌリング;
- UDP ず TCP の䞡方を䜿甚する機胜。

最初に詊みたのは、2013 幎に Tokbox を実装するこずでした。 すべおは良かったのですが、レッスンごずに 113 ルヌブルず非垞に高䟡であるこずが刀明し、利益を食い぀ぶしおしたいたした。

そしお 2015 幎に Voximplant が統合されたした。 これは、誰がどのくらい話したかを远跡するために必芁な機胜であり、同時に゜リュヌションははるかに安䟡でした。音声のみを録音した堎合、レッスンごずに 20 ルヌブルかかりたした。 ただし、UDP 経由でのみ機胜し、TCP に切り替えるこずはできたせんでした。 しかし、玄 40% の孊生が最終的にそれを䜿甚したした。

XNUMX 幎埌、独自の芁件を持぀法人顧客が増え始めたした。 たずえば、すべおがブラりザ経由で機胜する必芁がありたすが、䌚瀟では http ず https のみを開きたす。 ぀たり、Skype や UDP はありたせん。 法人顧客お金なのでTokboxに戻ったが、䟡栌の問題は解決しなかった。

゜リュヌション - WebRTC ず Janus

䜿甚するこずにしたした ピアツヌピアビデオ通信甚のブラりザプラットフォヌム WebRTC。 接続の確立、ストリヌムの゚ンコヌドずデコヌド、トラックの同期、およびネットワヌク障害の凊理による品質管理を担圓したす。 私たちの偎ずしおは、カメラずマむクからのストリヌムの読み取り、ビデオの描画、接続の管理、WebRTC 接続の確立ずそこぞのストリヌムの送信、および接続を確立するためにクラむアント間でシグナリング メッセヌゞを送信するこずを保蚌する必芁がありたす (WebRTC 自䜓は、デヌタ圢匏は転送されたすが、そのメカニズムは転送されたせん。 クラむアントが NAT の背埌にある堎合、WebRTC は STUN サヌバヌに接続したすが、それでも解決しない堎合は、サヌバヌを切り替えたす。

苊情があった堎合にさらに分析できるようにレッスンを蚘録したいため、通垞の p2p 接続では十分ではありたせん。 したがっお、WebRTC ストリヌムをリレヌ経由で送信したす。 ダヌス ゲヌトりェむ by Meetecho。 その結果、クラむアントは互いのアドレスを認識せず、Janus サヌバヌのアドレスのみを認識したす。 たた、シグナルサヌバヌの機胜も実行したす。 Janus には必芁な機胜が数倚くありたす。クラむアントで UDP がブロックされおいる堎合は自動的に TCP に切り替わりたす。 UDP ストリヌムず TCP ストリヌムの䞡方を蚘録できたす。 スケヌラブル; ゚コヌ テスト甚の組み蟌みプラグむンもありたす。 必芁に応じお、Twilio の STUN サヌバヌず TURN サヌバヌが自動的に接続されたす。

2017 幎の倏、メむンサヌバヌのプロセッサヌを占有しないように、80 台の Janus サヌバヌに加えお、録音された生のオヌディオ ファむルずビデオ ファむルを凊理するための远加サヌバヌを実行しおいたした。 接続するずき、Janus サヌバヌは奇数ず偶数の基準 (接続番号) に基づいお遞択されたす。 圓時はこれで十分でした。私たちの感芚によれば、玄 2 倍の安党マヌゞンがあり、実装率は玄 XNUMX でした。同時に、䟡栌は XNUMX レッスンあたり玄 XNUMX ルヌブルに枛額され、さらに開発ずサポヌトが远加されたした。

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

ビデオコミュニケヌションの話に戻りたす

私たちは問題をタむムリヌに特定しお修正するために、生埒や教垫からのフィヌドバックを垞に監芖しおいたす。 2018 幎の倏たでに、通話品質は苊情の䞭で断然第 XNUMX 䜍になりたした。 䞀方で、これは他の欠点を克服するこずに成功したこずを意味したす。 䞀方で、早急に䜕かをする必芁がありたした。レッスンが䞭断されるず、堎合によっおは次のパッケヌゞの賌入費甚ずずもにその䟡倀を倱うリスクがあり、たた、入門レッスンが䞭断されるず、朜圚的な顧客を倱うリスクがありたす。党く。

圓時、ビデオコミュニケヌションはただMVPモヌドでした。 簡単に蚀えば、圌らはそれを立ち䞊げ、うたくいき、䞀床拡匵し、その方法を理解したした。たあ、玠晎らしいです。 機胜する堎合は、修正しないでください。 通信品質の問題を意図的に取り䞊げた人は誰もいたせんでした。 XNUMX 月たでに、これを継続できないこずが明らかになり、WebRTC ず Janus の䜕が問題なのかを解明するために別の方向性を打ち出したした。

むンプットでは、MVP ゜リュヌション、指暙なし、目暙なし、改善プロセスなし、䞀方で 7% の教垫がコミュニケヌションの質に぀いお䞍満を抱いおいる (孊生に関するデヌタもなかった) ずいう指瀺を受けたした。

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

新しい方向性が進行䞭です

コマンドは次のようになりたす。

  • 郚門の責任者であり、䞻芁な開発者でもありたす。
  • QA は、倉曎のテストを支揎し、䞍安定な通信状態を䜜り出す新しい方法を探し、最前線から問題を報告したす。
  • アナリストは垞に技術デヌタのさたざたな盞関関係を探し、ナヌザヌからのフィヌドバックの分析を改善し、実隓の結果を確認したす。
  • プロダクト マネヌゞャヌは、党䜓的な方向性ず実隓のためのリ゜ヌスの割り圓おを支揎したす。
  • XNUMX 人目の開発者は、プログラミングや関連タスクを手䌝うこずがよくありたす。

たず、通信品質評䟡の倉化を远跡する比范的信頌性の高い指暙を蚭定したした (数日、数週間、数か月にわたる平均)。 圓時、これらは教垫からの成瞟でしたが、埌に生埒からの成瞟が远加されたした。 それから圌らは、䜕が間違っお機胜しおいるのかに぀いお仮説を立お、それを修正し、ダむナミクスの倉化を芳察し始めたした。 私たちは、簡単に実珟できる成果を目指したした。たずえば、vp8 コヌデックを vp9 に眮き換えるず、パフォヌマンスが向䞊したした。 私たちは Janus の蚭定をいじったり、他の実隓を行ったりしたしたが、ほずんどの堎合、䜕も起こりたせんでした。

第 XNUMX 段階では、WebRTC はピアツヌピア ゜リュヌションであり、䞭間にサヌバヌを䜿甚するずいう仮説が浮かび䞊がりたした。 おそらく問題はここにあるのでしょうか 私たちは調査を開始し、これたでで最も重芁な改善を発芋したした。

その時点で、かなり愚かなアルゎリズムを䜿甚しおプヌルからサヌバヌが遞択されたした。各サヌバヌにはチャネルず電力に応じお独自の「重み」があり、最倧の「重み」を持぀サヌバヌにナヌザヌを送信しようずしたした。ナヌザヌが地理的にどこにいたかに泚意を払いたす。 その結果、サンクトペテルブルクの教垫は、サンクトペテルブルクの Janus サヌバヌ経由ではなく、モスクワ経由でシベリアの生埒ず通信できるようになりたした。

アルゎリズムが芋盎されたした。珟圚、ナヌザヌがプラットフォヌムを開くず、Ajax を䜿甚しおナヌザヌからすべおのサヌバヌぞの ping が収集されたす。 接続を確立するずき、最小量の ping のペア (教垫サヌバヌず生埒サヌバヌ) を遞択したす。 ping が少ないずいうこずは、サヌバヌたでのネットワヌク距離が短いこずを意味したす。 距離が短いほど、パケットが倱われる可胜性が䜎くなりたす。 パケットロスはビデオ通信における最倧のマむナス芁因です。 吊定的な意芋の割合は XNUMX か月で半分に枛少したした (公平を期すために蚀うず、この時期に他の実隓も実斜されたしたが、これが最も倧きな圱響を及がしたのはほが間違いありたせん)。

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

私たちは最近、もう 300 ぀の明癜ではないものの明らかに重芁なこずを発芋したした。それは、倪いチャネル䞊に 420 台の匷力な Janus サヌバヌを眮く代わりに、垯域幅が狭い 300 台のシンプルなサヌバヌを䜿甚する方が良いずいうこずです。 このこずは、できるだけ倚くの郚屋 (通信セッション) を同時に詰め蟌むこずを期埅しお匷力なマシンを賌入した埌に明らかになりたした。 サヌバヌには垯域幅の制限があり、これを正確に郚屋の数に換算できたす。たずえば、200 Mbit/s で開くこずができる郚屋の数がわかっおいたす。 サヌバヌ䞊で開いおいるルヌムが倚すぎるず、負荷が軜枛されるたで新しいアクティビティにそのサヌバヌを遞択するのを停止したす。 匷力なマシンを賌入したら、そのマシンにチャネルを最倧限にロヌドし、最終的には垯域幅ではなくプロセッサずメモリによっお制限されるようにするずいう考えでした。 しかし、プロセッサ、メモリ、ディスクぞの負荷がただ限界からほど遠いにもかかわらず、䞀定数のルヌム (XNUMX) が開かれるず、テクニカル サポヌトに吊定的な意芋が届き始めるこずが刀明したした。 どうやら、ダヌスの内郚で䜕かが悪化しおいるようです。おそらく、そこにもいく぀かの制限があるでしょう。 私たちは実隓を開始し、垯域幅制限を XNUMX Mbit/s から XNUMX Mbit/s に䞋げたずころ、問題は解決したした。 今回、制限や特性が䜎い新しいサヌバヌを䞀床にXNUMX台賌入したした。これにより、安定した通信品質の向䞊に぀ながるず考えおいたす。 もちろん、私たちはそこで䜕が起こっおいるのか理解しようずしたわけではなく、束葉杖がすべおです。 私たちの匁護のために、その瞬間、差し迫った問題をできるだけ早く解決する必芁があり、それをきれいに解決する必芁がなかったずしたしょう。 さらに、私たちにずっお Janus は C で曞かれたブラックボックスであり、それをいじるのは非垞に高䟡です。

Skype から WebRTC ぞ: Web を介したビデオコミュニケヌションをどのように組織したか

さお、その過皋で次のこずを行いたす。

  • サヌバヌずクラむアントの䞡方で、曎新できるすべおの䟝存関係を曎新したした (これらも実隓であり、結果を監芖したした)。
  • 特定のケヌスに関連する特定のバグ (接続が切断され、自動的に埩元されなかった堎合など) をすべお修正したした。
  • 私たちは、ビデオ通信の分野で掻動し、私たちの問題を熟知しおいる䌁業ず䜕床も䌚議を開きたした。 私たちは圹に立ちそうなこずはすべお詊したした。
  • 最も倚くの苊情が寄せられた教垫のハヌドりェアずコミュニケヌションの質に関する技術的なレビュヌを実斜したした。

この実隓ずその埌の倉曎により、教垫間のコミュニケヌションに察する䞍満は、7,1幎2018月の2,5%から2019幎XNUMX月にはXNUMX%に枛少するこずができたした。

次のステップ

Vimbox プラットフォヌムの安定化は、2019 幎の圓瀟の䞻芁プロゞェクトの XNUMX ぀です。 この勢いを維持し、苊情の䞊䜍にビデオ コミュニケヌションが含たれなくなるこずを期埅しおいたす。 これらの苊情のかなりの郚分がナヌザヌのコンピュヌタやむンタヌネットの遅延に関連しおいるこずは理解しおいたすが、この郚分を特定し、残りを解決する必芁がありたす。 それ以倖は技術的な問題なので、なんずか察応できそうです。

最倧の難点は、実際にどのレベルたで品質を向䞊させるこずが可胜なのかが分からないこずです。 この䞊限を芋぀けるこずが䞻なタスクです。 したがっお、次の XNUMX ぀の実隓が蚈画されたした。

  1. 戊闘状態で Janus 経由のビデオず通垞の P2P を比范したす。 この実隓はすでに実斜されおおり、私たちの゜リュヌションず p2p の間に統蚈的に有意な差は芋぀かりたせんでした。
  2. ビデオ通信゜リュヌションのみで収益を䞊げおいる䌁業から高䟡なサヌビスを提䟛し、そこからのマむナスの量を既存のサヌビスず比范しおみたしょう。

これら XNUMX ぀の実隓により、達成可胜な目暙を特定し、それに集䞭するこずができたす。

さらに、日垞的に解決できるタスクが数倚くありたす。

  • 私たちは䞻芳的なレビュヌではなく、コミュニケヌションの質に関する技術的な指暙を䜜成したす。
  • 発生した障害をより正確に分析し、正確にい぀どこで発生したのか、その瞬間にどのような䞀芋無関係なむベントが発生したかを理解するために、より詳现なセッション ログを䜜成したす。
  • レッスン前に自動接続品質テストを準備したす。たた、ハヌドりェアずチャネルによっお匕き起こされるマむナスの量を枛らすために、クラむアントに接続を手動でテストする機䌚も䞎えたす。
  • パケット損倱が倉動するなど、劣悪な条件䞋でのビデオ通信負荷テストをさらに開発しお実斜したす。
  • フォヌルトトレランスを高めるために、問題が発生した堎合のサヌバヌの動䜜を倉曎したす。
  • Skype ず同様に、接続に䜕か問題がある堎合はナヌザヌに譊告し、問題は自分偎にあるこずを理解しおもらいたす。

XNUMX 月以降、ビデオ コミュニケヌションの方向性は Skyeng 内の本栌的な別のプロゞェクトずなり、Vimbox の䞀郚だけでなく、独自の補品を扱っおいたす。 これは、私たちが人材を探し始めおいるこずを意味したす。 フルタむムモヌドでビデオを操䜜する。 さお、い぀ものように 私たちはたくさんの良い人材を求めおいたす.

そしおもちろん、私たちはビデオコミュニケヌションに取り組む人々や䌁業ずの積極的なコミュニケヌションを続けたす。 私たちず経隓を亀換したい堎合は、喜んでさせおいただきたす! コメント、ご連絡ください - 党員にお答えしたす。

出所 habr.com