Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Video kommunikasiya Vimbox platformasında müəllim və tələbə arasında ünsiyyətin əsas yoludur. Biz uzun müddət əvvəl Skype-dan imtina etdik, bir neçə üçüncü tərəf həllərini sınadıq və nəticədə WebRTC - Janus-gateway birləşməsində qərarlaşdıq. Bir müddət hər şeydən razı qaldıq, amma yenə də bəzi mənfi cəhətlər üzə çıxmaqda davam edirdi. Nəticədə ayrıca video istiqamət yaradılıb.

Yeni istiqamətin rəhbəri Kirill Roqovoydan Skyeng-də videokommunikasiyanın təkamülü, aşkar edilmiş problemlər, həll yolları və sonda istifadə etdiyimiz qoltuqaltılar haqqında danışmasını xahiş etdim. Ümid edirik ki, məqalə veb tətbiqi vasitəsilə özləri də video yaradan şirkətlər üçün faydalı olacaq.

Bir az tarixi

2017-ci ilin yayında Skyeng inkişafının rəhbəri Sergey Safonov Backend Conf-da "Skype'ı necə tərk etdiyimiz və WebRTC-ni necə tətbiq etdiyimiz" haqqında hekayə ilə danışdı. Maraqlananlar çıxışın yazısına buradan baxa bilərlər əlaqə (~45 dəq) və burada onun mahiyyətini qısaca təsvir edəcəyəm.

Skyeng School üçün video rabitə həmişə müəllim-şagird ünsiyyətinin prioritet yolu olmuşdur. Əvvəlcə Skype istifadə edildi, lakin bir sıra səbəblərə görə, ilk növbədə qeydlərin olmaması və birbaşa veb tətbiqinə inteqrasiyanın qeyri-mümkün olması səbəbindən qəti şəkildə qənaətbəxş deyildi. Buna görə də hər cür təcrübələr apardıq.

Əslində, video rabitə üçün tələblərimiz təxminən aşağıdakılar idi:
- sabitlik;
— hər dərs üçün aşağı qiymət;
- dərsləri qeyd etmək;
— kimin nə qədər danışdığını izləmək (dərs zamanı tələbələrin müəllimdən çox danışması bizim üçün vacibdir);
— xətti miqyaslama;
- həm UDP, həm də TCP-dən istifadə etmək bacarığı.

İlk cəhd edən Tokbox-u 2013-cü ildə tətbiq etmək oldu. Hər şey yaxşı idi, amma çox bahalı oldu - hər dərs üçün 113 rubl - və qazancı yedi.

Sonra 2015-ci ildə Voximplant inteqrasiya olundu. Budur, kimin nə qədər danışdığını izləmək üçün lazım olan funksiya və eyni zamanda həll yolu daha ucuz idi: yalnız audio yazılsaydı, hər dərs üçün 20 rubla başa gəlir. Lakin o, yalnız UDP vasitəsilə işləyirdi və TCP-yə keçə bilmirdi. Bununla belə, tələbələrin təxminən 40%-i bundan istifadə edib.

Bir il sonra öz xüsusi tələbləri olan korporativ müştərilərimizə sahib olmağa başladıq. Məsələn, hər şey bir brauzer vasitəsilə işləməlidir, şirkət yalnız http və https açar; yəni Skype və ya UDP yoxdur. Korporativ müştərilər = pul, ona görə də Tokbox-a qayıtdılar, lakin qiymət problemi aradan qalxmadı.

Həll yolu - WebRTC və Janus

İstifadə etmək qərarına gəldi peer-to-peer video rabitə üçün brauzer platforması WebRTC. O, əlaqə yaratmaq, axınları kodlaşdırmaq və deşifrə etmək, trekləri sinxronlaşdırmaq və şəbəkə xətalarını idarə etməklə keyfiyyətə nəzarət etmək üçün məsuliyyət daşıyır. Biz öz tərəfimizdən kamera və mikrofondan axınların oxunmasını, videonun çəkilməsini, əlaqənin idarə olunmasını, WebRTC bağlantısının qurulmasını və axınların ona ötürülməsini, həmçinin əlaqə yaratmaq üçün müştərilər arasında siqnal mesajlarının ötürülməsini təmin etməliyik (WebRTC özü yalnız məlumat formatı, lakin onun mexanizmi ötürülməsi deyil). Müştərilər NAT-ın arxasındadırsa, WebRTC STUN serverlərini birləşdirir; bu kömək etmirsə, serverləri TURN.

