Datblygu llwyfan fideo mewn 90 diwrnod

Y gwanwyn hwn cawsom ein hunain mewn amodau siriol iawn. Oherwydd y pandemig, daeth yn amlwg bod angen symud ein cynadleddau haf ar-lein. Ac er mwyn eu cynnal ar-lein yn effeithlon, nid oedd datrysiadau meddalwedd parod yn addas i ni; roedd angen i ni ysgrifennu ein rhai ein hunain. Ac roedd gennym ni dri mis i wneud hyn.

Mae'n amlwg ei fod wedi bod yn dri mis cyffrous. Ond o'r tu allan nid yw'n gwbl amlwg: beth yw llwyfan cynadledda ar-lein? Pa rannau y mae'n eu cynnwys? Felly, yng nghynadleddau DevOops yr haf olaf, gofynnais i'r rhai a oedd yn gyfrifol am y dasg hon:

  • Nikolay Molchanov - cyfarwyddwr technegol JUG Ru Group;
  • Mae Vladimir Krasilshchik yn rhaglennydd Java pragmatig sy'n gweithio ar y backend (gallech hefyd weld ei adroddiadau yn ein cynadleddau Java);
  • Artyom Nikonov sy'n gyfrifol am ein holl ffrydio fideo.

Gyda llaw, yn y cynadleddau hydref-gaeaf byddwn yn defnyddio fersiwn well o'r un llwyfan - bydd cymaint o ddarllenwyr habra yn dal i fod yn ddefnyddwyr.

Datblygu llwyfan fideo mewn 90 diwrnod

Llun cyffredinol

— Beth oedd cyfansoddiad y tîm?

Nikolay Molchanov: Mae gennym ni ddadansoddwr, dylunydd, profwr, tri blaenwr, a phen ôl. Ac, wrth gwrs, arbenigwr siâp T!

— Sut olwg oedd ar y broses yn gyffredinol?

Nikolay: Hyd at ganol mis Mawrth, nid oedd gennym unrhyw beth yn barod ar gyfer ar-lein o gwbl. Ac ar Fawrth 15, dechreuodd y carwsél ar-lein cyfan droelli. Fe wnaethom sefydlu sawl ystorfa, cynllunio, trafod y bensaernïaeth sylfaenol a gwneud popeth mewn tri mis.

Aeth hyn, wrth gwrs, trwy'r camau clasurol o gynllunio, pensaernïaeth, dewis nodweddion, pleidleisio dros y nodweddion hynny, polisi ar gyfer y nodweddion hynny, eu dyluniad, eu datblygiad, eu profi. O ganlyniad, ar 6 Mehefin, fe wnaethom gyflwyno popeth i gynhyrchu. TechTrain. Roedd yna 90 diwrnod i bopeth.

— A wnaethom lwyddo i gyflawni'r hyn yr ymrwymwyd iddo?

Nikolay: Gan ein bod bellach yn cymryd rhan yng nghynhadledd DevOops ar-lein, mae'n golygu ei fod wedi gweithio. Ymrwymais yn bersonol i'r prif beth: byddaf yn dod ag offeryn i gwsmeriaid y gallant wneud cynhadledd ar-lein ag ef.

Yr her oedd hyn: rhowch arf i ni allu darlledu ein cynadleddau i ddeiliaid tocynnau.

Rhannwyd yr holl gynllunio yn sawl cam, a rhannwyd yr holl nodweddion (tua 30 byd-eang) yn 4 categori:

  • y byddwn yn bendant yn ei wneud (ni allwn fyw hebddynt),
  • yr hyn a wnawn yn ail,
  • na fyddwn byth yn ei wneud,
  • ac na wnawn byth, byth.

Gwnaethom yr holl nodweddion o'r ddau gategori cyntaf.

— Gwn fod cyfanswm o 600 o faterion JIRA wedi’u creu. Mewn tri mis, gwnaethoch 13 microwasanaeth, ac yr wyf yn amau ​​​​eu bod wedi'u hysgrifennu nid yn unig yn Java. Fe wnaethoch chi ddefnyddio gwahanol dechnolegau, mae gennych chi ddau glwstwr Kubernetes mewn tri pharth argaeledd a 5 ffrwd RTMP yn Amazon.

Gadewch i ni nawr edrych ar bob cydran o'r system ar wahân.

Ffrydio

— Gadewch i ni ddechrau pan fydd gennym ddelwedd fideo eisoes, ac mae'n cael ei throsglwyddo i rai gwasanaethau. Artyom, dywedwch wrthym sut mae'r ffrydio hwn yn digwydd?

Artyom Nikonov: Mae ein cynllun cyffredinol yn edrych fel hyn: delwedd o'r camera -> ein hystafell reoli -> gweinydd RTMP lleol -> Amazon -> chwaraewr fideo. Mwy o fanylion wedi ysgrifennu amdano ar Habré ym mis Mehefin.

Yn gyffredinol, mae dwy ffordd fyd-eang o wneud hyn: naill ai ar galedwedd neu'n seiliedig ar atebion meddalwedd. Fe wnaethom ddewis y llwybr meddalwedd oherwydd ei fod yn haws yn achos siaradwyr anghysbell. Nid yw bob amser yn bosibl dod â chaledwedd i siaradwr mewn gwlad arall, ond mae cyflwyno meddalwedd i'r siaradwr yn ymddangos yn haws ac yn fwy dibynadwy.

O safbwynt caledwedd, mae gennym nifer benodol o gamerâu (yn ein stiwdios ac mewn siaradwyr anghysbell), nifer benodol o reolaethau anghysbell yn y stiwdio, y mae'n rhaid eu hatgyweirio weithiau o dan y bwrdd yn ystod y darllediad.

Mae signalau o'r dyfeisiau hyn yn mynd i mewn i gyfrifiaduron gyda chardiau dal, cardiau mewnbwn/allbwn, a chardiau sain. Yno mae'r signalau'n cael eu cymysgu a'u cydosod i mewn i gynlluniau:

Datblygu llwyfan fideo mewn 90 diwrnod
Enghraifft o gynllun ar gyfer 4 siaradwr

Datblygu llwyfan fideo mewn 90 diwrnod
Enghraifft o gynllun ar gyfer 4 siaradwr

Ymhellach, darperir darlledu parhaus gyda chymorth tri chyfrifiadur: mae un prif beiriant a phâr o rai gweithio yn eu tro. Mae'r cyfrifiadur cyntaf yn casglu'r adroddiad cyntaf, yr ail - yr egwyl, y cyntaf - yr adroddiad nesaf, yr ail - yr egwyl nesaf, ac yn y blaen. Ac mae'r prif beiriant yn cymysgu'r cyntaf gyda'r ail.

Mae hyn yn creu math o driongl, ac os bydd unrhyw un o'r nodau hyn yn methu, gallwn yn gyflym a heb golli ansawdd barhau i gyflwyno cynnwys i gleientiaid. Roedd gennym ni sefyllfa o'r fath. Yn ystod wythnos gyntaf y cynadleddau, fe wnaethom osod un peiriant a'i droi ymlaen / i ffwrdd. Mae'n ymddangos bod pobl yn hapus â'n gwytnwch.

Nesaf, mae'r ffrydiau o'r cyfrifiaduron yn mynd i weinydd lleol, sydd â dwy dasg: llwybr ffrydiau RTMP a chofnodi copïau wrth gefn. Felly mae gennym sawl pwynt cofnodi. Yna anfonir y ffrydiau fideo i'r rhan o'n system a adeiladwyd ar wasanaethau Amazon SaaS. Rydym yn defnyddio MediaLive:,S3,CloudFront.

Nikolay: Beth sy'n digwydd yno cyn i'r fideo gyrraedd y gynulleidfa? Mae'n rhaid i chi ei dorri rywsut, iawn?

Artyom: Rydyn ni'n cywasgu'r fideo ar ein rhan ni ac yn ei anfon i MediaLive. Rydyn ni'n lansio trawsgodwyr yno. Maent yn trawsgodio fideos mewn amser real i sawl penderfyniad fel y gall pobl eu gwylio ar eu ffonau, trwy Rhyngrwyd gwael yn y wlad, ac ati. Yna mae'r ffrydiau hyn yn cael eu torri i mewn talpiau, dyma sut mae'r protocol yn gweithio HLS. Rydym yn anfon rhestr chwarae i'r blaen sy'n cynnwys awgrymiadau i'r talpiau hyn.

— A ydym yn defnyddio datrysiad 1080p?

Artyom: Mae lled ein fideo yr un fath â 1080p - 1920 picsel, ac mae'r uchder ychydig yn llai, mae'r llun yn fwy hirfaith - mae yna resymau am hyn.

Chwaraewr

- Disgrifiodd Artyom sut mae'r fideo yn mynd i mewn i ffrydiau, sut mae'n cael ei ddosbarthu i wahanol restrau chwarae ar gyfer gwahanol gydraniad sgrin, ei dorri'n dalpiau a mynd i mewn i'r chwaraewr. Kolya, nawr dywedwch wrthyf pa fath o chwaraewr yw hwn, sut mae'n defnyddio'r nant, pam HLS?

Nikolay: Mae gennym chwaraewr y gall holl wylwyr y gynhadledd ei wylio.

Datblygu llwyfan fideo mewn 90 diwrnod

Yn y bôn, mae hwn yn ddeunydd lapio o amgylch y llyfrgell hls.js, ar yr hwn y mae llawer o chwareuwyr eraill wedi eu hysgrifenu. Ond roedd angen ymarferoldeb penodol iawn arnom: ailddirwyn a marcio'r man lle mae'r person, pa adroddiad y mae'n ei wylio ar hyn o bryd. Roedd angen ein cynlluniau ein hunain arnom hefyd, pob math o logos a phopeth arall a oedd wedi'i gynnwys gyda ni. Felly, penderfynom ysgrifennu ein llyfrgell ein hunain (lapiwr dros HLS) a'i ymgorffori ar y wefan.

Dyma'r swyddogaeth gwraidd, felly fe'i gweithredwyd bron yn gyntaf. Ac yna tyfodd popeth o'i gwmpas.

Mewn gwirionedd, trwy awdurdodiad, mae'r chwaraewr yn derbyn o'r backend restr chwarae gyda dolenni i ddarnau sy'n cyfateb ag amser ac ansawdd, yn lawrlwytho'r rhai angenrheidiol ac yn eu dangos i'r defnyddiwr, gan berfformio rhywfaint o “hud” ar hyd y ffordd.

Datblygu llwyfan fideo mewn 90 diwrnod
Enghraifft o linell amser

- Mae botwm wedi'i gynnwys yn y chwaraewr i ddangos llinell amser o'r holl adroddiadau ...

Nikolay: Do, fe wnaethom ddatrys problem llywio defnyddwyr ar unwaith. Ganol mis Ebrill, fe benderfynon ni na fydden ni’n darlledu pob un o’n cynadleddau ar wefan ar wahân, ond yn cyfuno popeth ar un. Er mwyn i ddefnyddwyr tocynnau Tocyn Llawn allu newid yn rhydd rhwng gwahanol gynadleddau: darllediadau byw a recordiadau o rai o'r gorffennol.

Ac i’w gwneud hi’n haws i ddefnyddwyr lywio’r ffrwd gyfredol a newid rhwng traciau, fe benderfynon ni wneud botwm “Darllediad cyfan” a chardiau adrodd llorweddol ar gyfer newid rhwng traciau ac adroddiadau. Mae rheolaeth bysellfwrdd.

— A oedd unrhyw anawsterau technegol gyda hyn?

