90 күндүн ичинде видео платформаны иштеп чыгуу

Бул жазда биз абдан шаңдуу шарттарда болдук. Пандемиядан улам жайкы конференцияларыбыз онлайн режимине өтүшү керек экени белгилүү болду. Аларды онлайн режиминде натыйжалуу жүргүзүү үчүн, даяр программалык чечимдер бизге ылайыктуу эмес, биз өзүбүздүн жазуубуз керек болчу. А бизде бул үчүн үч ай убакыт бар болчу.

Кызыктуу үч ай болгону анык. Бирок сырттан караганда бул ачык-айкын эмес: онлайн конференция платформасы деген эмне? Ал кандай бөлүктөрдөн турат? Ошондуктан, жайкы DevOops конференцияларынын акыркысында мен бул милдет үчүн жооптуу болгондордон сурадым:

  • Николай Молчанов - JUG Ru Group компаниясынын техникалык директору;
  • Владимир Красильщик - Java программасынын бетинде иштеген прагматикалык программист (сиз анын отчетторун биздин Java конференцияларында да көрө аласыз);
  • Артём Никонов биздин бардык видео агымдарга жооптуу.

Айтмакчы, күз-кыш конференцияларында биз ошол эле платформанын жакшыртылган версиясын колдонобуз – ушунча көп хабра окурмандары дагы эле анын колдонуучулары болот.

90 күндүн ичинде видео платформаны иштеп чыгуу

Чоң Сүрөт

— Команданын составы кандай болду?

Николай Молчанов: Бизде аналитик, дизайнер, тестирлөөчү, үч алдыңкы жана арткы бөлүк бар. Жана, албетте, Т-түрүндөгү адис!

— Жалпысынан процесс кандай болду?

Николай: Март айынын ортосуна чейин бизде онлайн үчүн эч нерсе даяр эмес болчу. Ал эми 15-мартта бүт онлайн карусель айлана баштады. Биз бир нече репозиторийлерди түзүп, пландап, негизги архитектураны талкуулап, үч айдын ичинде баарын жасадык.

Бул, албетте, пландаштыруунун, архитектуранын, өзгөчөлүктөрдү тандоонун, ошол өзгөчөлүктөргө добуш берүүнүн, ал өзгөчөлүктөр үчүн саясаттын, аларды долбоорлоонун, иштеп чыгуунун, тестирлөөнүн классикалык этаптарынан өттү. Натыйжада 6-июнда бардыгын өндүрүшкө чыгардык. TechTrain. Баары үчүн 90 күн бар болчу.

— Милдеттенмени аткара алдыкпы?

Николай: Биз азыр DevOops конференциясына онлайн катышып жаткандыктан, ал иштегенин билдирет. Мен жеке өзүм негизги нерсеге милдеттендим: мен кардарларга онлайн конференция өткөрө турган куралды алып келем.

Кыйынчылык бул болду: бизге конференцияларыбызды билет ээлерине уктурууга курал бериңиз.

Бардык пландаштыруу бир нече этаптарга бөлүнгөн жана бардык өзгөчөлүктөрү (30га жакын глобалдык) 4 категорияга бөлүнгөн:

  • биз сөзсүз жасайбыз (биз аларсыз жашай албайбыз),
  • биз экинчиден жасайбыз,
  • биз эч качан кылбайбыз,
  • жана муну биз эч качан, эч качан кылбайбыз.

Биз биринчи эки категориянын бардык өзгөчөлүктөрүн жасадык.

— Мен JIRAнын жалпы 600 маселеси түзүлгөнүн билем. Үч айдын ичинде сиз 13 микросервис жасадыңыз жана мен алар Java тилинде гана жазылган эмес деп ойлойм. Сиз ар кандай технологияларды колдондуңуз, сизде үч жеткиликтүүлүк зонасында эки Kubernetes кластери жана Amazon'да 5 RTMP агымы бар.

Эми системанын ар бир компонентин өзүнчө карап көрөлү.

Агым

— Качан бизде видео сүрөт бар жана ал кээ бир кызматтарга берилгенден баштайлы. Артём, айтчы бул стриминг кандай болот?

Артём Никонов: Биздин жалпы схемабыз мындай көрүнөт: камерадан сүрөт -> биздин башкаруу бөлмөбүз -> жергиликтүү RTMP сервер -> Amazon -> видео ойноткуч. Кененирээк маалымат ал жөнүндө жазган июнда Habré боюнча.

Жалпысынан, муну жасоонун эки дүйнөлүк жолу бар: же аппараттык же программалык чечимдердин негизинде. Биз программалык камсыздоонун жолун тандадык, анткени ал алыскы динамиктерде оңой. Башка өлкөдө динамикке аппараттык камсыздоону алып келүү дайыма эле мүмкүн боло бербейт, бирок программалык камсыздоону динамикке жеткирүү оңой жана ишенимдүү көрүнөт.

Аппараттык көз караштан алганда, бизде белгилүү бир сандагы камералар (биздин студияларыбызда жана алыскы колонкаларда), студияда белгилүү бир сандагы пульттер бар, алар кээде эфир учурунда түз үстөлдүн астына оңдолуп кетүүгө туура келет.

Бул түзүлүштөрдүн сигналдары тартуу карталары, киргизүү/чыгарма карталары жана үн карталары бар компьютерлерге кирет. Ал жерде сигналдар аралашып, схемаларга чогултулат:

90 күндүн ичинде видео платформаны иштеп чыгуу
4 динамик үчүн макеттин мисалы

90 күндүн ичинде видео платформаны иштеп чыгуу
4 динамик үчүн макеттин мисалы

Андан ары үзгүлтүксүз берүү үч компьютердин жардамы менен камсыз кылынат: бир негизги машина жана кезектеги жуп жумушчу. Биринчи компьютер биринчи отчетту, экинчиси - тыныгууну, биринчиси - кийинки отчетту, экинчиси - кийинки тыныгууну жана башкаларды чогултат. Ал эми негизги машина биринчисин экинчисин аралаштырат.

Бул үч бурчтуктун түрүн жаратат жана бул түйүндөрдүн бири иштебей калса, биз тез жана сапатты жоготпостон кардарларга мазмунду жеткирүүнү уланта алабыз. Бизде ушундай абал болгон. Конференциялардын биринчи жумасында биз бир машинаны оңдоп, аны күйгүзүп/өчүрүп койдук. Биздин чыдамкайлыгыбызга эл ыраазы окшойт.

Андан кийин, компьютерлерден агымдар жергиликтүү серверге өтөт, анын эки милдети бар: RTMP агымдарын багыттоо жана резервдик көчүрмөлөрдү жазуу. Ошентип, бизде бир нече жазуу пункттары бар. Андан кийин видео агымдар системабыздын Amazon SaaS кызматтарында курулган бөлүгүнө жөнөтүлөт. Биз колдонобуз MediaLive,S3,CloudFront.

Николай: Видео көрүүчүлөргө жеткенге чейин ал жерде эмне болот? Сиз аны кандайдыр бир жол менен кесип салышыңыз керек, туурабы?

Артём: Биз өз тарапыбыздан видеону кысып, MediaLiveге жөнөтөбүз. Ал жерде транскодерлерди ишке киргизебиз. Алар видеолорду реалдуу убакыт режиминде бир нече резолюцияга которуп, адамдар аларды телефондорунан, өлкөдөгү начар интернет аркылуу жана башкалар көрө алышат. Андан кийин бул агымдар кесилет бөлүктөр, протокол ушундай иштейт HLS. Бул бөлүктөргө көрсөткүчтөрдү камтыган плейлистти фронтонго жөнөтөбүз.

— Биз 1080p резолюцияны колдонуп жатабызбы?

Артём: Биздин видеонун туурасы 1080p - 1920 пиксел менен бирдей, ал эми бийиктиги бир аз азыраак, сүрөт узунураак - мунун себептери бар.

Player

— Артём видеонун агымдарга кантип кирерин, анын экрандын ар кандай резолюциялары үчүн ар кандай ойнотмо тизмелерге кантип бөлүштүрүлүп, бөлүктөргө кесилип, ойноткучка кантип кирерин айтып берди. Коля, эми айтчы бул кандай оюнчу, ал агымды кантип жейт, эмне үчүн HLS?

Николай: Бизде бардык конференция көрүүчүлөр көрө ала турган оюнчу бар.

90 күндүн ичинде видео платформаны иштеп чыгуу

Негизинен, бул китепкананын айланасы hls.js, башка көптөгөн оюнчулар жазылган. Бирок бизге абдан спецификалык функционал керек болчу: кайра түрүү жана адам кайда экенин, учурда ал кандай отчет көрүп жатканын белгилөө. Бизге өзүбүздүн макеттерибиз, ар кандай логотиптер жана биз менен кошо курулган башка нерселер керек болчу. Ошондуктан, биз өзүбүздүн китепканабызды (HLS үстүнөн каптама) жазып, аны сайтка киргизүүнү чечтик.

Бул негизги функция, ошондуктан ал дээрлик биринчи жолу ишке ашырылган. Анан баары анын тегерегинде өстү.

Чынында, авторизация аркылуу оюнчу бэкендден убакытка жана сапатка байланыштуу бөлүктөргө шилтемелери бар плейлистти алат, керектүүлөрүн жүктөп алып, жолдо кандайдыр бир "сыйкырчылык" жасап, колдонуучуга көрсөтөт.

90 күндүн ичинде видео платформаны иштеп чыгуу
Убакыт тилкесинин мисалы

— Бардык отчеттордун хронологиясын көрсөтүү үчүн плеердин ичине баскыч орнотулган...

Николай: Ооба, биз дароо колдонуучу навигация маселесин чечтик. Апрель айынын орто ченинде биз ар бир конференциябызды өзүнчө сайттан көрсөтпөй, баарын бир жерге бириктиребиз деп чечтик. Ошентип, Full Pass билетинин колдонуучулары ар кандай конференциялардын ортосунда эркин которула алышат: түз берүүлөр жана мурункулардын жаздыруулары.

Колдонуучуларга учурдагы агымда навигациялоону жана тректердин ортосунда которуштурууну жеңилдетүү үчүн, биз тректер менен отчеттордун ортосунда которулуу үчүн "Бүтүндөй берүү" баскычын жана горизонталдуу отчёт карталарын жасоону чечтик. Баскычтоп башкаруу бар.

— Бул жагынан кандайдыр бир техникалык кыйынчылыктар болдубу?

