Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Videomuloqot Vimbox platformasida o‘qituvchi va talaba o‘rtasidagi muloqotning asosiy usuli hisoblanadi. Biz Skype-dan uzoq vaqt oldin voz kechdik, bir nechta uchinchi tomon echimlarini sinab ko'rdik va oxir-oqibat WebRTC - Janus-shlyuz kombinatsiyasiga joylashdik. Bir muncha vaqt biz hamma narsadan mamnun edik, lekin baribir ba'zi salbiy tomonlar paydo bo'lishda davom etdi. Natijada alohida video yo'nalish yaratildi.

Men yangi yo‘nalish rahbari Kirill Rogovoydan Skyengdagi videomuloqot evolyutsiyasi, topilgan muammolar, yechimlar va biz oxir-oqibat qo‘llagan tayoqchalar haqida gapirishni so‘radim. Umid qilamizki, maqola veb-ilova orqali mustaqil ravishda video yaratadigan kompaniyalar uchun foydali bo'ladi.

Biroz tarix

2017 yilning yozida Skyeng rivojlanishining rahbari Sergey Safonov Backend Conf-da biz qanday qilib "Skypedan voz kechganimiz va WebRTC-ni amalga oshirganimiz" haqida hikoya qilgan edi. Hohlovchilar nutq yozuvini quyidagi manzilda tomosha qilishlari mumkin aloqa (~ 45 min) va bu erda men uning mohiyatini qisqacha bayon qilaman.

Skyeng maktabi uchun video aloqa har doim o'qituvchi va talaba muloqotining ustuvor usuli bo'lib kelgan. Avvaliga Skype ishlatilgan, ammo u bir qator sabablarga ko'ra, birinchi navbatda, jurnallarning yo'qligi va veb-ilovaga to'g'ridan-to'g'ri integratsiyalashuvning mumkin emasligi tufayli mutlaqo qoniqarli emas edi. Shuning uchun biz har xil tajribalarni o'tkazdik.

Aslida, video aloqa uchun bizning talablarimiz taxminan quyidagicha edi:
- barqarorlik;
— har bir dars uchun arzon narx;
- darslarni yozib olish;
— kim qancha gapirayotganini kuzatish (dars vaqtida o‘quvchilar o‘qituvchidan ko‘ra ko‘proq gapirishlari biz uchun muhim);
— chiziqli masshtablash;
- UDP va TCP dan foydalanish imkoniyati.

Birinchi bo'lib 2013 yilda Tokbox-ni joriy qilish bo'ldi. Hammasi yaxshi edi, lekin bu juda qimmatga tushdi - har bir dars uchun 113 rubl - va daromadni yeb qo'ydi.

Keyin 2015 yilda Voximplant integratsiya qilindi. Mana, kim qancha gapirganini kuzatish uchun zarur bo'lgan funksiya edi va shu bilan birga, yechim ancha arzon edi: agar faqat audio yozib olingan bo'lsa, har bir dars uchun 20 rubl turadi. Biroq, u faqat UDP orqali ishladi va TCP ga o'tolmadi. Biroq, talabalarning taxminan 40% undan foydalanishni tugatdi.

Bir yil o'tgach, bizda o'ziga xos talablarga ega korporativ mijozlar paydo bo'ldi. Masalan, hamma narsa brauzer orqali ishlashi kerak, kompaniya faqat http va https ochadi; ya'ni Skype yoki UDP yo'q. Korporativ mijozlar = pul, shuning uchun ular Tokboxga qaytishdi, lekin narx muammosi yo'qolmadi.

Yechim - WebRTC va Janus

Foydalanishga qaror qildi WebRTC o'rtasidagi video aloqa uchun brauzer platformasi. U ulanishni o'rnatish, oqimlarni kodlash va dekodlash, treklarni sinxronlashtirish va tarmoqdagi nosozliklar bilan ishlash sifatini nazorat qilish uchun javobgardir. O'z navbatida biz kamera va mikrofondan oqimlarni o'qishni, videoni chizishni, ulanishni boshqarishni, WebRTC ulanishini o'rnatishni va unga oqimlarni uzatishni, shuningdek ulanishni o'rnatish uchun mijozlar o'rtasida signalizatsiya xabarlarini uzatishni ta'minlashimiz kerak (WebRTC o'zi faqat ma'lumotlar formati, lekin uning mexanizmi uzatish emas). Agar mijozlar NAT ortida bo'lsa, WebRTC STUN serverlarini ulaydi; agar bu yordam bermasa, serverlarni TURN.

