Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Бейнебайланыс Vimbox платформасында мұғалім мен студент арасындағы байланыстың негізгі тәсілі болып табылады. Біз Skype-тан баяғыда бас тарттык, бірнеше үшінші тарап шешімдерін қолданып көрдік және ақырында WebRTC - Janus-шлюз комбинациясына қосылдық. Біраз уақыт біз бәріне риза болдық, бірақ әлі де кейбір келеңсіз тұстар пайда болды. Нәтижесінде жеке бейнебағыт жасалды.

Мен жаңа бағыттың жетекшісі Кирилл Роговойдан Skyeng-тегі бейнебайланыстың эволюциясы, табылған мәселелер, шешімдер мен біз қолданатын балдақтар туралы айтуды өтіндім. Мақала веб-қосымшасы арқылы өз бетімен бейне жасайтын компаниялар үшін пайдалы болады деп үміттенеміз.

Біраз тарих

2017 жылдың жазында Skyeng әзірлеу бөлімінің басшысы Сергей Сафонов Backend Conf-те біз «Skype-ден бас тартып, WebRTC-ті қалай іске асырғанымыз» туралы әңгіме айтты. Қызығушылық танытқандар сөздің жазбасын мына сайттан көре алады байланыс (~45 мин), мен мұнда оның мәнін қысқаша сипаттаймын.

Skyeng мектебі үшін бейнебайланыс әрқашан мұғалім мен оқушы арасындағы қарым-қатынастың басымды тәсілі болды. Бастапқыда Skype пайдаланылды, бірақ ол бірқатар себептерге байланысты, ең алдымен, журналдардың болмауына және веб-қосымшаға тікелей біріктіру мүмкін еместігіне байланысты мүлдем қанағаттандырмады. Сондықтан біз эксперименттердің барлық түрін жасадық.

Шын мәнінде, бейне байланысқа қойылатын талаптарымыз шамамен келесідей болды:
— тұрақтылық;
— бір сабақтың төмен бағасы;
— сабақтарды жазу;
— кімнің қанша сөйлейтінін қадағалау (сабақ барысында оқушылардың мұғалімнен гөрі көбірек сөйлегені біз үшін маңызды);
— сызықтық масштабтау;
- UDP және TCP екеуін де пайдалану мүмкіндігі.

Бірінші болып 2013 жылы Tokbox енгізуге тырысты. Барлығы жақсы болды, бірақ ол өте қымбат болып шықты - сабаққа 113 рубль - және пайданы жеп қойды.

Содан кейін 2015 жылы Voximplant біріктірілді. Міне, бізге кімнің қанша сөйлегенін бақылау үшін қажет функция болды және сонымен бірге шешім әлдеқайда арзан болды: егер тек аудио жазылған болса, бір сабаққа 20 рубль тұрады. Дегенмен, ол тек UDP арқылы жұмыс істеді және TCP-ге ауыса алмады. Дегенмен, студенттердің шамамен 40% оны қолданды.

Бір жылдан кейін бізде өзіндік талаптары бар корпоративтік клиенттер пайда бола бастады. Мысалы, барлығы браузер арқылы жұмыс істеуі керек, компания тек http және https ашады; яғни Skype немесе UDP жоқ. Корпоративтік клиенттер = ақша, сондықтан олар Tokbox-қа оралды, бірақ баға мәселесі шешілмеді.

Шешім - WebRTC және Janus

Қолдануға шешім қабылдады тең дәрежелі бейнебайланысқа арналған шолғыш платформасы WebRTC. Ол қосылымды орнатуға, ағындарды кодтауға және декодтауға, тректерді синхрондауға және желі ақауларын өңдеу арқылы сапаны бақылауға жауап береді. Біз өз тарапымыздан камера мен микрофоннан ағындарды оқуды, бейне салуды, қосылымды басқаруды, WebRTC қосылымын орнатуды және оған ағындарды жіберуді, сондай-ақ байланыс орнату үшін клиенттер арасында сигналдық хабарламаларды жіберуді қамтамасыз етуіміз керек (WebRTC өзі тек деректер пішімі, бірақ оның механизмі тасымалданбайды). Клиенттер NAT артында болса, WebRTC STUN серверлерін қосады; бұл көмектеспесе, серверлерді TURN.