Николай: Аларда ар кандай отчеттордун баштапкы чекиттери белгиленген жылдыруу тилкеси болгон.

— Акыр-аягы, YouTube ушуга окшош нерсени жасаганга чейин сиз бул белгилерди жылдыруу тилкесинде киргиздиңиз беле?

Артём: Алар анда бета версиясында болгон. Бул абдан татаал функция окшойт, анткени алар аны жарым-жартылай өткөн жылы колдонуучулар менен сынап көрүшкөн. Ал эми азыр сатыкка жетти.

Николай: Бирок биз аны тезирээк сатууга алдык. Чынын айтсам, бул жөнөкөй функциянын артында плеердин ичинде көп сандагы бэк, фронт, эсептөөлөр жана математика бар.

Frontend

— Келгиле, биз көрсөткөн бул мазмун (сөз картасы, баяндамачылар, веб-сайт, график) алдыңкы чекке кантип жетээрин аныктап көрөлү?

Владимир Красильщик: Бизде бир нече ички IT системалары бар. Бардык баяндамалар жана бардык баяндамачылар киргизилген система бар. Конференцияга спикер катыша турган процесс бар. Баяндамачы арыз берет, система аны басып алат, андан кийин белгилүү бир түтүк бар, ага ылайык отчет түзүлөт.

90 күндүн ичинде видео платформаны иштеп чыгуу
Докладчы куурду мына ушундай коруп жатат

Бул система биздин ички өнүгүүбүз.

Андан кийин, сиз жеке отчеттордон график түзүшүңүз керек. Белгилүү болгондой, бул NP үчүн кыйын маселе, бирок биз аны кандайдыр бир жол менен чечебиз. Бул үчүн, биз графикти түзүп, аны үчүнчү тараптын Contentful булут кызматына жүктөөчү башка компонентти ишке киргизебиз. Ал жерде бардыгы столго окшоп, анда конференциянын күндөрү, күндөрдө убакыт тилкелери, ал эми слоттордо отчеттор, тыныгуулар же демөөрчүлүк иш-чаралар бар. Ошентип, биз көрүп турган мазмун үчүнчү тараптын кызматында жайгашкан. Ал эми милдет аны сайтка жеткирүү.

Бул сайт жөн гана оюнчу бар барак болуп көрүнөт, жана бул жерде татаал эч нерсе жок. Болбосо. Бул барактын артындагы бэкэнд Contentful'ка өтүп, ал жерден графикти алат, кээ бир объекттерди жаратат жана аны фронтонго жөнөтөт. Биздин платформанын ар бир кардары жасаган вебсокет байланышын колдонуп, биз ага графикке жаңыртууларды бэкендден фронтонго жөнөтөбүз.

Чыныгы окуя: спикер конференция учурунда ишин алмаштырды. Биз анын жумуш берүүчү компаниясынын төш белгисин алмаштыруубуз керек. Бул арткы тараптан кантип болот? Жаңыртуу бардык кардарларга веб-розетка аркылуу жөнөтүлөт, андан кийин фронтондун өзү хронологияны кайра тартат. Мунун баары үзгүлтүксүз ишке ашат. Булут кызматынын жана биздин бир нече компоненттердин айкалышы бизге бул мазмундун баарын түзүүгө жана аны алдыңкы орунга берүүгө мүмкүнчүлүк берет.

Николай: Бул жерде биздин сайт классикалык SPA колдонмо эмес экенин тактоо үчүн маанилүү болуп саналат. Бул макетке негизделген, көрсөтүлгөн веб-сайт жана SPA. Google чындыгында бул сайтты HTML катары көргөзөт. Бул SEO үчүн жана колдонуучуга мазмунду жеткирүү үчүн жакшы. Ал баракты көргөнгө чейин 1,5 мегабайт JavaScript жүктөлүшүн күтпөйт, ал мурунтан эле көрсөтүлгөн баракты дароо көрөт жана сиз отчетту алмаштырган сайын сезесиз. Баары жарым секунданын ичинде болот, анткени мазмун мурунтан эле даяр жана керектүү жерге жайгаштырылган.

— Келгиле, технологияларды тизмектеп, жогоруда айтылгандардын бардыгына сызык сызып көрөлү. Тиома бизде 5 Amazon агымы бар экенин айтты жана биз ал жерге видео жана үн жеткиребиз. Ал жерде бизде bash скрипттери бар, биз аларды ишке киргизүү жана конфигурациялоо үчүн колдонобуз...

Артём: Бул AWS API аркылуу болот, ал жерде дагы көптөгөн техникалык кызматтар бар. Жоопкерчиликти бөлүштүрдүк, ошондо мен жеткирем CloudFront, жана алдыңкы жана арткы иштеп чыгуучулар аны ошол жерден алышат. Бизде мазмундун жайгашуусун жөнөкөйлөтүү үчүн өзүбүздүн бир катар байланыштарыбыз бар, аларды 4K форматында жасайбыз ж.б. Мөөнөттөр абдан тар болгондуктан, биз аны дээрлик толугу менен AWSде жасадык.

— Андан кийин мунун баары бэкенд системасы аркылуу ойноткучка кирет. Биздин оюнчуда TypeScript, React, Next.JS бар. Ал эми арт жагында бизде C#, Java, Spring Boot жана Node.js тилдеринде бир нече кызматтар бар. Мунун баары Yandex.Cloud инфраструктурасын колдонуу менен Kubernetes аркылуу жайгаштырылат.