Oddiy p2p ulanishi biz uchun etarli emas, chunki biz shikoyatlar bo'lsa, keyingi tahlil qilish uchun darslarni yozib olishni xohlaymiz. Shuning uchun biz WebRTC oqimlarini rele orqali yuboramiz Meetecho tomonidan Janus Gateway. Natijada, mijozlar bir-birlarining manzillarini bilishmaydi, faqat Janus server manzilini ko'rishadi; u signal serveri funksiyalarini ham bajaradi. Janus bizga kerak bo'lgan ko'plab funktsiyalarga ega: agar mijoz UDP bloklangan bo'lsa, avtomatik ravishda TCP ga o'tadi; UDP va TCP oqimlarini yozib olishi mumkin; kengaytiriladigan; Hatto echo testlari uchun o'rnatilgan plagin ham mavjud. Agar kerak bo'lsa, Twilio'dan STUN va TURN serverlari avtomatik ravishda ulanadi.

2017 yilning yozida bizda ikkita Janus serveri, shuningdek, asosiylarining protsessorlarini egallamaslik uchun yozib olingan audio va video fayllarni qayta ishlash uchun qo'shimcha server ishladi. Ulanishda Janus serverlari toq-juft asosda tanlandi (ulanish raqami). O'sha paytda, bu etarli edi, bizning his-tuyg'ularimizga ko'ra, u taxminan to'rt baravar xavfsizlik chegarasini berdi, amalga oshirish ulushi taxminan 80 edi. Shu bilan birga, narx har bir dars uchun ~ 2 rublgacha kamaydi, shuningdek, ishlab chiqish va qo'llab-quvvatlash.

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Videomuloqot mavzusiga qaytish

Muammolarni o'z vaqtida aniqlash va tuzatish uchun talabalar va o'qituvchilarning fikr-mulohazalarini doimiy ravishda kuzatib boramiz. 2018 yilning yoziga kelib, qo'ng'iroqlar sifati shikoyatlar orasida birinchi o'rinni egalladi. Bu, bir tomondan, boshqa kamchiliklarni ham muvaffaqiyatli bartaraf etganimizni anglatardi. Boshqa tomondan, zudlik bilan biror narsa qilish kerak edi: agar dars buzilgan bo'lsa, biz uning qiymatini yo'qotish xavfi bor, ba'zan keyingi paketni sotib olish xarajatlari bilan birga, va agar kirish darsi buzilgan bo'lsa, biz potentsial mijozni yo'qotish xavfi bor. birgalikda.

O'sha paytda bizning videomuloqotimiz hali ham MVP rejimida edi. Oddiy qilib aytganda, ular uni ishga tushirishdi, u ishladi, ular uni bir marta kengaytirdilar, buni qanday qilishni tushunishdi - yaxshi, ajoyib. Agar u ishlayotgan bo'lsa, uni tuzatmang. Hech kim aloqa sifati masalasiga ataylab murojaat qilmagan. Avgustga kelib, bu davom eta olmasligi aniq bo'ldi va biz WebRTC va Janus bilan nima noto'g'ri ekanligini aniqlash uchun alohida yo'nalishni boshladik.

Kirishda ushbu yo'nalish qabul qilindi: MVP yechimi, ko'rsatkichlar, maqsadlar yo'q, takomillashtirish jarayonlari yo'q, o'qituvchilarning 7 foizi aloqa sifati haqida shikoyat qiladilar (talabalar haqida ham ma'lumot yo'q).

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Yangi yo'nalish davom etmoqda

Buyruq shunday ko'rinadi:

  • Asosiy ishlab chiqaruvchi ham bo'lgan bo'lim boshlig'i.
  • QA o'zgarishlarni sinab ko'rishga yordam beradi, beqaror aloqa sharoitlarini yaratishning yangi usullarini izlaydi va muammolar haqida xabar beradi.
  • Tahlilchi doimiy ravishda texnik ma'lumotlarda turli korrelyatsiyalarni izlaydi, foydalanuvchilarning fikr-mulohazalarini tahlil qilishni yaxshilaydi va tajribalar natijalarini tekshiradi.
  • Mahsulot menejeri tajribalar uchun umumiy yo'nalish va resurslarni taqsimlashda yordam beradi.
  • Ikkinchi ishlab chiquvchi ko'pincha dasturlash va tegishli vazifalarni bajarishda yordam beradi.

Boshlash uchun biz aloqa sifatini baholashdagi o'zgarishlarni (kunlar, haftalar, oylar bo'yicha o'rtacha) kuzatadigan nisbatan ishonchli ko'rsatkichni o'rnatdik. O'sha paytda bu o'qituvchilarning baholari edi, keyinchalik ularga talabalarning baholari qo'shildi. Keyin ular noto'g'ri ishlayotgani haqida farazlar qurishni, uni tuzatishni va dinamikadagi o'zgarishlarni ko'rishni boshladilar. Biz past osilgan mevaga bordik: masalan, vp8 kodekini vp9 bilan almashtirdik, ishlash yaxshilandi. Biz Janus sozlamalari bilan o'ynashga va boshqa tajribalar o'tkazishga harakat qildik - aksariyat hollarda ular hech narsaga olib kelmadi.