Nikolay: Roedd ganddyn nhw far sgrolio lle roedd mannau cychwyn gwahanol adroddiadau wedi'u marcio.

— Yn y diwedd, a wnaethoch chi weithredu'r marciau hyn ar y bar sgrolio cyn i YouTube wneud rhywbeth tebyg?

Artyom: Roedden nhw mewn beta bryd hynny. Mae'n ymddangos bod hon yn nodwedd eithaf cymhleth oherwydd maen nhw wedi bod yn ei brofi'n rhannol gyda defnyddwyr dros y flwyddyn ddiwethaf. Ac yn awr mae wedi cyrraedd gwerthiant.

Nikolay: Ond mewn gwirionedd fe wnaethon ni ei gael ar werth yn gyflymach. Yn onest, y tu ôl i'r nodwedd syml hon mae llawer iawn o backend, frontend, cyfrifiadau a mathemateg y tu mewn i'r chwaraewr.

Pen blaen

— Gadewch i ni ddarganfod sut mae'r cynnwys hwn rydyn ni'n ei ddangos (cerdyn lleferydd, siaradwyr, gwefan, amserlen) yn cyrraedd y pen blaen?

Vladimir Krasilshchik: Mae gennym nifer o systemau TG mewnol. Mae system ar gyfer cofnodi pob adroddiad a phob siaradwr. Mae yna broses lle mae siaradwr yn cymryd rhan mewn cynhadledd. Mae'r siaradwr yn cyflwyno cais, mae'r system yn ei ddal, yna mae yna biblinell benodol y mae'r adroddiad yn cael ei greu yn unol â hi.

Datblygu llwyfan fideo mewn 90 diwrnod
Dyma sut mae'r siaradwr yn gweld y biblinell

Y system hon yw ein datblygiad mewnol.

Nesaf, mae angen i chi adeiladu amserlen o adroddiadau unigol. Fel y gwyddoch, mae hon yn broblem NP-galed, ond rydym yn ei datrys rywsut. I wneud hyn, rydym yn lansio cydran arall sy'n cynhyrchu amserlen ac yn ei uwchlwytho i'r gwasanaeth cwmwl trydydd parti Contentful. Yno, mae popeth yn edrych fel bwrdd lle mae dyddiau'r gynhadledd, yn y dyddiau mae slotiau amser, ac yn y slotiau mae adroddiadau, egwyliau neu weithgareddau noddi. Felly mae'r cynnwys a welwn wedi'i leoli mewn gwasanaeth trydydd parti. A'r dasg yw ei gyfleu i'r safle.

Mae'n ymddangos mai dim ond tudalen gyda chwaraewr yw'r wefan, ac nid oes dim byd cymhleth yma. Ac eithrio nid ydyw. Mae'r ôl-wyneb y tu ôl i'r dudalen hon yn mynd i Contentful, yn cael yr amserlen oddi yno, yn cynhyrchu rhai gwrthrychau ac yn ei hanfon i'r blaen. Gan ddefnyddio cysylltiad websocket, y mae pob cleient o'n platfform yn ei wneud, rydyn ni'n anfon diweddariad iddo i'r amserlen o'r pen ôl i'r blaen.

Achos go iawn: newidiodd y siaradwr swydd yn iawn yn ystod y gynhadledd. Mae angen inni newid ei fathodyn cwmni cyflogwr. Sut mae hyn yn digwydd o'r cefndir? Anfonir diweddariad at yr holl gleientiaid trwy'r soced we, ac yna mae'r frontend ei hun yn ail-lunio'r llinell amser. Mae hyn i gyd yn digwydd yn ddi-dor. Mae'r cyfuniad o'r gwasanaeth cwmwl a nifer o'n cydrannau yn rhoi'r cyfle i ni gynhyrchu'r holl gynnwys hwn a'i ddarparu i'r blaen.

Nikolay: Mae'n bwysig egluro yma nad yw ein gwefan yn gymhwysiad AGA clasurol. Mae hon yn wefan wedi'i rendro ac yn seiliedig ar gynllun ac yn SPA. Mae Google mewn gwirionedd yn gweld y wefan hon fel HTML wedi'i rendro. Mae hyn yn dda ar gyfer SEO ac ar gyfer cyflwyno cynnwys i'r defnyddiwr. Nid yw'n aros i 1,5 megabeit o JavaScript lwytho cyn gweld y dudalen, mae'n gweld y dudalen sydd eisoes wedi'i rendro ar unwaith, ac rydych chi'n ei deimlo bob tro y byddwch chi'n newid yr adroddiad. Mae popeth yn digwydd mewn hanner eiliad, gan fod y cynnwys eisoes yn barod ac wedi'i bostio yn y lle iawn.

- Gadewch i ni dynnu llinell o dan bob un o'r uchod trwy restru'r technolegau. Dywedodd Tyoma fod gennym 5 ffrwd Amazon, ac rydym yn darparu fideo a sain yno. Mae gennym ni sgriptiau bash yno, rydyn ni'n eu defnyddio i lansio a ffurfweddu ...

Artyom: Mae hyn yn digwydd trwy API AWS, mae yna lawer mwy o wasanaethau ochr technegol yno. Rhannwyd ein cyfrifoldebau fel fy mod yn cyflawni Ffrynt Cwmwl, ac mae datblygwyr pen blaen a phen ôl yn ei gymryd oddi yno. Mae gennym nifer o'n rhwymiadau ein hunain i symleiddio cynllun y cynnwys, yr ydym wedyn yn ei wneud mewn 4K, ac ati. Gan fod y terfynau amser yn dynn iawn, fe wnaethom ni bron yn gyfan gwbl ar AWS.

— Yna mae hyn i gyd yn mynd i mewn i'r chwaraewr gan ddefnyddio'r system backend. Mae gennym TypeScript, React, Next.JS yn ein chwaraewr. Ac ar y backend mae gennym nifer o wasanaethau yn C#, Java, Spring Boot a Node.js. Mae hyn i gyd yn cael ei ddefnyddio gan ddefnyddio Kubernetes gan ddefnyddio seilwaith Yandex.Cloud.