Daimi p2p bağlantısı bizim üçün kifayət deyil, çünki şikayətlər olduqda əlavə təhlil üçün dərsləri qeyd etmək istəyirik. Buna görə də biz WebRTC axınlarını rele vasitəsilə göndəririk Meetecho tərəfindən Janus Gateway. Nəticədə, müştərilər yalnız Janus server ünvanını görərək bir-birlərinin ünvanlarını bilmirlər; siqnal serverinin funksiyalarını da yerinə yetirir. Janus bizə lazım olan bir çox funksiyaya malikdir: əgər müştəri UDP-ni bloklayıbsa, avtomatik olaraq TCP-yə keçir; həm UDP, həm də TCP axınlarını qeyd edə bilər; miqyaslı; Hətta əks-səda testləri üçün daxili plagin də var. Lazım gələrsə, Twilio-dan STUN və TURN serverləri avtomatik qoşulur.

2017-ci ilin yayında bizdə iki Janus serveri, üstəlik əsasların prosessorlarını tutmamaq üçün qeydə alınmış xam audio və video faylları emal etmək üçün əlavə server işləyirdi. Qoşularkən Janus serverləri tək-cüt əsasda seçilirdi (bağlantı nömrəsi). O zaman bu kifayət idi, hisslərimizə görə, təxminən dördqat təhlükəsizlik marjası verdi, icra faizi təxminən 80 idi. Eyni zamanda, qiymət hər dərs üçün ~ 2 rubla endirildi, üstəgəl inkişaf və dəstək.

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Video ünsiyyət mövzusuna qayıdaq

Problemləri vaxtında müəyyən etmək və düzəltmək üçün tələbələr və müəllimlərin rəylərinə daim nəzarət edirik. 2018-ci ilin yayında zəng keyfiyyəti şikayətlər arasında birinci yerdə qərarlaşıb. Bu, bir tərəfdən, digər çatışmazlıqları da uğurla aradan qaldırmağımız demək idi. Digər tərəfdən, təcili nəsə etmək lazım idi: dərs pozularsa, bəzən növbəti paketin alınması xərcləri ilə yanaşı, dəyərini itirmək riski ilə üzləşirik və giriş dərsi pozularsa, potensial müştərini itirmək riski ilə üzləşirik. bütövlükdə.

O zaman bizim video rabitəmiz hələ MVP rejimində idi. Sadəcə olaraq, işə saldılar, işlədilər, bir dəfə böyüdülər, necə edəcəyini başa düşdülər - yaxşı, əla. Əgər işləyirsə, onu düzəltməyin. Rabitə keyfiyyəti məsələsini heç kim bilərəkdən həll etməyib. Avqust ayına qədər bunun davam edə bilməyəcəyi aydın oldu və biz WebRTC və Janus ilə nəyin səhv olduğunu anlamaq üçün ayrı bir istiqamət başlatdıq.

Girişdə bu istiqamət alındı: MVP həlli, ölçülər, məqsədlər, təkmilləşdirmə prosesləri yoxdur, müəllimlərin 7%-i isə ünsiyyətin keyfiyyətindən şikayətlənir (tələbələr haqqında da məlumat yox idi).

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Yeni istiqamət gedir

Komanda bu kimi görünür:

  • Baş tərtibatçı da olan şöbə müdiri.
  • QA dəyişiklikləri sınamağa kömək edir, qeyri-sabit kommunikasiya şəraiti yaratmaq üçün yeni yollar axtarır və problemlərlə bağlı cəbhə xəttindən məlumat verir.
  • Analitik daim texniki məlumatlarda müxtəlif korrelyasiyalar axtarır, istifadəçi rəylərinin təhlilini təkmilləşdirir və təcrübələrin nəticələrini yoxlayır.
  • Məhsul meneceri eksperimentlər üçün resursların ümumi istiqamətləndirilməsinə və ayrılmasına kömək edir.
  • İkinci tərtibatçı tez-tez proqramlaşdırma və əlaqəli tapşırıqlarda kömək edir.

Başlamaq üçün biz rabitə keyfiyyətinin qiymətləndirilməsində dəyişiklikləri (günlər, həftələr, aylar üzrə orta hesabla) izləyən nisbətən etibarlı metrik qurduq. O zamanlar müəllimlərin qiymətləri idi, sonradan onlara şagirdlərin qiymətləri əlavə olunurdu. Sonra nəyin səhv olduğu barədə fərziyyələr qurmağa, onu düzəltməyə və dinamikadakı dəyişikliklərə baxmağa başladılar. Biz aşağı asılmış meyvəyə getdik: məsələn, vp8 kodekini vp9 ilə əvəz etdik, performans yaxşılaşdı. Janus parametrləri ilə oynamağa və digər təcrübələr aparmağa çalışdıq - əksər hallarda heç nəyə səbəb olmadı.