Мен дагы белгилеп кетким келет, мен платформа менен таанышуу керек болгондо, бул оңой болуп чыкты: бардык репозиторийлер GitLabда, бардыгы жакшы аталышта, тесттер жазылган, документтер бар. Тактап айтканда, авариялык режимде да ушундай иштерди колго алышкан.

Бизнес чектөөлөр жана аналитика

— Биз бизнес талаптарынын негизинде 10 000 колдонуучуга багытталганбыз. Бизде болгон бизнес чектөөлөр жөнүндө айтууга убакыт келди. Биз жогорку жүктөмдү камсыз кылуу, жеке маалыматтарды сактоо боюнча мыйзамдын сакталышын камсыз кылуу керек болчу. Дагы эмне?

Николай: Алгач видео талаптардан баштадык. Эң негизгиси, кардарга тез жеткирүү үчүн дүйнө жүзү боюнча бөлүштүрүлгөн видео сактагыч. Башкалары 1080p резолюцияны, ошондой эле артка түрүүнү камтыйт, аны башкалар жандуу режимде ишке ашырбайт. Кийинчерээк биз 2x ылдамдыкты иштетүү мүмкүнчүлүгүн коштук, анын жардамы менен сиз түз эфирге "кууп жетип", конференцияны реалдуу убакыт режиминде көрө аласыз. Жана жолдо, убакыт тилкесин белгилөө функциясы пайда болду. Мындан тышкары, биз каталарга чыдамдуу болуп, 10 000 туташуунун жүгүн көтөрүшүбүз керек болчу. Backend көз карашынан алганда, бул ар бир баракты жаңылоо үчүн 10 суроого көбөйтүлгөн болжол менен 000 8 байланыш. Ал эми бул буга чейин 80 RPS/сек. Бир аз.

— Өнөктөштөрдүн онлайн стенддери менен “виртуалдык көргөзмөгө” башка талаптар бар беле?

Николай: Ооба, бул абдан тез жана универсалдуу түрдө аткарылышы керек болчу. Ар бир конференцияга бизде 10го чейин өнөктөш компаниялар бар болчу жана алардын бардыгы бир же эки жумада бүтүшү керек болчу. Бирок, алардын мазмуну форматы боюнча бир аз айырмаланат. Бирок белгилүү бир шаблон кыймылдаткычы жасалды, ал бул барактарды тез арада чогултат, андан ары өнүктүрүүгө дээрлик эч кандай катышы жок.

— Ошондой эле реалдуу убакыттагы көрүүлөр жана статистикалык маалыматтардын аналитикасына талаптар бар болчу. Бул үчүн биз Prometheus колдоноорубузду билем, бирок кененирээк айтып бериңизчи: биз аналитика үчүн кандай талаптарга жооп беребиз жана бул кантип ишке ашат?

Николай: Башында, келечекте кардарга эң жакшы мазмунду кантип туура жеткирүү керектигин түшүнүү үчүн бизде A/B тестирлөө жана маалымат чогултуу боюнча маркетинг талаптары бар. Өнөктөштөрдүн иш-аракеттери боюнча айрым аналитикага жана сиз көргөн аналитикага да талаптар бар (визит эсептегич). Бардык маалымат реалдуу убакытта чогултулат.

Биз бул маалыматты жалпыланган түрдө баяндамачыларга да бере алабыз: белгилүү бир учурда канча адам сизди карап турган. Ошол эле учурда, 152-Федералдык мыйзамга ылайык, сиздин жеке эсебиңиз жана жеке маалыматтарыңыз эч кандай жол менен көзөмөлдөнбөйт.

Платформада маркетинг куралдары жана реалдуу убакыт режиминде колдонуучунун активдүүлүгүн өлчөө үчүн биздин метрикабыз (отчёттун кайсы секундуна караган) отчетторго катышуунун графиктерин түзүү үчүн мурунтан эле бар. Бул маалыматтардын негизинде кийинки конференцияларды жакшыраак кыла турган изилдөөлөр жүргүзүлүүдө.

Алдамчылык

— Бизде алдамчылыкка каршы механизмдер барбы?

Николай: Бизнес көз карашынан алганда, убакыттын тардыгынан улам, керексиз байланыштарды дароо бөгөттөө милдети башында коюлган эмес. Эгер эки колдонуучу бир аккаунт менен кирсе, алар мазмунду көрө алышат. Бирок биз бир аккаунттан канча бир убакта көрүүлөр болгонун билебиз. Жана биз бир нече өзгөчө кара ниет бузуучуларга тыюу салдык.

Владимир: Тыюу салынган колдонуучулардын бири эмне үчүн мындай болгонун түшүндү. Келип кечирим сурап билет алып берем деп сөз берди.

— Мунун баары болушу үчүн, сиз киргенден чыкканга чейин бардык колдонуучуларды толугу менен көзөмөлдөшүңүз керек, алар эмне кылып жатканын дайыма билишиңиз керек. Бул система кантип иштейт?