Rwyf hefyd am nodi, pan oedd angen i mi ddod yn gyfarwydd â'r platfform, ei fod yn hawdd: mae'r holl ystorfeydd ar GitLab, mae popeth wedi'i enwi'n dda, mae profion wedi'u hysgrifennu, mae dogfennaeth. Hynny yw, hyd yn oed yn y modd brys, fe wnaethant ofalu am bethau o'r fath.

Cyfyngiadau Busnes a Dadansoddeg

— Fe wnaethom dargedu 10 o ddefnyddwyr yn seiliedig ar ofynion busnes. Mae’n bryd siarad am y cyfyngiadau busnes a oedd gennym. Roedd yn rhaid i ni sicrhau llwyth gwaith uchel, sicrhau cydymffurfiaeth â'r gyfraith ar gadw data personol. A beth arall?

Nikolay: I ddechrau, rydym yn dechrau o ofynion fideo. Y peth pwysicaf yw storio fideo wedi'i ddosbarthu ledled y byd i'w ddosbarthu'n gyflym i'r cleient. Mae eraill yn cynnwys datrysiad 1080p, yn ogystal ag ailddirwyn, nad yw llawer o rai eraill yn ei weithredu yn y modd byw. Yn ddiweddarach fe wnaethom ychwanegu'r gallu i alluogi cyflymder 2x, gyda'i help gallwch chi “ddal i fyny” gyda'r byw a pharhau i wylio'r gynhadledd mewn amser real. Ac ar hyd y ffordd, ymddangosodd ymarferoldeb marcio llinell amser. Hefyd, roedd yn rhaid i ni fod yn oddefgar o ddiffygion a gwrthsefyll y llwyth o 10 o gysylltiadau. O safbwynt cefn, mae hyn tua 000 o gysylltiadau wedi'u lluosi ag 10 cais am adnewyddu pob tudalen. Ac mae hyn eisoes yn 000 RPS yr eiliad. Cryn dipyn o.

— A oedd unrhyw ofynion eraill am “arddangosfa rithwir” gyda stondinau ar-lein o bartneriaid?

Nikolay: Oedd, roedd yn rhaid gwneud hyn yn eithaf cyflym ac yn gyffredinol. Roedd gennym ni hyd at 10 cwmni partner ar gyfer pob cynhadledd, ac roedd yn rhaid cwblhau pob un ohonynt mewn wythnos neu ddwy. Fodd bynnag, mae eu cynnwys ychydig yn wahanol o ran fformat. Ond gwnaed peiriant templed penodol sy'n cydosod y tudalennau hyn ar y hedfan, heb fawr ddim cyfranogiad datblygiad pellach.

— Roedd gofynion hefyd ar gyfer dadansoddi safbwyntiau ac ystadegau amser real. Gwn ein bod yn defnyddio Prometheus ar gyfer hyn, ond dywedwch wrthym yn fanylach: pa ofynion yr ydym yn eu bodloni ar gyfer dadansoddeg, a sut y caiff hyn ei roi ar waith?

Nikolay: I ddechrau, mae gennym ofynion marchnata ar gyfer casglu ar gyfer profion A/B a chasglu gwybodaeth er mwyn deall sut i gyflwyno'r cynnwys gorau yn iawn i'r cleient yn y dyfodol. Mae gofynion hefyd ar gyfer rhywfaint o ddadansoddeg ar weithgareddau partner a'r dadansoddeg a welwch (cownter ymweld). Cesglir yr holl wybodaeth mewn amser real.

Gallwn ddarparu'r wybodaeth hon ar ffurf agregedig hyd yn oed i siaradwyr: faint o bobl oedd yn eich gwylio ar adeg benodol. Ar yr un pryd, i gydymffurfio â Chyfraith Ffederal 152, nid yw eich cyfrif personol a'ch data personol yn cael eu holrhain mewn unrhyw ffordd.

Mae gan y platfform offer marchnata eisoes a'n metrigau ar gyfer mesur gweithgaredd defnyddwyr mewn amser real (pwy a wyliodd pa eiliad o'r adroddiad) er mwyn adeiladu graffiau presenoldeb yn yr adroddiadau. Yn seiliedig ar y data hwn, mae ymchwil yn cael ei wneud a fydd yn gwneud y cynadleddau nesaf yn well.

Twyll

— A oes gennym fecanweithiau gwrth-dwyll?

Nikolay: Oherwydd yr amserlen dynn o safbwynt busnes, ni osodwyd y dasg i ddechrau i rwystro cysylltiadau diangen ar unwaith. Pe bai dau ddefnyddiwr wedi mewngofnodi o dan yr un cyfrif, gallent weld y cynnwys. Ond gwyddom faint o safbwyntiau cydamserol oedd o un cyfrif. Ac fe wnaethom wahardd sawl troseddwr arbennig o faleisus.

Vladimir: Er clod iddo, roedd un o'r defnyddwyr gwaharddedig yn deall pam y digwyddodd hyn. Daeth, ymddiheurodd ac addawodd brynu tocyn.

— Er mwyn i hyn i gyd ddigwydd, rhaid i chi olrhain pob defnyddiwr yn llwyr o'r mynediad i'r allanfa, bob amser yn gwybod beth maen nhw'n ei wneud. Sut mae'r system hon yn gweithio?

Vladimir: Hoffwn siarad am ddadansoddeg ac ystadegau, y byddwn wedyn yn eu dadansoddi ar gyfer llwyddiant yr adroddiad neu y gallwn wedyn eu darparu i bartneriaid. Mae pob cleient wedi'i gysylltu trwy gysylltiad websocket â chlwstwr ôl-wyneb penodol. Mae'n sefyll yno gollen. Mae pob cleient ar bob cyfnod amser yn anfon yr hyn y mae'n ei wneud a pha drac y mae'n ei wylio. Yna caiff y wybodaeth hon ei hagregu gan ddefnyddio swyddi Hazelcast cyflym a'i hanfon yn ôl at bawb sy'n gwylio'r traciau hyn. Gwelwn yn y gornel faint o bobl sydd gyda ni nawr.