İkinci mərhələdə bir fərziyyə ortaya çıxdı: WebRTC peer-to-peer həllidir və biz ortada bir serverdən istifadə edirik. Bəlkə problem buradadır? Qazmağa başladıq və indiyə qədər ən əhəmiyyətli təkmilləşdirməni tapdıq.

Bu anda hovuzdan bir server olduqca axmaq bir alqoritmdən istifadə edərək seçildi: kanaldan və gücdən asılı olaraq hər birinin öz "çəkisi" var idi və biz istifadəçini ən böyük "çəkisi" olan birinə göndərməyə çalışdıq. istifadəçinin coğrafi olaraq harada yerləşdiyinə diqqət yetirmək. Nəticədə Peterburqdan olan müəllim Sibirdən gələn tələbə ilə Sankt-Peterburqdakı Janus serverimiz vasitəsilə deyil, Moskva vasitəsilə əlaqə saxlaya bilirdi.

Alqoritm yenidən işlənib: indi istifadəçi platformamızı açanda biz ondan Ajax istifadə edərək bütün serverlərə pingləri toplayırıq. Bağlantı qurarkən, ən kiçik məbləğə malik bir cüt ping (müəllim-server və tələbə-server) seçirik. Daha az ping serverə daha az şəbəkə məsafəsi deməkdir; daha qısa məsafə paketlərin itirilməsi ehtimalının aşağı olması deməkdir; Paket itkisi video rabitədə ən böyük mənfi amildir. Mənfiliyin payı üç ayda yarıya qədər azaldı (ədalətli olmaq üçün, bu zaman başqa təcrübələr də aparıldı, lakin bu, demək olar ki, ən çox təsir etdi).

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Bu yaxınlarda başqa bir qeyri-aşkar, lakin zahirən vacib bir şeyi kəşf etdik: qalın bir kanalda bir güclü Janus serverinin əvəzinə, daha incə bant genişliyi olan iki sadə serverə sahib olmaq daha yaxşıdır. Bu, eyni anda bir çox otağı (ünsiyyət seanslarını) onlara sıxışdırmaq ümidi ilə güclü maşınlar aldıqdan sonra aydın oldu. Serverlərdə bant genişliyi həddi var, biz bunu otaqların sayına dəqiq şəkildə çevirə bilərik - biz bilirik ki, nə qədər açıla bilər, məsələn, 300 Mbit/s. Serverdə çoxlu otaqlar açılan kimi, yük azalana qədər onu yeni fəaliyyətlər üçün seçməyi dayandırırıq. İdeya ondan ibarət idi ki, güclü bir maşın aldıqdan sonra kanalı ona maksimum yükləyək ki, sonda bant genişliyi ilə deyil, prosessor və yaddaşla məhdudlaşsın. Amma məlum oldu ki, müəyyən sayda açıq otaqlardan (420) sonra prosessor, yaddaş və diskdəki yükün hələ də həddən çox uzaq olmasına baxmayaraq, texniki dəstəyə mənfiliklər gəlməyə başlayır. Görünür, Janusun daxilində nəsə pisləşir, bəlkə orada da müəyyən məhdudiyyətlər var. Təcrübələrə başladıq, bant genişliyi limitini 300-dən 200 Mbit/s-ə endirdik və problemlər aradan qalxdı. İndi biz eyni anda aşağı limitlərə və xüsusiyyətlərə malik üç yeni server aldıq, düşünürük ki, bu, rabitə keyfiyyətinin sabit yaxşılaşmasına səbəb olacaq. Əlbəttə ki, biz orada nə baş verdiyini anlamağa çalışmadıq; qoltuqağaqlarımız hər şeydir. Bizim müdafiəmizdə deyək ki, o anda aktual problemi gözəl həll etmək yox, mümkün qədər tez həll etmək lazım idi; üstəlik, Janus bizim üçün C ilə yazılmış qara qutudur, onunla işləmək çox bahadır.

Skype-dan WebRTC-ə: internet vasitəsilə video rabitəni necə təşkil etdik