Владимир: Мен аналитика жана статистика жөнүндө айткым келет, аларды биз андан кийин отчеттун ийгилиги үчүн талдайбыз же андан кийин өнөктөштөргө бере алабыз. Бардык кардарлар белгилүү бир сервердик кластерге websocket туташуу аркылуу туташкан. Ошол жерде турат hazelcast. Ар бир кардар ар бир убакыт аралыгында эмне кылып жатканын жана кайсы тректи көрүп жатканын жөнөтөт. Андан кийин бул маалымат тез Hazelcast жумуштарын колдонуу менен топтолот жана бул тректерди көргөндөрдүн баарына кайра жөнөтүлөт. Азыр биз менен канча адам жүргөнүн бурчтан көрүп жатабыз.

90 күндүн ичинде видео платформаны иштеп чыгуу

Ошол эле маалымат сакталат Соо жана биздин маалымат көлүбүзгө барат, андан биз кызыктуураак графикти курууга мүмкүнчүлүгүбүз бар. Суроо туулат: бул отчетту канча уникалдуу колдонуучулар көргөн? Биз барабыз postgres, бул отчеттун id менен келген бардык адамдардын пингдери бар. Биз уникалдууларды чогулттук, бириктирдик, эми түшүнө алабыз.

Николай: Бирок ошол эле учурда биз Прометейден реалдуу убакыт режиминде маалыматтарды алабыз. Ал бардык Kubernetes кызматтарына, Kubernetesтин өзүнө каршы коюлган. Ал бардыгын чогултат жана Grafana менен биз реалдуу убакытта каалаган графиктерди кура алабыз.

Владимир: Бир жагынан, биз муну андан ары OLAP иштетүү үчүн жүктөп алабыз. Ал эми OLTP үчүн тиркеме бүт нерсени Прометейге, Графанага жүктөйт жана графиктер да биригет!

- Графиктер жакындаганда ушундай болот.

Динамикалык өзгөрүүлөр

— Айтыңызчы, динамикалык өзгөрүүлөр кандайча ишке ашат: эгерде отчет башталышына 6 мүнөт калганда жокко чыгарылса, иш-аракеттердин тизмеги кандай? Кайсы түтүк иштейт?

Владимир: Түтүк өтө шарттуу. Бир нече мүмкүнчүлүктөр бар. Биринчиси, графикти түзүү программасы иштеп, графикти өзгөрткөн. Өзгөртүлгөн график Contentfulке жүктөлөт. Андан кийин, бул конференция Contentful программасында өзгөрүүлөр бар экенин түшүнөт, аны кабыл алып, кайра курат. Баары чогултулуп, websocket аркылуу жөнөтүлөт.

Экинчи мүмкүнчүлүк, баары тез ылдамдыкта болгондо: редактор Contentful'догу маалыматты кол менен өзгөртөт (Telegramга шилтеме, баяндамачынын презентациясы ж.б.) жана ошол эле логика биринчи жолу иштейт.

Николай: Баары баракты жаңыртпай эле болот. Бардык өзгөртүүлөр кардар үчүн таптакыр үзгүлтүксүз ишке ашат. Ошол эле отчетторду алмаштырууга да тиешелүү. Убактысы келгенде отчет жана интерфейс өзгөрөт.

Владимир: Ошондой эле, хронологияда отчетторду баштоо үчүн убакыттын чектери бар. Башында эч нерсе жок. Жана эгер сиз чычканыңызды кызыл тилкеге ​​алып барсаңыз, анда кайсы бир учурда берүү режиссерунун аркасында кесүүлөр пайда болот. Режиссер уктуруунун туура башталышын белгилейт, бэкэнд бул өзгөртүүнү тандап алат, конференциянын графигине ылайык тректин бардык презентацияларынын башталышы жана аяктоо убактысын эсептеп, аны биздин кардарларга жөнөтөт жана оюнчу үзүндүлөрдү тартат. Эми колдонуучу оңой эле отчеттун башына жана аягына чыга алат. Бул бизнестин катуу талабы болчу, абдан ыңгайлуу жана пайдалуу. Отчеттун чыныгы башталыш убактысын табуу үчүн убакытты текке кетирбейсиз. Ал эми биз алдын ала көрүүнү жасаганда, бул абдан сонун болот.

Жайгаштыруу

— Мен жайылтуу женунде сурагым келет. Коля жана команда башында биз үчүн бардыгы ачыла турган бардык инфраструктураны орнотуу үчүн көп убакыт коротушту. Айтчы мага, мунун баары эмнеден жасалган?

Николай: Техникалык көз караштан алганда, биз алгач кандайдыр бир сатуучудан мүмкүн болушунча абстракттуу продукт болушун талап кылганбыз. Терраформ скрипттерин атайын AWSден же атайын Яндекстен же Azureден ж.б. жасоо үчүн AWSге келиңиз. чындап туура келген жок. Биз кандайдыр бир учурда бир жакка көчүшүбүз керек болчу.

Алгачкы үч жумада биз муну жакшыраак кылуунун жолун тынымсыз издедик. Натыйжада, биз бул учурда Kubernetes биздин бардыгыбыз деген тыянакка келдик, анткени ал бизге автоматтык түрдө масштабдалуучу кызматтарды түзүүгө, автоматтык түрдө жайылтууга жана дээрлик бардык кызматтарды кутудан алууга мүмкүндүк берет. Албетте, бардык кызматтар Kubernetes, Docker менен иштөөгө үйрөтүлүшү керек жана команда дагы үйрөнүшү керек болчу.