Datblygu llwyfan fideo mewn 90 diwrnod

Mae'r un wybodaeth yn cael ei storio yn Mongo ac yn mynd i'n llyn data, y mae gennym gyfle i adeiladu graff mwy diddorol ohono. Mae'r cwestiwn yn codi: faint o ddefnyddwyr unigryw a edrychodd ar yr adroddiad hwn? Awn i postgres, mae pings o'r holl bobl a ddaeth trwy id yr adroddiad hwn. Fe wnaethom gasglu, agregu rhai unigryw, a nawr gallwn ddeall.

Nikolay: Ond ar yr un pryd, rydym hefyd yn derbyn data amser real gan Prometheus. Mae wedi'i osod yn erbyn holl wasanaethau Kubernetes, yn erbyn Kubernetes ei hun. Mae'n casglu popeth, a gyda Grafana gallwn adeiladu unrhyw graffiau mewn amser real.

Vladimir: Ar y naill law, rydym yn lawrlwytho hwn ar gyfer prosesu OLAP pellach. Ac ar gyfer OLTP, mae'r cymhwysiad yn lawrlwytho'r holl beth i Prometheus, Grafana ac mae'r graffiau hyd yn oed yn cydgyfeirio!

- Dyma'r achos pan fydd y graffiau'n cydgyfarfod.

Newidiadau Dynamig

— Dywedwch wrthym sut mae newidiadau deinamig yn cael eu cyflwyno: os cafodd yr adroddiad ei ganslo 6 munud cyn y dechrau, beth yw'r gadwyn o gamau gweithredu? Pa biblinell sy'n gweithio?

Vladimir: Mae'r biblinell yn amodol iawn. Mae yna nifer o bosibiliadau. Y cyntaf yw bod y rhaglen cynhyrchu amserlen wedi gweithio a newid yr amserlen. Mae'r amserlen wedi'i haddasu yn cael ei huwchlwytho i Contentful. Ar ôl hynny mae'r backend yn deall bod newidiadau i'r gynhadledd hon yn Contentful, yn ei gymryd a'i ailadeiladu. Mae popeth yn cael ei gasglu a'i anfon trwy websocket.

Yr ail bosibilrwydd, pan fydd popeth yn digwydd yn gyflym: mae'r golygydd â llaw yn newid y wybodaeth yn Contentful (dolen i Telegram, cyflwyniad siaradwr, ac ati) ac mae'r un rhesymeg yn gweithio â'r tro cyntaf.

Nikolay: Mae popeth yn digwydd heb adnewyddu'r dudalen. Mae pob newid yn digwydd yn hollol ddi-dor i'r cleient. Mae'r un peth yn wir am newid adroddiadau. Pan ddaw'r amser, mae'r adroddiad a'r rhyngwyneb yn newid.

Vladimir: Hefyd, mae toriadau amser ar gyfer dechrau adroddiadau yn y llinell amser. Ar y cychwyn cyntaf nid oes dim. Ac os ydych chi'n hofran eich llygoden dros y streipen goch, yna ar ryw adeg, diolch i'r cyfarwyddwr darlledu, bydd toriadau yn ymddangos. Mae'r cyfarwyddwr yn gosod cychwyn cywir y darllediad, mae'r backend yn codi'r newid hwn, yn cyfrifo amseroedd cychwyn a gorffen cyflwyniadau'r trac cyfan yn unol ag amserlen y gynhadledd, yn ei anfon at ein cleientiaid, ac mae'r chwaraewr yn tynnu toriadau. Nawr gall y defnyddiwr lywio'n hawdd i ddechrau a diwedd yr adroddiad. Roedd yn ofyniad busnes llym, yn gyfleus iawn ac yn ddefnyddiol. Nid ydych yn gwastraffu amser yn dod o hyd i'r amser cychwyn gwirioneddol ar gyfer yr adroddiad. A phan fyddwn yn gwneud rhagolwg, bydd yn hollol wych.

Defnydd

—Hoffwn ofyn am leoli. Treuliodd Kolya a'r tîm lawer o amser ar y dechrau i sefydlu'r seilwaith cyfan lle mae popeth yn datblygu i ni. Dywedwch wrthyf, o beth mae'r cyfan wedi'i wneud?

Nikolay: O safbwynt technegol, i ddechrau roedd yn ofynnol i ni i'r cynnyrch fod mor haniaethol â phosibl gan unrhyw werthwr. Dewch i AWS i wneud sgriptiau Terraform yn benodol o AWS, neu'n benodol o Yandex, neu o Azure, ac ati. ddim yn ffitio mewn gwirionedd. Roedd yn rhaid i ni symud i rywle rywbryd.

Am y tair wythnos gyntaf roeddem yn gyson yn chwilio am ffordd o wneud hyn yn well. O ganlyniad, daethom i'r casgliad mai Kubernetes yn yr achos hwn yw ein popeth, oherwydd mae'n caniatáu inni greu gwasanaethau graddio'n awtomatig, cyflwyno'n awtomatig, a chael bron pob gwasanaeth allan o'r bocs. Yn naturiol, roedd yn rhaid i bob gwasanaeth gael ei hyfforddi i weithio gyda Kubernetes, Docker, ac roedd yn rhaid i'r tîm ddysgu hefyd.