Yaxşı, prosesdə biz:

  • həm serverdə, həm də müştəridə yenilənə bilən bütün asılılıqları yenilədik (bunlar da təcrübələr idi, biz nəticələri izlədik);
  • spesifik hallarla bağlı bütün müəyyən edilmiş səhvləri, məsələn, əlaqə kəsildikdə və avtomatik olaraq bərpa edilmədikdə;
  • Video kommunikasiyalar sahəsində çalışan və problemlərimizlə tanış olan şirkətlərlə çoxlu görüşlər keçirdik: oyunlar axını, vebinarların təşkili; bizə faydalı görünən hər şeyi sınadıq;
  • Ən çox şikayətlərin daxil olduğu müəllimlərin texniki təchizatı və rabitə keyfiyyətinə texniki baxış keçirilib.

Təcrübələr və sonrakı dəyişikliklər müəllimlər arasında ünsiyyətdən narazılığı 7,1-ci ilin yanvarında 2018%-dən 2,5-cu ilin yanvarında 2019%-ə endirməyə imkan verdi.

Nədir?

Vimbox platformamızın sabitləşdirilməsi şirkətin 2019-cu il üçün əsas layihələrindən biridir. Böyük ümidlərimiz var ki, sürəti qoruyub saxlaya biləcəyik və daha çox şikayətlərdə video əlaqəni görməyəcəyik. Başa düşürük ki, bu şikayətlərin əhəmiyyətli hissəsi istifadəçilərin kompüterlərində və internetdə olan geriləmələrlə bağlıdır, lakin biz bu hissəni müəyyən edib, qalan hissəsini həll etməliyik. Qalan hər şey texniki problemdir, deyəsən, biz bunun öhdəsindən gəlməliyik.

Əsas çətinlik ondan ibarətdir ki, biz keyfiyyəti hansı səviyyəyə çatdırmağın əslində mümkün olduğunu bilmirik. Bu tavanı tapmaq əsas vəzifədir. Beləliklə, iki təcrübə planlaşdırıldı:

  1. Janus vasitəsilə videonu döyüş şəraitində adi p2p ilə müqayisə edin. Bu təcrübə artıq həyata keçirilmişdir, bizim həllimizlə p2p arasında statistik əhəmiyyətli fərq aşkar edilməmişdir;
  2. Gəlin, yalnız video rabitə həlləri ilə pul qazanan şirkətlərdən (bahalı) xidmətlər təqdim edək və onlardan gələn neqativlərin miqdarını mövcud ilə müqayisə edək.

Bu iki təcrübə bizə əldə edilə bilən hədəfi müəyyən etməyə və ona diqqət yetirməyə imkan verəcək.

Bundan əlavə, müntəzəm olaraq həll edilə bilən bir sıra vəzifələr var:

  • Biz subyektiv rəylər əvəzinə rabitə keyfiyyətinin texniki göstəricisini yaradırıq;
  • Baş verən uğursuzluqları daha dəqiq təhlil etmək, onların dəqiq nə vaxt və harada baş verdiyini və həmin anda heç bir əlaqəsi olmayan hansı hadisələrin baş verdiyini anlamaq üçün daha ətraflı sessiya qeydləri edirik;
  • Dərsdən əvvəl avtomatik əlaqə keyfiyyəti testi hazırlayırıq, həmçinin müştəriyə onun aparatının və kanalının yaratdığı mənfiliklərin miqdarını azaltmaq üçün əlaqəni əl ilə yoxlamaq imkanı veririk;
  • biz pis şəraitdə, dəyişən paket itkisi və s. ilə daha çox video rabitə yükü testləri hazırlayacağıq və keçirəcəyik;
  • nasazlığa dözümlülüyünü artırmaq üçün problemlər olduqda serverlərin davranışını dəyişdiririk;
  • Biz istifadəçini Skype-da olduğu kimi onun əlaqəsində ümumiyyətlə nasazlıq varsa xəbərdar edəcəyik ki, problem onun tərəfində olduğunu başa düşsün.

Aprel ayından etibarən video kommunikasiya istiqaməti Skyeng daxilində tam hüquqlu ayrıca layihəyə çevrilib, yalnız Vimbox-un bir hissəsi deyil, öz məhsulu ilə məşğul olur. Bu o deməkdir ki, biz insanları axtarmağa başlayırıq tam zaman rejimində video ilə işləmək. Yaxşı, həmişəki kimi Biz çoxlu yaxşı insanlar axtarırıq.

Və təbii ki, biz video kommunikasiya ilə işləyən insanlar və şirkətlərlə fəal əlaqə saxlamağa davam edirik. Bizimlə təcrübə mübadiləsi aparmaq istəyirsinizsə, şad olarıq! Şərh yazın, əlaqə saxlayın - hamıya cavab verəcəyik.

Mənbə: www.habr.com