Бизде эки кластер бар. Сыноо жана өндүрүш. Алар аппараттык жана орнотуулар жагынан таптакыр окшош. Биз инфраструктураны код катары ишке ашырабыз. Бардык кызматтар автоматтык түрдө үч чөйрөгө өзгөчөлүк бутактарынан, башкы бутактардан, сыноо бутактарынан жана GitLab аркылуу автоматтык түтүк аркылуу чыгарылат. Бул максималдуу GitLab менен интеграцияланган, Elastic, Prometheus менен максималдуу интеграцияланган.

Биз бардык тесттер, интеграциялар, функционалдык тесттер, айлана-чөйрө боюнча интеграциялык тесттер, ошондой эле жүктөө тесттери менен каалаган чөйрөгө өзгөрүүлөрдү тез арада чыгаруу мүмкүнчүлүгүн алабыз (бэкленд үчүн 10 мүнөттүн ичинде, фронтон үчүн 5 мүнөттүн ичинде). сыноо чөйрөсү болжол менен биз өндүрүштө алгыбыз келген нерсе.

Тесттер жөнүндө

— Дээрлик баарын сынайсың, баарын кантип жазганыңа ишенүү кыйын. Бизге backend тесттери жөнүндө айтып бере аласызбы: бардыгы канчалык деңгээлде камтылган, кандай тесттер?

Владимир: Тесттердин эки түрү жазылган. Биринчиси - компоненттер тесттери. Бүткүл жазгы колдонуу жана базаны көтөрүү деңгээли сыноолору Сыноочу контейнерлер. Бул эң жогорку деңгээлдеги бизнес сценарийлеринин сыноосу. Мен функцияларды сынабайм. Биз чоң нерселерди гана сынап жатабыз. Мисалы, тестте, колдонуучуга кирүү процесси эмуляцияланат, колдонуучунун ал бара турган билеттерге болгон өтүнүчү жана агымды көрүү мүмкүнчүлүгүн берүү өтүнүчү. Абдан ачык колдонуучу сценарийлери.

Болжол менен ошол эле нерсе чындыгында айлана-чөйрөдө иштеген интеграциялык тесттерде ишке ашырылат. Чынында, өндүрүштө кийинки жайылтуу ишке киргизилгенде, өндүрүштө чыныгы негизги сценарийлер да иштеп жатат. Ошол эле логин, билеттерди талап кылуу, CloudFront'ка кирүүнү сурануу, агым чындап менин уруксаттарым менен байланышып жатканын текшерүү, директордун интерфейсин текшерүү.

Учурда менде 70ке жакын компонент тесттери жана 40ка жакын интеграциялык тесттер бар. Камтуу 95% га абдан жакын. Бул компоненттер үчүн, интеграциялангандар үчүн, анчалык деле зарыл эмес. Долбоор кодду түзүүнүн бардык түрлөрүн камтыганын эске алсак, бул абдан жакшы көрсөткүч. Үч айда жасаган ишибиздин башка жолу жок болчу. Анткени биз тестирлөөчүгө функцияларды берип, кол менен сынап көрсөк, ал мүчүлүштүктөрдү таап, аларды оңдоо үчүн бизге кайтарып берсе, анда кодду оңдоо үчүн бул тегерек сапар абдан узакка созулуп, биз эч кандай мөөнөткө жооп бербей калмакпыз.

Николай: Шарттуу түрдө, кандайдыр бир функцияны өзгөртүүдө бүт платформада регрессияны жүргүзүү үчүн, эки күн бою бардык жерде отуруп, чукууш керек.

Владимир: Ошондуктан, мен бир өзгөчөлүктү баалаганда, эки жөнөкөй калем жана 4 веб розеткага 1 күн керек деп айтсам, Коля уруксат бергени чоң ийгилик. Ал буга чейин эле көнүп калган, бул 4 күндө тесттин 2 түрүн камтыйт, андан кийин, балким, натыйжа берет.

Николай: Менде 140 тест жазылган: компонент + функционалдуу, алар бир эле нерсени аткарышат. Бардык эле сценарийлер өндүрүштө, сыноодо жана өндүрүштө сыналат. Ошондой эле жакында функционалдык негизги UI тесттерин коштук. Ушундай жол менен биз ажырап калышы мүмкүн болгон эң негизги функцияларды камтыйт.

Владимир: Албетте, жүк тесттер жөнүндө сөз кылуу керек. Баардыгы кандай экенин, Rabbit менен эмне болуп жатканын, JVM менен эмне болуп жатканын, чындыгында канчалык эстутум керек экенин түшүнүү үчүн платформаны реалдуу жүктүн астында сынап көрүү керек болчу.

— Биз агым тарабында бир нерсени сынап жаткан жокпузбу, так билбейм, бирок жолугушууларды өткөргөндө транскодерлерде көйгөйлөр болгондугу эсимде. Биз агымдарды сынап көрдүк беле?

Артём: Итеративдик түрдө сыналган. Жолугушууларды уюштуруу. Жолугушууларды уюштуруу процессинде болжол менен 2300 JIRA билеттери бар болчу. Бул адамдар жолугушуу үчүн жасаган жалпы нерселер. Биз платформанын бөлүктөрүн жолугушуулар үчүн өзүнчө баракчага алдык, аны Кирилл Толкачев башкарган (talkkv).