Mae gennym ddau glwstwr. Prawf a chynhyrchu. Maent yn union yr un fath o ran caledwedd a gosodiadau. Rydym yn gweithredu seilwaith fel cod. Mae pob gwasanaeth yn cael ei gyflwyno'n awtomatig i dri amgylchedd o ganghennau nodwedd, prif ganghennau, canghennau prawf, a GitLab gan ddefnyddio piblinell awtomatig. Mae hyn wedi'i integreiddio i'r eithaf i GitLab, wedi'i integreiddio i'r eithaf ag Elastic, Prometheus.

Rydyn ni'n cael y cyfle i gyflwyno newidiadau i unrhyw amgylchedd yn gyflym (ar gyfer y backend o fewn 10 munud, ar gyfer y blaen o fewn 5 munud) gyda'r holl brofion, integreiddiadau, rhedeg profion swyddogaethol, profion integreiddio ar yr amgylchedd, a hefyd profi gyda phrofion llwyth ymlaen amgylchedd prawf tua'r un peth ag yr ydym am ei gael wrth gynhyrchu.

Ynglŷn â phrofion

- Rydych chi'n profi bron popeth, mae'n anodd credu sut y gwnaethoch chi ysgrifennu popeth. A allwch chi ddweud wrthym am y profion backend: faint mae popeth wedi'i gynnwys, pa brofion?

Vladimir: Mae dau fath o brawf wedi'u hysgrifennu. Y cyntaf yw profion cydran. Profion lefel lifft o'r cais gwanwyn cyfan a sylfaen i mewn Cynwysyddion prawf. Mae hwn yn brawf o'r senarios busnes lefel uchaf. Dydw i ddim yn profi swyddogaethau. Dim ond rhai pethau mawr rydyn ni'n eu profi. Er enghraifft, yn union yn y prawf, mae'r broses o fewngofnodi i ddefnyddiwr yn cael ei efelychu, cais y defnyddiwr am docynnau i ble y gall fynd, a chais am fynediad i wylio'r nant. Senarios defnyddiwr clir iawn.

Mae tua'r un peth yn cael ei weithredu yn y profion integreiddio hyn a elwir, sydd mewn gwirionedd yn rhedeg ar yr amgylchedd. Mewn gwirionedd, pan fydd y defnydd nesaf o gynhyrchu yn cael ei gyflwyno, mae senarios sylfaenol go iawn hefyd yn rhedeg wrth gynhyrchu. Yr un mewngofnodi, gofyn am docynnau, gofyn am fynediad i CloudFront, gwirio bod y ffrwd yn cysylltu â'm caniatâd mewn gwirionedd, gan wirio rhyngwyneb y cyfarwyddwr.

Ar hyn o bryd mae gen i tua 70 o brofion cydran a thua 40 o brofion integreiddio ar fwrdd y llong. Mae'r cwmpas yn agos iawn at 95%. Mae hyn ar gyfer cydrannau, llai ar gyfer rhai integreiddio, yn syml, nid oes cymaint o angen. O ystyried bod y prosiect yn cynnwys pob math o gynhyrchu cod, mae hwn yn ddangosydd da iawn. Nid oedd unrhyw ffordd arall i wneud yr hyn a wnaethom mewn tri mis. Oherwydd pe baem yn profi â llaw, gan roi nodweddion i'n profwr, a byddai hi'n dod o hyd i chwilod ac yn eu dychwelyd atom i gael atebion, yna byddai'r daith gron hon i ddadfygio'r cod yn hir iawn, ac ni fyddem yn cwrdd ag unrhyw derfynau amser.

Nikolay: Yn gonfensiynol, i gyflawni atchweliad ar y platfform cyfan wrth newid rhywfaint o swyddogaeth, mae angen i chi eistedd a phrocio ym mhobman am ddau ddiwrnod.

Vladimir: Felly, mae'n llwyddiant mawr pan fyddaf yn amcangyfrif nodwedd, rwy'n dweud bod angen 4 diwrnod arnaf ar gyfer dau beiro syml ac 1 websocket, mae Kolya yn ei ganiatáu. Mae eisoes yn gyfarwydd â'r ffaith bod y 4 diwrnod hyn yn cynnwys 2 fath o brawf, ac yna, yn fwyaf tebygol, bydd yn gweithio.

Nikolay: Mae gen i hefyd 140 o brofion ysgrifenedig: cydran + swyddogaethol, sy'n gwneud yr un peth. Mae'r un senarios i gyd yn cael eu profi wrth gynhyrchu, mewn prawf, ac wrth gynhyrchu. Fe wnaethom hefyd ychwanegu profion rhyngwyneb defnyddiwr sylfaenol swyddogaethol yn ddiweddar. Fel hyn rydym yn ymdrin â'r swyddogaethau mwyaf sylfaenol a all ddisgyn yn ddarnau.

Vladimir: Wrth gwrs, mae'n werth siarad am brofion llwyth. Roedd angen profi'r platfform o dan lwyth yn agos at yr un go iawn er mwyn deall sut mae popeth, beth sy'n digwydd gyda Chwningen, beth sy'n digwydd gyda'r JVMs, faint o gof sydd ei angen mewn gwirionedd.

— Nid wyf yn gwybod yn sicr a ydym yn profi unrhyw beth ar ochr y nant, ond cofiaf fod problemau gyda thrawsgodwyr pan wnaethom gyfarfodydd. Ydyn ni wedi profi'r ffrydiau?

Artyom: Wedi'i brofi'n ailadroddol. Trefnu cyfarfodydd. Yn y broses o drefnu cyfarfodydd, roedd tua 2300 o docynnau JIRA. Dim ond pethau generig yw'r rhain a wnaeth pobl i wneud cyfarfodydd. Aethom â rhannau o'r platfform i dudalen ar wahân ar gyfer cyfarfodydd, a oedd yn cael ei redeg gan Kirill Tolkachev (siaradkv).

A dweud y gwir, nid oedd unrhyw broblemau mawr. Yn llythrennol cwpl o weithiau fe wnaethon ni ddal bygiau caching ar CloudFront, fe wnaethon ni ei ddatrys yn eithaf cyflym - yn syml fe wnaethon ni ail-gyflunio'r polisïau. Roedd llawer mwy o fygiau mewn pobl, yn y systemau ffrydio ar y wefan.