Ikkinchi bosqichda gipoteza paydo bo'ldi: WebRTC - bu peer-to-peer yechimi va biz o'rtada serverdan foydalanamiz. Ehtimol, muammo shu erdadir? Biz qazishni boshladik va hozirgacha eng muhim yaxshilanishni topdik.

O'sha paytda hovuzdan server juda ahmoqona algoritm yordamida tanlandi: kanal va quvvatga qarab har birining o'z "og'irligi" bor edi va biz foydalanuvchini eng katta "og'irlik" ga yuborishga harakat qildik. foydalanuvchining geografik joylashgan joyiga e'tibor berish. Natijada, Sankt-Peterburglik o'qituvchi Sibirdan kelgan talaba bilan Sankt-Peterburgdagi Janus serverimiz orqali emas, balki Moskva orqali muloqot qilishi mumkin edi.

Algoritm o'zgartirildi: endi foydalanuvchi bizning platformamizni ochganda, biz undan Ajax yordamida barcha serverlarga pinglarni yig'amiz. Ulanishni o'rnatishda biz eng kichik miqdorga ega bo'lgan bir juft pingni (o'qituvchi-server va talaba-server) tanlaymiz. Kamroq ping serverga kamroq tarmoq masofasini bildiradi; qisqaroq masofa paketlarni yo'qotish ehtimolini kamaytiradi; Paket yo'qolishi video aloqaning eng katta salbiy omilidir. Salbiylikning ulushi uch oy ichida ikki baravar kamaydi (adolat uchun, bu vaqtda boshqa tajribalar ham o'tkazilgan, ammo bu deyarli eng ko'p ta'sir qilgan).

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Yaqinda biz yana bir noaniq, ammo muhim ko'rinadigan narsani topdik: qalin kanaldagi bitta kuchli Janus serveri o'rniga, o'tkazish qobiliyati ingichka bo'lgan ikkita oddiy serverga ega bo'lgan ma'qul. Bu biz bir vaqtning o'zida ko'plab xonalarni (aloqa seanslarini) siqish umidida kuchli mashinalarni sotib olganimizdan keyin aniq bo'ldi. Serverlarda tarmoqli kengligi chegarasi mavjud, biz uni xonalar soniga aniq tarjima qilishimiz mumkin - biz qancha ochilishi mumkinligini bilamiz, masalan, 300 Mbit/s. Serverda juda ko'p xonalar ochilishi bilan biz yuk kamayguncha uni yangi faoliyat uchun tanlashni to'xtatamiz. G'oya shundan iborat ediki, kuchli mashinani sotib olib, biz kanalni maksimal darajada yuklaymiz, natijada u tarmoqli kengligi bilan emas, balki protsessor va xotira bilan cheklanadi. Ammo ma'lum bo'lishicha, ma'lum miqdordagi ochiq xonalar (420) dan so'ng, protsessor, xotira va diskdagi yuk hali ham chegaralardan juda uzoq bo'lishiga qaramay, texnik yordamga salbiylik kela boshlaydi. Ko'rinishidan, Janus ichida nimadir yomonlashmoqda, ehtimol u erda ham ba'zi cheklovlar mavjud. Biz tajriba qilishni boshladik, tarmoqli kengligi chegarasini 300 dan 200 Mbit / s gacha tushirdik va muammolar yo'qoldi. Endi biz bir vaqtning o'zida past chegara va xususiyatlarga ega uchta yangi serverni sotib oldik, bu aloqa sifatining barqaror yaxshilanishiga olib keladi deb o'ylaymiz. Albatta, biz u erda nima bo'layotganini tushunishga harakat qilmadik; bizning tayoqchalarimiz hamma narsadir. Himoyamizda, aytaylik, o'sha paytda dolzarb muammoni iloji boricha tezroq hal qilish kerak edi, uni chiroyli qilish emas; Bundan tashqari, biz uchun Janus - bu C tilida yozilgan qora quti, u bilan ishlash juda qimmat.

Skype dan WebRTC ga: biz internet orqali video aloqani qanday tashkil qilganmiz