Біз үшін тұрақты p2p қосылымы жеткіліксіз, өйткені біз шағымдар болған жағдайда әрі қарай талдау үшін сабақтарды жазғымыз келеді. Сондықтан біз WebRTC ағындарын реле арқылы жібереміз Meetecho ұсынған Janus Gateway. Нәтижесінде, клиенттер бір-бірінің мекенжайларын білмейді, тек Janus серверінің мекенжайын көреді; ол сигнал серверінің функцияларын да орындайды. Janus бізге қажетті көптеген мүмкіндіктерге ие: егер клиент UDP бұғаттаса, TCP-ге автоматты түрде ауысады; UDP және TCP ағындарын жаза алады; масштабталатын; Тіпті жаңғырық сынақтары үшін кіріктірілген плагин бар. Қажет болса, Twilio ұсынған STUN және TURN серверлері автоматты түрде қосылады.

2017 жылдың жазында бізде екі Janus сервері, сонымен қатар негізгілерінің процессорларын басып алмас үшін жазылған шикі аудио және бейне файлдарды өңдеуге арналған қосымша сервер жұмыс істеді. Қосылу кезінде Janus серверлері тақ-жұп негізде таңдалды (қосылу нөмірі). Сол кезде бұл жеткілікті болды, біздің сезімдеріміз бойынша, ол шамамен төрт есе қауіпсіздік маржасын берді, іске асыру пайызы шамамен 80 болды. Сонымен бірге, баға бір сабаққа ~ 2 рубльге дейін төмендеді, плюс әзірлеу және қолдау.

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Бейнебайланыс тақырыбына қайта келу

Біз проблемаларды дер кезінде анықтау және түзету үшін студенттер мен мұғалімдердің кері байланысын үнемі қадағалап отырамыз. 2018 жылдың жазына қарай қоңыраулардың сапасы шағымдар арасында бірінші орында болды. Бұл бір жағынан басқа кемшіліктерді сәтті еңсергенімізді білдірді. Екінші жағынан, шұғыл түрде бірдеңе жасау керек болды: егер сабақ бұзылса, біз оның құндылығын жоғалту қаупі бар, кейде келесі пакетті сатып алу құнымен бірге, ал егер кіріспе сабағы бұзылса, біз әлеуетті клиентті жоғалту қаупі бар. толығымен.

Ол кезде біздің бейнебайланыс әлі MVP режимінде болатын. Қарапайым сөзбен айтқанда, олар оны іске қосты, ол жұмыс істеді, олар оны бір рет кеңейтті, олар мұны қалай жасау керектігін түсінді - жақсы, тамаша. Егер ол жұмыс істесе, оны түзетпеңіз. Байланыс сапасы мәселесін ешкім әдейі қозғаған жоқ. Тамыз айында мұның жалғаса алмайтыны белгілі болды және біз WebRTC мен Janus-та не дұрыс емес екенін анықтау үшін бөлек бағытты іске қостық.

Кіріс кезінде бұл бағыт алынды: MVP шешімі, өлшемдер жоқ, мақсаттар жоқ, жақсарту үдерістері жоқ, ал мұғалімдердің 7% коммуникация сапасына шағымданады (оқушылар туралы да деректер жоқ).

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Жаңа бағыт жүріп жатыр

Пәрмен келесідей көрінеді:

  • Басты әзірлеуші ​​де болып табылатын бөлім басшысы.
  • QA өзгерістерді сынауға көмектеседі, тұрақсыз байланыс жағдайларын жасаудың жаңа жолдарын іздейді және алдыңғы қатардағы мәселелер туралы хабарлайды.
  • Аналитик үнемі техникалық деректерде әртүрлі корреляцияларды іздейді, пайдаланушылардың пікірлерін талдауды жақсартады және эксперименттердің нәтижелерін тексереді.
  • Өнім менеджері эксперименттер үшін ресурстарды жалпы бағыттауға және бөлуге көмектеседі.
  • Екінші әзірлеуші ​​​​көбінесе бағдарламалауға және оған қатысты тапсырмаларға көмектеседі.