Yn ystod y cynadleddau, bu'n rhaid i mi ysgrifennu sawl allforiwr arall er mwyn cwmpasu mwy o offer a gwasanaethau. Mewn rhai mannau roedd yn rhaid i mi wneud fy meiciau fy hun dim ond er mwyn metrigau. Nid yw byd caledwedd AV (sain-fideo) yn rosy iawn - mae gennych chi ryw fath o “API” o offer na allwch chi ddylanwadu arno. Ac mae'n bell o fod yn ffaith y byddwch chi'n gallu cael y wybodaeth sydd ei hangen arnoch chi. Mae gwerthwyr caledwedd yn araf iawn, ac mae bron yn amhosibl cael yr hyn rydych chi ei eisiau ganddyn nhw. At ei gilydd mae yna fwy na 100 o ddarnau o galedwedd, nid ydyn nhw'n rhoi'r hyn sydd ei angen arnoch chi yn ôl, ac rydych chi'n ysgrifennu allforwyr rhyfedd a segur, y gallwch chi o leiaf ddadfygio'r system rywsut oherwydd hynny.

Offer

— Rwy'n cofio sut y bu i ni brynu offer ychwanegol yn rhannol cyn dechrau'r cynadleddau.

Artyom: Fe brynon ni gyfrifiaduron, gliniaduron a phecynnau batri. Ar hyn o bryd gallwn fyw heb drydan am 40 munud. Ym mis Mehefin bu stormydd mellt a tharanau difrifol yn St Petersburg - felly cawsom blacowt o'r fath. Ar yr un pryd, mae sawl darparwr yn dod atom gyda chysylltiadau optegol o wahanol bwyntiau. Mae hyn mewn gwirionedd yn 40 munud o amser segur adeiladu, yn ystod y bydd gennym oleuadau ymlaen, sain, camerâu, ac ati yn gweithio.

— Mae gennym stori debyg gyda'r Rhyngrwyd. Yn y swyddfa lle mae ein stiwdios, fe lusgasom rwyd ffyrnig rhwng y lloriau.

Artyom: Mae gennym ni 20 Gbit o ffibr rhwng lloriau. Ymhellach ar hyd y lloriau, rhywle mae opteg, rhywle does dim opteg, ond yn dal i fod llai o sianeli na rhai gigabit - rydyn ni'n rhedeg fideo arnyn nhw rhwng traciau'r gynhadledd. Yn gyffredinol, mae'n gyfleus iawn gweithio ar eich seilwaith eich hun; anaml y gallwch chi wneud hyn mewn cynadleddau all-lein ar safleoedd.

— Cyn i mi weithio yn JUG Ru Group, gwelais sut roedd ystafelloedd caledwedd mewn cynadleddau all-lein wedi'u sefydlu dros nos, lle roedd monitor mawr gyda'r holl fetrigau rydych chi'n eu hadeiladu yn Grafana. Bellach mae yna hefyd ystafell pencadlys lle mae'r tîm datblygu yn eistedd, sydd yn ystod y gynhadledd yn trwsio rhai chwilod ac yn datblygu nodweddion. Ar yr un pryd, mae system fonitro sy'n cael ei harddangos ar sgrin fawr. Mae Artyom, Kolya a bechgyn eraill yn eistedd i wneud yn siŵr nad yw popeth yn cwympo ac yn gweithio'n hyfryd.

Chwilfrydedd a phroblemau

- Fe wnaethoch chi siarad yn dda am y ffaith bod gennym ni ffrydio gydag Amazon, mae yna chwaraewr gyda'r we, mae popeth wedi'i ysgrifennu mewn gwahanol ieithoedd rhaglennu, mae goddefgarwch namau a gofynion busnes eraill yn cael eu darparu, gan gynnwys cyfrif personol a gefnogir ar gyfer endidau cyfreithiol a unigolion, a gallwn integreiddio â rhywun gan ddefnyddio OAuth 2.0, mae gwrth-dwyll, blocio defnyddwyr. Gallwn gyflwyno newidiadau yn ddeinamig oherwydd fe wnaethom ni'n dda, ac mae'r cyfan wedi'i brofi.

Mae gen i ddiddordeb mewn gwybod pa bethau rhyfedd oedd yn gysylltiedig â rhoi cychwyn ar rywbeth. A fu unrhyw sefyllfaoedd rhyfedd pan oeddech yn datblygu backend, frontend, rhywbeth gwallgof wedi troi allan a chi ddim yn deall beth i'w wneud ag ef?

Vladimir: Ymddengys i mi mai dim ond am y tri mis diwethaf y mae hyn wedi digwydd. Pob dydd. Fel y gwelwch, mae fy holl wallt wedi'i dynnu allan.

Datblygu llwyfan fideo mewn 90 diwrnod
Vladimir Krasilshchik ar ôl 3 mis, pan drodd rhyw fath o gêm allan a neb yn deall beth i'w wneud ag ef

Bob dydd roedd rhywbeth fel hyn, pan oedd y fath foment pan fyddwch chi'n ei dynnu ac yn rhwygo'ch gwallt allan, neu'n sylweddoli nad oes unrhyw un arall, a dim ond chi all ei wneud. Ein digwyddiad mawr cyntaf oedd TechTrain. Ar Fehefin 6 am 2 a.m. nid oeddem wedi cyflwyno'r amgylchedd cynhyrchu eto, roedd Kolya yn ei gyflwyno. Ac ni weithiodd y cyfrif personol fel gweinydd awdurdodi gan ddefnyddio OAuth2.0. Fe wnaethon ni ei droi'n ddarparwr OAuth2.0 i gysylltu'r platfform ag ef. Roeddwn i wedi bod yn gweithio am fwy na thebyg 18 awr yn syth, edrychais ar y cyfrifiadur a doeddwn i ddim yn gweld unrhyw beth, doeddwn i ddim yn deall pam nad oedd yn gweithio, ac edrychodd Kolya ar fy nghod o bell, edrych am nam yn y ffurfweddiad Gwanwyn , dod o hyd iddo, a gweithiodd yr LC, ac wrth gynhyrchu hefyd.