Xo'sh, jarayonda biz:

  • serverda ham, mijozda ham yangilanishi mumkin bo'lgan barcha bog'liqliklarni yangiladi (bular ham tajribalar edi, biz natijalarni kuzatdik);
  • muayyan holatlar bilan bog'liq barcha aniqlangan xatolarni tuzatdi, masalan, ulanish uzilib qolgan va avtomatik ravishda tiklanmagan;
  • Biz video kommunikatsiyalar sohasida ishlaydigan va muammolarimiz bilan tanish bo'lgan kompaniyalar bilan ko'plab uchrashuvlar o'tkazdik: o'yinlarni oqimlash, vebinarlar tashkil etish; biz uchun foydali bo'lgan hamma narsani sinab ko'rdik;
  • Eng ko'p shikoyatlar kelib tushgan o'qituvchilarning texnik vositalari va aloqa sifati bo'yicha texnik ko'rik o'tkazildi.

Tajribalar va keyingi o‘zgarishlar o‘qituvchilar o‘rtasidagi muloqotdan norozilikni 7,1 yil yanvaridagi 2018 foizdan 2,5 yil yanvaridagi 2019 foizgacha kamaytirish imkonini berdi.

Keyin nima

Vimbox platformamizni barqarorlashtirish kompaniyaning 2019 yildagi asosiy loyihalaridan biridir. Tezlikni saqlab qolamiz va eng yuqori shikoyatlarda video aloqani ko'rmaymiz degan umiddamiz. Biz ushbu shikoyatlarning muhim qismi foydalanuvchilarning kompyuterlari va Internetdagi kechikishlar bilan bog'liqligini tushunamiz, ammo biz ushbu qismni aniqlab, qolganini hal qilishimiz kerak. Qolgan hamma narsa texnik muammo, biz uni engishimiz kerak.

Asosiy qiyinchilik shundaki, biz sifatni qay darajada oshirish mumkinligini bilmaymiz. Ushbu shiftni aniqlash asosiy vazifadir. Shuning uchun ikkita tajriba rejalashtirilgan:

  1. Janus orqali videoni jangovar sharoitlarda oddiy p2p bilan solishtiring. Bu tajriba allaqachon o'tkazilgan, bizning yechimimiz va p2p o'rtasida statistik jihatdan muhim farq topilmadi;
  2. Keling, faqat video-aloqa echimlari bo'yicha pul ishlab topadigan kompaniyalardan (qimmatbaho) xizmatlarni taqdim qilaylik va ulardan salbiy miqdorini mavjud bilan taqqoslaylik.

Ushbu ikkita tajriba bizga erishish mumkin bo'lgan maqsadni aniqlash va unga e'tibor qaratish imkonini beradi.

Bundan tashqari, muntazam ravishda hal qilinishi mumkin bo'lgan bir qator vazifalar mavjud:

  • Biz sub'ektiv sharhlar o'rniga aloqa sifatining texnik ko'rsatkichini yaratamiz;
  • Biz sodir bo'lgan nosozliklarni aniqroq tahlil qilish, ular qachon va qaerda sodir bo'lganligini va o'sha paytda qanday bog'liq bo'lmagan hodisalar sodir bo'lganligini tushunish uchun batafsilroq sessiya jurnallarini tuzamiz;
  • Biz darsdan oldin avtomatik ulanish sifati testini tayyorlaymiz, shuningdek, mijozga uning apparati va kanalidan kelib chiqadigan salbiy miqdorni kamaytirish uchun ulanishni qo'lda sinab ko'rish imkoniyatini beramiz;
  • biz yomon sharoitlarda, o'zgaruvchan paketlarni yo'qotish va hokazolarda ko'proq video aloqa yuk testlarini ishlab chiqamiz va o'tkazamiz;
  • xatolarga chidamliligini oshirish uchun muammolar yuzaga kelganda serverlarning xatti-harakatlarini o'zgartiramiz;
  • Biz foydalanuvchini Skype singari uning ulanishida biror narsa noto'g'ri bo'lsa, u muammo o'z tomonida ekanligini tushunishi uchun ogohlantiramiz.

Aprel oyidan boshlab video aloqa yo'nalishi Skyeng doirasida Vimbox-ning bir qismi emas, balki o'z mahsuloti bilan shug'ullanadigan to'liq huquqli alohida loyihaga aylandi. Bu biz odamlarni qidira boshlaganimizni anglatadi to'liq vaqt rejimida video bilan ishlash. Xo'sh, har doimgidek Biz juda ko'p yaxshi odamlarni qidiramiz.

Va, albatta, biz video aloqa bilan ishlaydigan odamlar va kompaniyalar bilan faol muloqot qilishni davom ettirmoqdamiz. Agar siz biz bilan tajriba almashmoqchi bo'lsangiz, biz xursand bo'lamiz! Izoh bering, bog'laning - biz hammaga javob beramiz.

Manba: www.habr.com