Чынын айтсам, чоң көйгөйлөр болгон жок. CloudFront'та бир нече жолу кэш каталарын кармадык, биз аны тез эле чечтик - жөн гана саясаттарды кайра конфигурацияладык. Адамдарда, сайттагы агымдык системаларда мүчүлүштүктөр кыйла көп болгон.

Конференциялардын жүрүшүндө мен көбүрөөк жабдууларды жана кызматтарды камтуу үчүн дагы бир нече экспортерлорду жазууга туура келди. Кээ бир жерлерде метрика үчүн эле өзүм велосипед жасоого туура келди. AV (аудио-видео) жабдыктарынын дүйнөсү анча деле кызгылт эмес - сизде кандайдыр бир "API" жабдуулары бар, ага сиз жөн эле таасир эте албайсыз. Жана сиз керектүү маалыматты ала аласыз деген чындыктан алыс. Аппараттык камсыздоочулар чындап эле жай иштешет жана алардан каалаганыңызды алуу дээрлик мүмкүн эмес. Жалпысынан 100дөн ашык жабдык бар, алар сизге керектүү нерсени кайтарып бербейт жана сиз кызыктай жана ашыкча экспорттоочуларды жазасыз, анын аркасында сиз жок дегенде кандайдыр бир жол менен системаны оңдоого болот.

жабдуулар

— Конференциялар башталганга чейин биз кошумча жабдууларды жарым-жартылай сатып алганыбыз эсимде.

Артём: Биз компьютерлерди, ноутбуктарды жана батарейкаларды сатып алдык. Учурда электр жарыгысыз 40 мүнөт жашай алабыз. Июнь айында Санкт-Петербургда катуу күн күркүрөйт, - ошондуктан бизде ушундай өчүрүү болду. Ошол эле учурда, бир нече провайдерлер бизге ар кандай чекиттерден оптикалык шилтемелер менен келишет. Бул чындап эле 40 мүнөттүк курулуш токтоп турат, анын жүрүшүндө бизде жарык, үн, камералар жана башкалар иштейт.

— Бизде интернетте ушундай окуя бар. Биздин студиялар жайгашкан кеңседе кабаттардын ортосуна катуу торду сүйрөп кирдик.

Артём: Бизде кабаттардын ортосунда 20 Гбит була бар. Андан ары кабаттарды бойлото, бир жерде оптика бар, бир жерде оптика жок, бирок дагы эле гигабиттик каналдардан азыраак каналдар бар - биз конференциянын тректеринин ортосунда алар боюнча видео жүргүзөбүз. Жалпысынан алганда, өзүңүздүн инфраструктураңызда иштөө абдан ыңгайлуу, сайттардагы офлайн конференцияларда сиз муну сейрек кыла аласыз.

— Мен JUG Ru Groupто иштегенге чейин, оффлайн конференцияларындагы аппараттык бөлмөлөр бир түндө кантип орнотулганын көрдүм, ал жерде Grafanaда сиз курган бардык көрсөткүчтөрдү камтыган чоң монитор бар болчу. Азыр ошондой эле иштеп чыгуу тобу отурган башкы кеңсе бөлмөсү бар, ал конференциянын жүрүшүндө айрым мүчүлүштүктөрдү оңдоп, функцияларды иштеп чыгат. Ошол эле учурда чоң экранда көрсөтүлгөн мониторинг системасы бар. Артём, Коля жана башка жигиттер отуруп алып, баары жыгылып кетпесин, сонун иштейт.

Кызыкчылыктар жана көйгөйлөр

— Бизде Amazon менен стриминг бар экени, веб менен ойноткуч бар, бардыгы ар кандай программалоо тилдеринде жазылган, каталарга чыдамдуулук жана башка бизнес талаптары, анын ичинде юридикалык жактар ​​үчүн колдоого алынган жеке кабинет жана жеке адамдар, жана биз кимдир бирөө менен OAuth 2.0 аркылуу бириге алабыз, анти-алдамчылык, колдонуучуга бөгөт коюу бар. Биз өзгөрүүлөрдү динамикалык түрдө жайылта алабыз, анткени биз муну жакшы кылдык жана мунун баары текшерилди.

Мен бир нерсени баштоодо кандай таң калыштуу нерселер болгонун билгим келет. Сиз бэкэндди, фронтендди иштеп чыкканда, жинди нерсе чыгып, аны менен эмне кылууну түшүнгөн жоксузбу?

Владимир: Менимче, бул акыркы үч айда гана болуп жатат окшойт. Күн сайын. Көрүп тургандай, чачымдын баары жулуп кетти.

90 күндүн ичинде видео платформаны иштеп чыгуу
Владимир Красильщик 3 айдан кийин, кандайдыр бир оюн чыгып, аны менен эмне кылуу керектигин эч ким түшүнбөй калганда

Күн сайын ушундай бир нерсе болгон, аны алып чачыңды жулуп алган, же башка эч ким жок, сен гана кыла аласың деп түшүнгөн учур болгон. Биздин биринчи чоң иш-чарабыз TechTrain болду. 6-июнда саат 2де өндүрүш чөйрөсүн чыгара элек болчубуз, Коля аны жылдырып жаткан. Ал эми жеке аккаунт OAuth2.0 аркылуу авторизация сервери катары иштеген эмес. Биз платформаны ага туташтыруу үчүн аны OAuth2.0 провайдерине айландырдык. Мен 18 саат бою үзгүлтүксүз иштедим, мен компьютерди карадым жана эч нерсе көргөн жокмун, эмне үчүн ал иштебей жатканын түшүнгөн жокмун, ал эми Коля менин кодумду алыстан карап, Жаз конфигурациясында ката издеди , аны таап, LC иштеген жана өндүрүштө да .