Nikolay: Ac awr cyn i TechTrain gael ei ryddhau.

Roedd llawer o sêr wedi'u halinio yma. Roedden ni’n hynod o lwcus oherwydd roedd gennym ni uwch dîm, ac roedd pawb wedi’u hysbrydoli gan y syniad o’i wneud ar-lein. Yr holl dri mis hyn cawsom ein gyrru gan y ffaith ein bod yn “gwneud YouTube.” Wnes i ddim caniatáu i mi fy hun rwygo fy ngwallt allan, ond dywedais wrth bawb y byddai popeth yn gweithio allan, oherwydd mewn gwirionedd, roedd popeth wedi'i gyfrifo ers talwm.

Ynglŷn â pherfformiad

— A allwch ddweud wrthyf faint o bobl oedd ar y safle ar un trac? A oedd unrhyw faterion perfformiad?

Nikolay: Nid oedd unrhyw broblemau perfformiad, fel y dywedasom eisoes. Uchafswm nifer y bobl a fynychodd un adroddiad oedd 1300 o bobl, mae hyn ar Heisenbug.

— A oedd unrhyw broblemau gyda gwylio lleol? Ac a yw'n bosibl cael disgrifiad technegol gyda diagramau o sut mae'r cyfan yn gweithio?

Nikolay: Byddwn yn gwneud erthygl am hyn yn ddiweddarach.

Gallwch hyd yn oed ddadfygio ffrydiau yn lleol. Unwaith y dechreuodd y cynadleddau, daeth hyd yn oed yn haws, oherwydd ymddangosodd ffrydiau cynhyrchu y gallwn eu gwylio drwy'r amser.

Vladimir: Yn ôl a ddeallaf, bu datblygwyr pen blaen yn gweithio'n lleol gyda ffug, ac yna, gan fod yr amser i gyflwyno i'r devs yn y blaen hefyd yn fyr (5 munud), nid oes unrhyw broblemau o ran gwirio beth sy'n digwydd gyda'r tystysgrifau.

— Mae popeth yn cael ei brofi a'i ddadfygio, hyd yn oed yn lleol. Mae hyn yn golygu y byddwn yn ysgrifennu erthygl gyda'r holl nodweddion technegol, yn dangos i chi, yn dweud popeth wrthych gyda diagramau, sut yr oedd.

Vladimir: Gallwch ei gymryd a'i ailadrodd.

- Mewn 3 mis.

Cyfanswm

— Mae popeth a ddisgrifir gyda'i gilydd yn swnio'n cŵl, gan ystyried ei fod wedi'i wneud gan dîm bach mewn tri mis.

Nikolay: Ni fyddai tîm mawr yn gwneud hyn. Ond gallai grŵp bach o bobl sy'n cyfathrebu'n eithaf agos ac yn dda â'i gilydd ac sy'n gallu dod i gytundeb. Nid oes ganddynt unrhyw wrthddywediadau, dyfeisiwyd y bensaernïaeth mewn dau ddiwrnod, fe'i cwblhawyd ac nid yw wedi newid mewn gwirionedd. Mae'r gofynion busnes sy'n dod i mewn yn cael eu hwyluso'n llym iawn o ran pentyrru ceisiadau am nodweddion a newidiadau.

— Beth oedd ar eich rhestr o dasgau pellach pan oedd y cynadleddau haf eisoes wedi'u cynnal?

Nikolay: Er enghraifft, credydau. Llinellau ymlusgol ar y fideo, ffenestri naid mewn rhai mannau yn y fideo yn dibynnu ar y cynnwys sy'n cael ei ddangos. Er enghraifft, mae'r siaradwr eisiau gofyn cwestiwn i'r gynulleidfa, ac mae pleidlais yn ymddangos ar y sgrin, sy'n mynd yn ôl i'r cefn yn seiliedig ar y canlyniadau pleidleisio i'r siaradwr ei hun. Rhyw fath o weithgaredd cymdeithasol ar ffurf hoffterau, calonnau, graddfeydd yr adroddiad yn ystod y cyflwyniad ei hun, fel y gallwch chi lenwi adborth ar yr adeg iawn heb i ffurflenni adborth dynnu eich sylw nes ymlaen. Fel hyn i ddechrau.

A hefyd yn ychwanegu at y llwyfan cyfan, ac eithrio ar gyfer ffrydio a chynadledda, hefyd cyflwr ôl-gynhadledd. Rhestrau chwarae yw’r rhain (gan gynnwys y rhai a luniwyd gan ddefnyddwyr), o bosibl cynnwys o gynadleddau eraill yn y gorffennol, wedi’u hintegreiddio, wedi’u labelu, yn hygyrch i’r defnyddiwr, a hefyd ar gael i’w gweld ar ein gwefan (byw.jugru.org).

- Bois, diolch yn fawr iawn am eich atebion!

Os oes rhai ymhlith y darllenwyr a fynychodd ein cynadleddau haf, a fyddech cystal â rhannu eich argraffiadau o'r chwaraewr a'r darllediad. Beth oedd yn gyfleus, beth oedd yn eich cythruddo, beth hoffech chi ei weld yn y dyfodol?

Os oes gennych chi ddiddordeb yn y platfform ac eisiau ei weld “mewn brwydr”, rydyn ni'n ei ddefnyddio eto ar ein cynadleddau hydref-gaeaf. Mae yna ystod gyfan ohonynt, felly mae bron yn sicr un sy'n iawn i chi.

Ffynhonnell: hab.com

Ychwanegu sylw