Алдымен біз байланыс сапасын бағалаудағы өзгерістерді бақылайтын салыстырмалы түрде сенімді метрика орнаттық (күндер, апталар, айлар бойынша орташа). Ол кезде бұл мұғалімдердің бағалары болса, кейінірек оларға студенттердің бағалары қосылды. Содан кейін олар қате жұмыс істеп жатқаны туралы гипотеза құруға, оны түзетуге және динамикадағы өзгерістерге қарауға кірісті. Біз төмен ілулі жемістерге бардық: мысалы, vp8 кодегін vp9-ге ауыстырдық, өнімділік жақсарды. Біз Janus параметрлерімен ойнауға және басқа эксперименттер жүргізуге тырыстық - көп жағдайда олар ештеңеге әкелмеді.

Екінші кезеңде гипотеза пайда болды: WebRTC - тең дәрежелі шешім және біз ортасында серверді қолданамыз. Мүмкін мәселе осында жатқан шығар? Біз қазуды бастадық және осы уақытқа дейін ең маңызды жақсартуды таптық.

Сол кезде бассейннен сервер өте ақымақ алгоритм арқылы таңдалды: арна мен қуатқа байланысты әрқайсысының өз «салмағы» болды, біз пайдаланушыны ең үлкен «салмағы» бар серверге жіберуге тырыстық. пайдаланушы географиялық орналасқан жеріне назар аудара отырып. Нәтижесінде петерборлық мұғалім Сібірден келген студентпен Санкт-Петербургтегі Janus серверіміз арқылы емес, Мәскеу арқылы сөйлесе алатын болды.

Алгоритм қайта жасалды: енді пайдаланушы платформамызды ашқанда, біз одан Ajax көмегімен барлық серверлерге пингтерді жинаймыз. Қосылымды орнату кезінде біз ең аз мөлшерде пингтер жұбын (мұғалім-сервер және студент-сервер) таңдаймыз. Аз пинг серверге дейінгі желі қашықтығын білдіреді; қысқа қашықтық пакеттерді жоғалту ықтималдығын білдіреді; Пакеттің жоғалуы бейнебайланыстың ең үлкен теріс факторы болып табылады. Үш айдың ішінде негативтіліктің үлесі екі есеге төмендеді (әділдік үшін, осы уақытта басқа эксперименттер жүргізілді, бірақ бұл ең көп әсер етті).

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Жақында біз тағы бір анық емес, бірақ маңызды нәрсе таптық: қалың арнадағы бір қуатты Janus серверінің орнына өткізу қабілеті жұқарақ екі қарапайым сервер болғаны дұрыс. Бұл біз бір уақытта көптеген бөлмелерді (байланыс сеанстарын) толтырамыз деген үмітпен қуатты машиналарды сатып алғаннан кейін анық болды. Серверлерде өткізу қабілетінің шегі бар, біз оны бөлмелердің санына дәл аудара аламыз - біз қанша ашуға болатынын білеміз, мысалы, 300 Мбит/с. Серверде тым көп бөлмелер ашылғанда, жүктеме азаймайынша, оны жаңа әрекеттер үшін таңдауды тоқтатамыз. Идеясы қуатты машинаны сатып алып, арнаны барынша жүктейміз, нәтижесінде ол өткізу қабілеттілігімен емес, процессормен және жадпен шектеледі. Бірақ белгілі бір ашық бөлмелерден кейін (420) процессорға, жадқа және дискіге жүктеме әлі де шектен өте алыс болғанына қарамастан, техникалық қолдау көрсетуге негативтер келе бастайды. Шамасы, Янустың ішінде бірдеңе нашарлап бара жатқан сияқты, мүмкін мұнда да кейбір шектеулер бар. Біз эксперимент жасай бастадық, өткізу қабілеттілігінің шегін 300-ден 200 Мбит/с-қа дейін төмендеттік және проблемалар жойылды. Енді біз бірден үш жаңа серверді сатып алдық, бұл төмен лимиттер мен сипаттамалары бар, бұл байланыс сапасының тұрақты жақсаруына әкеледі деп ойлаймыз. Әрине, біз онда не болып жатқанын анықтауға тырыспадық; біздің балдақтарымыз бәрі. Қорғанысымызда, дәл осы сәтте өзекті мәселені әдемі түрде емес, мүмкіндігінше тезірек шешу керек болды делік; Сонымен қатар, Janus біз үшін С тілінде жазылған қара жәшік, оны өңдеу өте қымбат.

Skype-тан WebRTC-ке: веб арқылы бейне байланысты қалай ұйымдастырдық