Николай: Жана TechTrain бир саат мурун релиз болуп өттү.

Бул жерде көптөгөн жылдыздар тизилген. Биз абдан бактылуу болдук, анткени бизде супер команда бар жана бардыгы онлайн режиминде жасоо идеясына шыктанышкан. Ушул үч айдын баарында бизди "YouTube жасаганыбыз" кызыктырды. Мен чачымды жулуп алганга уруксат берген жокмун, бирок баары жакшы болорун айттым, анткени чындыгында баары эбак эле эсептелген.

аткаруу жөнүндө

— Бир тректе сайтта канча адам болгонун айта аласызбы? Кандайдыр бир аткаруу көйгөйлөр бар беле?

Николай: Биз буга чейин айткандай, аткаруу көйгөйлөрү болгон жок. Бир отчетко катышкан адамдардын максималдуу саны 1300 адам болгон, бул Heisenbug боюнча.

— Жергиликтүү көрүү боюнча кыйынчылыктар болдубу? Ал эми анын баары кантип иштээрин диаграммалар менен техникалык сүрөттөмө болушу мүмкүнбү?

Николай: Бул тууралуу кийинчерээк макала жасайбыз.

Сиз агымдарды жергиликтүү деңгээлде оңдоого да болот. Конференциялар башталгандан кийин, бул ого бетер жеңилдеди, анткени өндүрүш агымдары пайда болуп, биз ар дайым көрө алабыз.

Владимир: Мен түшүнгөндөй, алдыңкы иштеп чыгуучулар шылдыңдар менен жергиликтүү деңгээлде иштешкен, андан кийин алдыңкы иштеп чыгуучуларга чыгууга убакыт да аз болгондуктан (5 мүнөт), сертификаттар менен эмне болуп жатканын текшерүүдө эч кандай көйгөйлөр жок.

— Бардыгы сыналган жана катасыздандырылган, атүгүл жергиликтүү деңгээлде. Бул биз бардык техникалык өзгөчөлүктөрү менен макала жазабыз дегенди билдирет, сага көрсөтөбүз, диаграммалар менен баарын айтып берем, кандай болгонун.

Владимир: Сиз аны алып, кайталай аласыз.

- 3 айдан кийин.

жыйынтык

— Чогуу сүрөттөлгөн нерселердин бардыгы үч айдын ичинде чакан коллектив тарабынан жасалганын эске алсак, сонун угулат.

Николай: Чоң команда муну кылбайт. Бирок бири-бири менен абдан тыгыз жана жакшы баарлашып, бир пикирге келе алган адамдардын чакан тобу мүмкүн. Аларда эч кандай карама-каршылык жок, архитектура эки күндүн ичинде ойлоп табылып, жыйынтыкталып, иш жүзүндө өзгөргөн жок. Өзгөчөлүк суроо-талаптарын жана өзгөртүүлөрдү чогултуу жагынан келген бизнес талаптарын абдан катуу жеңилдетүү бар.

— Жайкы конференциялар болуп өткөндө мындан аркы милдеттериңиздин тизмесинде эмне бар эле?

Николай: Мисалы, кредиттер. Видеодогу сойлоп сызыктар, көрсөтүлүп жаткан мазмунга жараша видеонун кээ бир жерлеринде калкыма терезелер. Мисалы, спикер аудиторияга суроо бергиси келет, ал эми экранда добуш берүү пайда болот, ал добуш берүүнүн жыйынтыгы боюнча спикердин өзүнө кайтып келет. Презентациянын өзүндө жактыруулар, жүрөктөр, отчеттун рейтинги түрүндөгү кандайдыр бир коомдук активдүүлүк, андыктан сиз пикириңизди кийинчерээк пикир формаларына алаксыбай, керектүү учурда толтура аласыз. Башында ушундай.

Ошондой эле бүт платформага агым жана конференциядан тышкары, конференциядан кийинки абалды кошуу. Бул ойнотмо тизмелер (анын ичинде колдонуучулар тарабынан түзүлгөн), балким башка өткөн конференциялардын мазмуну, интеграцияланган, энбелгиленген, колдонуучуга жеткиликтүү, ошондой эле биздин веб-сайтта көрүү үчүн жеткиликтүү (live.jugru.org).

— Балдар, жоопторуңуз үчүн чоң рахмат!

Окурмандардын арасында жайкы конференцияларыбызга катышкандар болсо, оюнчу жана эфир тууралуу өз таасириңиз менен бөлүшүңүз. Эмне ыңгайлуу болду, эмне кыжырыңызды келтирди, келечекте эмнени көргүңүз келет?

Эгер сиз платформага кызыгып, аны "согушта" көргүңүз келсе, биз аны кайра биздин платформада колдонобуз күзгү-кышкы конференциялар. Алардын бүтүндөй диапазону бар, демек, сизге ылайыктуу бири бар.

Source: www.habr.com

Комментарий кошуу