Бұл процесте біз:

  • серверде де, клиентте де жаңартуға болатын барлық тәуелділіктерді жаңартты (бұл да эксперименттер болды, біз нәтижелерді бақылап отырдық);
  • нақты жағдайларға қатысты барлық анықталған қателерді түзетеді, мысалы, қосылым үзілген және автоматты түрде қалпына келтірілмеген кезде;
  • Біз бейнекоммуникация саласында жұмыс істейтін және біздің мәселелермен таныс компаниялармен көптеген кездесулер өткіздік: ағынды ойындар, вебинарлар ұйымдастыру; біз өзімізге пайдалы болып көрінгеннің бәрін қолданып көрдік;
  • Ең көп шағым түскен мұғалімдердің аппараттық және коммуникациялық сапасына техникалық сараптама жүргізілді.

Эксперимент және кейінгі өзгерістер мұғалімдер арасындағы қарым-қатынасқа қанағаттанбауды 7,1 жылғы қаңтардағы 2018%-дан 2,5 жылғы қаңтардағы 2019%-ға дейін төмендетуге мүмкіндік берді.

Ары қарай не

Vimbox платформасын тұрақтандыру – компанияның 2019 жылға арналған негізгі жобаларының бірі. Біз қарқынды сақтай аламыз және бұдан былай негізгі шағымдарда бейнебайланысты көрмейтінімізге үлкен үміт артамыз. Біз бұл шағымдардың едәуір бөлігі пайдаланушылардың компьютерлері мен интернетіндегі артта қалуға байланысты екенін түсінеміз, бірақ біз бұл бөлігін анықтап, қалғанын шешуіміз керек. Қалғанының бәрі техникалық мәселе, онымен күресу керек сияқты.

Басты қиындық – біз сапаны қай деңгейде жақсартуға болатынын білмейміз. Бұл төбені табу - басты міндет. Сондықтан екі эксперимент жоспарланған:

  1. Janus арқылы бейнені ұрыс жағдайында қарапайым p2p бейнелерімен салыстырыңыз. Бұл эксперимент қазірдің өзінде жүргізілді, біздің шешім мен p2p арасында статистикалық маңызды айырмашылық табылмады;
  2. Тек бейнебайланыс шешімдерінен ақша табатын компаниялардан (қымбат) қызметтерді ұсынып, олардан келеңсіздіктердің санын бармен салыстырайық.

Бұл екі эксперимент бізге қол жеткізуге болатын мақсатты анықтауға және оған назар аударуға мүмкіндік береді.

Сонымен қатар, жүйелі түрде шешілетін бірқатар міндеттер бар:

  • Біз субъективті шолулардың орнына байланыс сапасының техникалық метрикасын жасаймыз;
  • Біз орын алған сәтсіздіктерді дәлірек талдау, олардың қашан және қай жерде орын алғанын және сол сәтте қандай байланыссыз болып көрінетін оқиғалардың орын алғанын түсіну үшін толығырақ сеанс журналдарын жасаймыз;
  • Біз сабақ алдында автоматты қосылым сапасын тексеруді дайындаймыз, сонымен қатар клиентке оның аппараттық құралдары мен арнасынан туындаған теріс әсерлердің мөлшерін азайту үшін қосылымды қолмен тексеруге мүмкіндік береміз;
  • біз нашар жағдайда, айнымалы пакет жоғалтуымен және т.
  • ақауларға төзімділікті арттыру үшін проблемалар туындаған жағдайда серверлердің әрекетін өзгертеміз;
  • Біз пайдаланушыға Skype сияқты оның байланысында бірдеңе дұрыс емес болса, ол мәселенің өз жағында екенін түсінуі үшін ескертеміз.

Сәуір айынан бастап бейнебайланыс бағыты Skyeng ішінде Vimbox-тың бір бөлігі ғана емес, өз өнімімен айналысатын толыққанды бөлек жобаға айналды. Бұл біз адамдарды іздей бастадық дегенді білдіреді толық уақыт режимінде бейнемен жұмыс істеу. Жақсы, әдеттегідей Біз көптеген жақсы адамдарды іздейміз.

Және, әрине, біз бейнекоммуникациялармен жұмыс істейтін адамдармен және компаниялармен белсенді байланыс орнатуды жалғастырамыз. Бізбен тәжірибе алмасқыңыз келсе, біз қуаныштымыз! Пікір қалдырыңыз, хабарласыңыз - біз бәріне жауап береміз.

Ақпарат көзі: www.habr.com