Devlope yon platfòm videyo nan 90 jou

Prentan sa a nou te jwenn tèt nou nan kondisyon trè lajwa. Akòz pandemi an, li te vin klè ke konferans ete nou yo te bezwen deplase sou entènèt. Epi yo nan lòd yo mennen yo sou entènèt avèk efikasite, solisyon lojisyèl pare yo pa t 'apwopriye pou nou; nou te bezwen ekri pwòp pa nou. E nou te gen twa mwa pou nou fè sa.

Li klè ke li te yon twa mwa enteresan. Men, soti deyò a li pa totalman evidan: ki sa ki se yon platfòm konferans sou entènèt? De ki pati li konpoze? Se poutèt sa, nan dènye konferans DevOops ete yo, mwen te mande moun ki te responsab travay sa a:

  • Nikolay Molchanov - direktè teknik JUG Ru Group;
  • Vladimir Krasilshchik se yon pwogramè Java pragmatik k ap travay sou backend la (ou ta ka wè tou rapò li nan konferans Java nou an);
  • Artyom Nikonov responsab pou tout difizyon videyo nou yo.

By wout la, nan konferans yo otòn-ivè nou pral sèvi ak yon vèsyon amelyore nan menm platfòm la - anpil lektè habra yo ap toujou itilizatè li yo.

Devlope yon platfòm videyo nan 90 jou

Foto a gwo

— Ki konpozisyon ekip la te genyen?

Nikolay Molchanov: Nou gen yon analis, yon designer, yon tèsteur, twa front-enders, ak back-end. Epi, nan kou, yon espesyalis ki gen fòm T!

— Ki jan pwosesis la te sanble an jeneral?

Nikolay: Jiska mitan mwa mas, nou pa te gen anyen ki pare pou sou entènèt ditou. Ak sou 15 mas, tout Carousel sou entènèt la te kòmanse vire. Nou mete plizyè depo, planifye, diskite sou achitekti debaz la epi nou fè tout bagay nan twa mwa.

Sa a, nan kou, te pase nan etap klasik yo nan planifikasyon, achitekti, seleksyon karakteristik, vòt pou karakteristik sa yo, politik pou karakteristik sa yo, konsepsyon yo, devlopman, tès yo. Kòm yon rezilta, sou 6 jen, nou te woule tout bagay nan pwodiksyon an. TechTrain. Te gen 90 jou pou tout bagay.

— Èske nou te rive akonpli sa nou te angaje nan?

Nikolay: Depi kounye a nou ap patisipe nan konferans DevOops sou entènèt la, sa vle di li te travay. Mwen pèsonèlman angaje nan bagay prensipal la: mwen pral pote kliyan yon zouti ak ki yo ka fè yon konferans sou entènèt.

Defi a se te sa a: ban nou yon zouti ak ki nou ka difize konferans nou yo bay moun ki gen tikè.

Tout planifikasyon te divize an plizyè etap, ak tout karakteristik (apeprè 30 mondyal) yo te divize an 4 kategori:

  • sa nou pral definitivman fè (nou pa ka viv san yo),
  • sa nou pral fè dezyèmman,
  • sa nou pap janm fè,
  • e sa nou p'ap janm fè.

Nou te fè tout karakteristik yo soti nan de premye kategori yo.

— Mwen konnen yo te kreye yon total de 600 pwoblèm JIRA. Nan twa mwa, ou te fè 13 mikwosèvis, e mwen sispèk ke yo te ekri pa sèlman nan Java. Ou te itilize diferan teknoloji, ou gen de gwoup Kubernetes nan twa zòn disponiblite ak 5 kouran RTMP nan Amazon.

Ann gade kounye a chak eleman nan sistèm nan separeman.

Difizyon

— Ann kòmanse ak lè nou deja gen yon imaj videyo, epi li transmèt nan kèk sèvis. Artyom, di nou kijan difizyon sa a rive?

Artyom Nikonov: Konplo jeneral nou an sanble sa a: imaj ki soti nan kamera a -> chanm kontwòl nou an -> lokal sèvè RTMP -> Amazon -> jwè videyo. Plis detay ekri sou li sou Habré nan mwa jen.

An jeneral, gen de fason mondyal pou fè sa: swa sou pyès ki nan konpitè oswa ki baze sou solisyon lojisyèl. Nou te chwazi wout lojisyèl an paske li pi fasil nan ka moun ki pale lwen. Li pa toujou posib pou pote pyès ki nan konpitè nan yon oratè nan yon lòt peyi, men livrezon lojisyèl nan oratè a sanble pi fasil ak plis serye.

Soti nan yon pwen de vi pyès ki nan konpitè, nou gen yon sèten kantite kamera (nan estidyo nou yo ak nan oratè aleka), yon sèten kantite kontwòl remote nan estidyo a, ki pafwa gen yo dwe repare dwa anba tab la pandan emisyon an.

Siyal ki soti nan aparèy sa yo antre nan òdinatè ak kat kaptire, kat antre/sòti, ak kat son. Gen siyal yo melanje ak reyini nan layouts:

Devlope yon platfòm videyo nan 90 jou
Egzanp yon layout pou 4 moun kap pale

Devlope yon platfòm videyo nan 90 jou
Egzanp yon layout pou 4 moun kap pale

Pli lwen, difizyon kontinyèl yo bay ak èd nan twa òdinatè: gen yon sèl machin prensipal ak yon pè nan moun k ap travay nan vire. Premye òdinatè a kolekte premye rapò a, dezyèm lan - repo a, premye a - pwochen rapò a, dezyèm lan - pwochen repo a, ak sou sa. Ak machin prensipal la melanje premye a ak dezyèm lan.

Sa a kreye yon kalite triyang, epi si nenpòt nan nœuds sa yo echwe, nou ka byen vit epi san pèt nan bon jan kalite kontinye delivre kontni bay kliyan yo. Nou te gen yon sitiyasyon konsa. Pandan premye semèn konferans yo, nou te fikse yon machin, nou te limen/éteint li. Moun yo sanble yo kontan ak rezistans nou an.

Apre sa, kouran ki soti nan òdinatè yo ale nan yon sèvè lokal, ki gen de travay: wout kouran RTMP ak sovgad dosye. Se konsa, nou gen plizyè pwen anrejistreman. Lè sa a, kouran videyo yo voye nan pati nan sistèm nou an ki bati sou sèvis Amazon SaaS. Nou itilize MediaLive,S3,CloudFront.

Nikolay: Kisa k ap pase la anvan videyo a rive nan odyans lan? Ou dwe koupe li yon jan kanmenm, dwa?

Artyom: Nou konprese videyo a sou pati nou epi voye li nan MediaLive. Nou lanse transkodeur la. Yo transkode videyo an tan reyèl nan plizyè rezolisyon pou moun ka gade yo sou telefòn yo, atravè entènèt pòv nan peyi a, elatriye. Lè sa a, kouran sa yo koupe an fragman, se konsa pwotokòl la ap travay HLS. Nou voye yon playlist nan entèfas ki gen endikasyon sou moso sa yo.

— Èske nou itilize rezolisyon 1080p?

Artyom: Lajè videyo nou an se menm jan ak 1080p - 1920 piksèl, ak wotè a se yon ti kras mwens, foto a se pi long - gen rezon pou sa.

Jwè

— Artyom te dekri ki jan videyo a antre nan kouran, ki jan li distribye nan lis diferan pou rezolisyon ekran diferan, koupe an moso epi antre nan jwè a. Kolya, kounye a di m 'ki kalite jwè sa a ye, ki jan li konsome kouran an, poukisa HLS?

Nikolay: Nou gen yon jwè ke tout telespektatè konferans yo ka gade.

Devlope yon platfòm videyo nan 90 jou

Esansyèlman, sa a se yon anbalaj alantou bibliyotèk la hls.js, sou ki anpil lòt jwè yo ekri. Men, nou te bezwen fonksyonalite trè espesifik: rewining ak make kote moun nan ye, ki rapò li ap gade kounye a. Nou te bezwen tou pwòp layouts nou yo, tout kalite logo ak tout lòt bagay ki te bati nan avèk nou. Se poutèt sa, nou deside ekri pwòp bibliyotèk nou an (yon wrapper sou HLS) epi entegre li sou sit la.

Sa a se fonksyonalite rasin lan, kidonk li te aplike prèske an premye. Lè sa a, tout bagay te grandi alantou li.

An reyalite, atravè otorizasyon, jwè a resevwa nan backend la yon playlist ki gen lyen ki mennen nan moso ki gen rapò ak tan ak bon jan kalite, telechaje sa ki nesesè yo epi montre yo itilizatè a, fè kèk "majik" sou wout la.

Devlope yon platfòm videyo nan 90 jou
Egzanp Timeline

— Yon bouton bati dwat nan jwè a pou montre yon delè tout rapò...

Nikolay: Wi, nou imedyatman rezoud pwoblèm nan nan navigasyon itilizatè. Nan mitan mwa avril, nou te deside ke nou pa ta difize chak konferans nou yo sou yon sit entènèt separe, men nou ta konbine tout bagay sou yon sèl. Se konsa, itilizatè tikè Full Pass yo ka chanje lib ant diferan konferans: tou de emisyon an dirèk ak anrejistreman sa yo ki sot pase yo.

Epi pou fè li pi fasil pou itilizatè yo navige kouran aktyèl la epi chanje ant tracks, nou deside fè yon bouton "Tout emisyon" ak kanè orizontal pou chanje ant tracks ak rapò. Gen kontwòl klavye.

— Èske te gen nenpòt difikilte teknik ak sa a?

Nikolay: Yo te gen yon ba woulo liv kote yo te make pwen depa diferan rapò yo.

— Nan fen a, èske ou aplike mak sa yo sou ba woulo liv la anvan YouTube te fè yon bagay ki sanble?

Artyom: Lè sa a, yo te gen li nan beta. Li sanble ke sa a se yon karakteristik trè konplèks paske yo te pasyèlman teste li ak itilizatè yo pandan ane ki sot pase a. Epi kounye a li te rive vann.

Nikolay: Men, nou aktyèlman te vin vann li pi vit. Onètman, dèyè karakteristik senp sa a gen yon gwo kantite backend, frontend, kalkil ak matematik andedan jwè a.

Frontend

— Ann chèche konnen ki jan kontni sa a ke nou montre (kat diskou, moun ki pale, sit entènèt, orè) rive nan front end?

Vladimir Krasilshchik: Nou gen plizyè sistèm entèn IT. Gen yon sistèm kote tout rapò ak tout moun kap pale yo antre. Gen yon pwosesis kote yon oratè patisipe nan yon konferans. Oratè a soumèt yon aplikasyon, sistèm nan kaptire li, Lè sa a, gen yon tiyo sèten dapre ki rapò a se kreye.

Devlope yon platfòm videyo nan 90 jou
Men ki jan oratè a wè tiyo a

Sistèm sa a se devlopman entèn nou an.

Apre sa, ou bezwen bati yon orè nan rapò endividyèl yo. Kòm ou konnen, sa a se yon pwoblèm NP-difisil, men nou yon jan kanmenm rezoud li. Pou fè sa, nou lanse yon lòt eleman ki jenere yon orè epi telechaje li nan sèvis nwaj twazyèm pati Contentful la. La, tout bagay sanble yon tab kote gen jou konferans lan, nan jou yo gen plas tan, ak nan plas yo gen rapò, repo oswa aktivite parennaj. Se konsa, kontni an nou wè sitiye nan yon sèvis twazyèm pati. Ak travay la se transmèt li sou sit la.

Li ta sanble ke sit la se jis yon paj ak yon jwè, epi pa gen anyen konplike isit la. Eksepte li pa. Backend dèyè paj sa a ale nan Contentful, jwenn orè a soti nan la, jenere kèk objè epi voye li nan entèfas la. Sèvi ak yon koneksyon websocket, ke chak kliyan nan platfòm nou an fè, nou voye l 'yon aktyalizasyon nan orè a soti nan backend a entèfas la.

Ka reyèl: oratè a chanje travay dwat pandan konferans lan. Nou bezwen chanje badj konpayi anplwayè li a. Ki jan sa rive soti nan backend la? Yo voye yon aktyalizasyon bay tout kliyan atravè websocket la, ak Lè sa a, frontend nan tèt li rdesine delè a. Tout bagay sa yo rive san pwoblèm. Konbinezon sèvis nwaj la ak plizyè konpozan nou yo ban nou opòtinite pou jenere tout kontni sa a epi bay li devan.

Nikolay: Li enpòtan pou klarifye isit la ke sit nou an se pa yon aplikasyon SPA klasik. Sa a se tou de yon sit entènèt ki baze sou layout, rann ak yon SPA. Google aktyèlman wè sit sa a kòm rann HTML. Sa a se yon bon bagay pou SEO ak pou fournir kontni bay itilizatè a. Li pa tann pou 1,5 megabyte JavaScript chaje anvan li wè paj la, li imedyatman wè paj la deja rann, epi ou santi li chak fwa ou chanje rapò a. Tout bagay rive nan yon demi segonn, depi kontni an deja pare ak afiche nan plas la dwat.

— Ann trase yon liy anba tout sa ki anwo yo nan lis teknoloji yo. Tyoma te di ke nou gen 5 kouran Amazon, epi nou delivre videyo ak son la. Nou gen scripts bash la, nou itilize yo pou lanse ak konfigirasyon...

Artyom: Sa rive atravè AWS API a, gen anpil plis sèvis bò teknik la. Nou divize responsablite nou pou mwen delivre yo CloudFront, ak devlopè front-end ak back-end pran li soti nan la. Nou gen yon kantite atachman pwòp nou yo senplifye Layout nan kontni, ke nou Lè sa a, fè nan 4K, elatriye. Depi dat limit yo te trè sere, nou te fè li prèske nèt sou AWS.

— Lè sa a, tout bagay sa yo ale nan jwè a lè l sèvi avèk sistèm nan backend. Nou gen TypeScript, React, Next.JS nan jwè nou an. Ak sou backend la nou gen plizyè sèvis nan C#, Java, Spring Boot ak Node.js. Sa a se tout deplwaye lè l sèvi avèk Kubernetes lè l sèvi avèk enfrastrikti Yandex.Cloud.

Mwen vle tou sonje ke lè mwen te bezwen fè konesans ak platfòm la, li te tounen fasil: tout depo yo sou GitLab, tout bagay byen rele, tès yo ekri, gen dokiman. Sa vle di, menm nan mòd ijans, yo te pran swen bagay sa yo.

Kontrent biznis ak Analytics

— Nou vize 10 itilizatè ki baze sou kondisyon biznis yo. Li lè pou nou pale sou restriksyon biznis nou te genyen yo. Nou te oblije asire yon gwo kantite travay, asire konfòmite ak lwa sou prezèvasyon done pèsonèl yo. Ak ki lòt bagay?

Nikolay: Okòmansman, nou te kòmanse soti nan kondisyon videyo. Bagay ki pi enpòtan an se distribye depo videyo atravè mond lan pou livrezon rapid nan kliyan an. Gen lòt ki gen ladan rezolisyon 1080p, osi byen ke remonte, ki anpil lòt moun pa aplike nan mòd viv. Apre sa, nou te ajoute kapasite pou pèmèt vitès 2x, ak èd li ou ka "ratrape" ak ap viv la epi kontinye gade konferans lan an tan reyèl. Ak sou wout la, delè make fonksyonalite parèt. Anplis de sa, nou te dwe toleran fay epi kenbe tèt ak chaj la nan 10 koneksyon. Soti nan yon pwen de vi backend, sa a se apeprè 000 koneksyon miltipliye pa 10 demann pou chak rafrechi paj. Epi sa a se deja 000 RPS / sec. Byen yon ti kras nan.

— Èske te gen nenpòt lòt kondisyon pou yon "ekspozisyon vityèl" ak kanpe sou entènèt nan patnè?

Nikolay: Wi, sa a te dwe fè byen vit ak inivèsèl. Nou te gen jiska 10 konpayi patnè pou chak konferans, ak tout nan yo te dwe ranpli nan yon semèn oswa de. Sepandan, kontni yo diferan yon ti kras nan fòma. Men, yon motè modèl sèten te fè ki rasanble paj sa yo sou vole, ak nòmalman pa gen okenn patisipasyon devlopman plis.

— Te gen tou kondisyon pou analiz de opinyon an tan reyèl ak estatistik. Mwen konnen ke nou itilize Prometheus pou sa, men di nou an plis detay: ki kondisyon nou satisfè pou analytics, ak ki jan sa a aplike?

Nikolay: Okòmansman, nou gen kondisyon maketing pou kolekte pou tès A/B ak kolekte enfòmasyon yo nan lòd yo konprann ki jan yo byen delivre kontni an pi bon bay kliyan an nan lavni. Genyen tou kondisyon pou kèk analytics sou aktivite patnè ak analytics ke ou wè (kontwa vizit). Tout enfòmasyon yo kolekte an tan reyèl.

Nou ka bay enfòmasyon sa yo nan fòm total menm moun ki pale: konbyen moun ki t ap gade w nan yon sèten moman. An menm tan, pou respekte Lwa Federal 152, yo pa swiv kont pèsonèl ou ak done pèsonèl ou nan okenn fason.

Platfòm nan deja gen zouti maketing ak mezi nou yo pou mezire aktivite itilizatè an tan reyèl (ki gade ki dezyèm nan rapò a) yo nan lòd yo bati graf nan prezans nan rapò yo. Dapre done sa yo, rechèch ap fèt ki pral fè pwochen konferans yo pi byen.

Fwòd

— Èske nou gen mekanis anti-fwòd?

Nikolay: Akòz tan sere nan yon pwen de vi biznis, travay la pa te okòmansman fikse imedyatman bloke koneksyon ki pa nesesè. Si de itilizatè te konekte anba menm kont la, yo ka wè kontni an. Men, nou konnen konbyen opinyon similtane te gen nan yon sèl kont. Epi nou entèdi plizyè vyolatè patikilyèman move.

Vladimir: Pou kredi li, youn nan itilizatè yo entèdi konprann poukisa sa te rive. Li vini, li mande eskiz e li pwomèt pou l achte yon tikè.

— Pou tout bagay sa yo rive, ou dwe konplètman trase tout itilizatè yo soti nan antre jiska sòti, toujou konnen sa yo ap fè. Ki jan sistèm sa a travay?

Vladimir: Mwen ta renmen pale sou analytics ak estatistik, ke nou Lè sa a, analize pou siksè nan rapò a oswa Lè sa a, ka bay patnè yo. Tout kliyan yo konekte atravè yon koneksyon websocket ak yon gwoup backend espesifik. Li kanpe la hazelcast. Chak kliyan nan chak peryòd tan voye sa li ap fè ak ki tras li ap gade. Lè sa a, enfòmasyon sa a yo agrégées ak travay Hazelcast rapid epi voye tounen bay tout moun ki gade tracks sa yo. Nou wè nan kwen an konbyen moun ki la avèk nou kounye a.

Devlope yon platfòm videyo nan 90 jou

Se menm enfòmasyon an ki estoke nan Mongo epi ale nan lak done nou an, ki soti nan ki nou gen opòtinite pou bati yon graf ki pi enteresan. Kesyon an rive: konbyen itilizatè inik te wè rapò sa a? Nou ale nan postgres, gen ping nan tout moun ki te vini pa id rapò sa a. Nou kolekte, rasanble inik, epi kounye a nou ka konprann.

Nikolay: Men, an menm tan an, nou menm tou nou resevwa done an tan reyèl nan men Prometheus. Li mete kont tout sèvis Kubernetes, kont Kubernetes tèt li. Li kolekte absoliman tout bagay, epi ak Grafana nou ka bati nenpòt graf an tan reyèl.

Vladimir: Sou yon bò, nou telechaje sa a pou plis pwosesis OLAP. Ak pou OLTP, aplikasyon an telechaje tout bagay la nan Prometheus, Grafana ak graf yo menm konvèje!

- Sa a se ka a lè graf yo konvèje.

Chanjman dinamik

— Di nou ki jan chanjman dinamik yo dewoule: si rapò a te anile 6 minit anvan kòmansman an, ki sa ki chèn aksyon an? Ki tiyo ki travay?

Vladimir: Tiyo a trè kondisyonèl. Gen plizyè posiblite. Premye a se ke pwogram jenerasyon orè a te travay ak chanje orè a. Orè modifye a telechaje sou Contentful. Apre sa, backend la konprann ke gen chanjman pou konferans sa a nan Contentful, li pran li epi li rebati li. Tout bagay yo kolekte epi voye atravè websocket.

Dezyèm posiblite a, lè tout bagay rive nan yon vitès epè: editè a manyèlman chanje enfòmasyon an nan Contentful (lyen nan Telegram, prezantasyon oratè a, elatriye) ak lojik la menm travay kòm premye fwa a.

Nikolay: Tout bagay rive san rafrechi paj la. Tout chanjman rive absoliman san pwoblèm pou kliyan an. Menm bagay la tou ale pou chanje rapò. Lè lè a rive, rapò a ak koòdone chanje.

Vladimir: Epitou, gen limit tan pou kòmansman rapò nan delè a. Nan kòmansman an menm pa gen anyen. Men, si ou hove sourit ou sou bann wouj la, Lè sa a, nan kèk pwen, gras a direktè emisyon an, koupe ap parèt. Direktè a fikse kòmansman emisyon an kòrèk la, backend la pran chanjman sa a, kalkile lè kòmansman ak fen prezantasyon tout track la an akò ak orè konferans lan, voye l bay kliyan nou yo, epi jwè a trase koupe. Koulye a, itilizatè a ka fasilman navige nan kòmansman ak nan fen rapò a. Se te yon kondisyon biznis strik, trè pratik ak itil. Ou pa gaspiye tan jwenn tan aktyèl la kòmanse pou rapò a. Men, lè nou fè yon aperçu, li pral absoliman bèl bagay.

Deplwaman

— Mwen ta renmen poze kesyon sou deplwaman. Kolya ak ekip la te pase anpil tan nan kòmansman an pou mete sou pye tout enfrastrikti kote tout bagay ap dewoule pou nou. Di m, kisa tout bagay fèt?

Nikolay: Soti nan yon pwen de vi teknik, okòmansman nou te gen yon kondisyon pou pwodwi a yo dwe abstrè ke posib nan nenpòt machann. Vini nan AWS pou fè scripts Terraform espesyalman nan AWS, oswa espesyalman nan Yandex, oswa nan Azure, elatriye. pa t vrèman anfòm. Nou te oblije deplase yon kote nan kèk pwen.

Pou twa premye semèn yo, nou te toujou ap chèche yon fason pou fè sa pi byen. Kòm yon rezilta, nou te rive nan konklizyon ke Kubernetes nan ka sa a se tout bagay nou an, paske li pèmèt nou kreye sèvis otomatikman-echèl, oto-deplwaye, epi jwenn prèske tout sèvis soti nan bwat la. Natirèlman, tout sèvis yo te dwe resevwa fòmasyon pou travay ak Kubernetes, Docker, ak ekip la te dwe aprann tou.

Nou gen de grap. Tès ak pwodiksyon. Yo absoliman idantik an tèm de pyès ki nan konpitè ak anviwònman. Nou aplike enfrastrikti kòm kòd. Tout sèvis yo otomatikman woule nan twa anviwònman soti nan branch karakteristik, branch mèt, branch tès, ak GitLab lè l sèvi avèk yon tiyo otomatik. Sa a se maksimòm entegre nan GitLab, maksimòm entegre ak Elastic, Prometheus.

Nou jwenn opòtinite pou byen vit (pou backend la nan 10 minit, pou entèfas la nan 5 minit) dewoule chanjman nan nenpòt anviwònman ak tout tès, entegrasyon, fè tès fonksyonèl, tès entegrasyon sou anviwònman an, epi tou tès ak tès chaj sou. yon anviwònman tès apeprè menm bagay la ke nou vle jwenn nan pwodiksyon an.

Konsènan tès yo

— Ou teste prèske tout bagay, li difisil pou kwè ki jan ou te ekri tout bagay. Èske ou ka di nou sou tès backend yo: konbyen tout bagay ki kouvri, ki tès yo?

Vladimir: De kalite tès yo te ekri. Premye yo se tès eleman yo. Leve tès nivo aplikasyon sezon prentan tout antye ak baz nan Testcontainers. Sa a se yon tès nan pi wo nivo senaryo biznis yo. Mwen pa teste fonksyon yo. Nou sèlman teste kèk gwo bagay. Pou egzanp, dwa nan tès la, pwosesis la nan konekte nan yon itilizatè imite, demann itilizatè a pou tikè kote li ka ale, ak yon demann pou aksè pou gade kouran an. Senaryo itilizatè trè klè.

Apeprè menm bagay la aplike nan tès yo entegrasyon sa yo rele, ki aktyèlman kouri sou anviwònman an. An reyalite, lè pwochen deplwaman nan pwodiksyon an woule soti, reyèl senaryo debaz yo ap kouri tou nan pwodiksyon an. Menm koneksyon an, mande tikè, mande aksè nan CloudFront, tcheke kouran an vrèman konekte ak otorizasyon mwen, tcheke koòdone direktè a.

Nan moman sa a mwen gen apeprè 70 tès eleman ak sou 40 tès entegrasyon sou tablo. Kouvèti se trè pre 95%. Sa a se pou eleman yo, mwens pou entegrasyon yo, gen tou senpleman pa tèlman nesesè. Lè nou konsidere ke pwojè a enplike tout kalite jenerasyon kòd, sa a se yon endikatè trè bon. Pa te gen okenn lòt fason pou fè sa nou te fè nan twa mwa. Paske si nou te teste manyèlman, bay tèsteur nou an karakteristik, epi li ta jwenn pinèz epi retounen yo ba nou pou korije, Lè sa a, vwayaj sa a ale nan debogaj kòd la ta dwe trè long, epi nou pa ta respekte okenn dat limit.

Nikolay: Konvansyonèl, pote soti nan yon regresion sou platfòm la tout antye lè w ap chanje kèk fonksyon, ou bezwen chita ak pike tout kote pou de jou.

Vladimir: Se poutèt sa, li se yon gwo siksè ke lè mwen estime yon karakteristik, mwen di ke mwen bezwen 4 jou pou de plim senp ak 1 websocket, Kolya pèmèt li. Li deja abitye ak lefèt ke 4 jou sa yo gen ladan 2 kalite tès, ak Lè sa a, gen plis chans, li pral travay.

Nikolay: Mwen menm mwen gen 140 tès ekri: eleman + fonksyonèl, ki fè menm bagay la. Tout senaryo yo menm yo teste nan pwodiksyon, nan tès, ak nan pwodiksyon. Nou fèk ajoute tou tès UI debaz fonksyonèl. Nan fason sa a nou kouvri fonksyonalite ki pi fondamantal ki ka tonbe apa.

Vladimir: Natirèlman, li vo pale sou tès chaj. Li te nesesè yo teste platfòm la anba yon chaj ki toupre yon sèl la reyèl yo nan lòd yo konprann ki jan tout bagay ye, sa k ap pase ak lapen, sa k ap pase ak JVM yo, konbyen memwa ki aktyèlman nesesè.

— Mwen pa konnen si nou teste anyen sou bò kouran an, men mwen sonje ke te gen pwoblèm ak transkodè lè nou te fè reyinyon yo. Eske nou teste kouran yo?

Artyom: Teste iterativman. Òganize rankont. Nan pwosesis pou òganize rankont yo, te gen apeprè 2300 tikè JIRA. Sa yo se jis bagay jenerik ke moun te fè pou fè rankont. Nou te pran pati nan platfòm la sou yon paj apa pou rankont, ki te dirije pa Kirill Tolkachev (palekv).

Yo dwe onèt, pa te gen okenn gwo pwoblèm. Literalman yon koup de fwa nou te kenbe pinèz kachèt sou CloudFront, nou rezoud li byen vit - nou tou senpleman rkonfigire règleman yo. Te gen siyifikativman plis pinèz nan moun, nan sistèm difizyon yo sou sit la.

Pandan konferans yo, mwen te oblije ekri plizyè lòt ekspòtatè yo nan lòd yo kouvri plis ekipman ak sèvis. Nan kèk kote mwen te oblije fè pwòp bisiklèt mwen jis pou dedomajman pou metrik. Mond lan nan pyès ki nan konpitè AV (odyo-videyo) pa trè woz - ou gen kèk kalite "API" nan ekipman ke ou tou senpleman pa ka enfliyanse. Epi li lwen yon reyalite ke ou pral kapab jwenn enfòmasyon ou bezwen an. Fournisseurs pyès ki nan konpitè yo vrèman dousman, e li prèske enposib pou jwenn sa ou vle nan men yo. Nan total gen plis pase 100 moso pyès ki nan konpitè, yo pa bay sa ou bezwen, epi ou ekri ekspòtatè etranj ak redondants, gras a ki ou ka omwen yon jan kanmenm debogaj sistèm nan.

Ekipman

— Mwen sonje ki jan anvan kòmansman konferans yo nou te achte pasyèlman ekipman adisyonèl.

Artyom: Nou te achte òdinatè, laptops, ak pake batri. Nan moman sa a nou ka viv san kouran pou 40 minit. Nan mwa jen te gen gwo tanpèt loraj nan Saint Petersburg - kidonk nou te gen yon blakawout konsa. An menm tan an, plizyè founisè vin jwenn nou ak lyen optik ki soti nan diferan pwen. Sa a se reyèlman 40 minit nan bilding D ', pandan ki nou pral gen limyè sou, son, kamera, elatriye k ap travay.

— Nou gen yon istwa ki sanble ak entènèt la. Nan biwo kote estidyo nou yo ye, nou trennen yon filè feròs ant planche yo.

Artyom: Nou gen 20 Gbit fib ant planche yo. Pli lwen sou planche yo, yon kote gen optik, yon kote pa gen okenn optik, men toujou gen mwens chanèl pase sa yo gigabit - nou kouri videyo sou yo ant tras nan konferans lan. An jeneral, li trè pratik pou travay sou pwòp enfrastrikti ou; ou ka raman fè sa nan konferans offline sou sit.

— Anvan mwen te travay nan JUG Ru Group, mwen te wè ki jan chanm pyès ki nan konpitè nan konferans offline yo te etabli lannwit lan, kote te gen yon gwo monitè ak tout mezi ou bati nan Grafana. Koulye a, gen tou yon chanm katye jeneral kote ekip devlopman an chita, ki pandan konferans lan ranje kèk pinèz ak devlope karakteristik. An menm tan an, gen yon sistèm siveyans ki parèt sou yon ekran gwo. Artyom, Kolya ak lòt mesye chita epi asire w ke tout bagay pa tonbe epi travay trè byen.

Kiryozite ak pwoblèm

— Ou te pale byen sou lefèt ke nou gen difizyon ak Amazon, gen yon jwè ak entènèt la, tout bagay yo ekri nan diferan lang pwogramasyon, tolerans fòt ak lòt kondisyon biznis yo bay, ki gen ladan yon kont pèsonèl ki sipòte pou antite legal ak moun, epi nou ka entegre ak yon moun ki itilize OAuth 2.0, gen anti-fwod, bloke itilizatè. Nou ka woule chanjman dinamik paske nou te fè li byen, epi li tout teste.

Mwen enterese konnen ki sa ki estrawòdinè yo te enplike nan jwenn yon bagay te kòmanse. Èske te gen nenpòt sitiyasyon etranj lè ou te devlope yon backend, frontend, yon bagay fou te tounen soti epi ou pa t 'konprann kisa pou fè ak li?

Vladimir: Li sanble ke sa te rive sèlman pou twa dènye mwa yo. Chak jou. Kòm ou ka wè, tout cheve m 'te rale soti.

Devlope yon platfòm videyo nan 90 jou
Vladimir Krasilshchik apre 3 mwa, lè yon kalite jwèt te tounen soti epi pèsonn pa t 'konprann sa yo dwe fè ak li.

Chak jou te gen yon bagay tankou sa a, lè te gen yon moman konsa lè ou pran li epi chire cheve ou soti, oswa reyalize ke pa gen okenn lòt moun, epi sèlman ou ka fè li. Premye gwo evènman nou an te TechTrain. Sou 6 jen a 2 a.m. nou pa t 'ankò woule soti nan anviwònman pwodiksyon an, Kolya te woule li soti. Ak kont pèsonèl la pa t travay kòm yon sèvè otorizasyon lè l sèvi avèk OAuth2.0. Nou te tounen yon founisè OAuth2.0 pou konekte platfòm la ak li. Mwen te ap travay pou pwobableman 18 èdtan dwat, mwen gade òdinatè a epi yo pa t 'wè anyen, mwen pa t' konprann poukisa li pa t 'ap travay, ak Kolya gade nan kòd mwen an adistans, gade pou yon ensèk nan konfigirasyon prentan an. , te jwenn li, ak LC a te travay, ak nan pwodiksyon tou.

Nikolay: Ak yon èdtan anvan TechTrain lage a te pran plas.

Yon anpil nan zetwal yo te aliyen isit la. Nou te gen anpil chans paske nou te gen yon ekip super, epi tout moun te enspire pa lide fè li sou entènèt. Tout twa mwa sa yo nou te kondwi pa lefèt ke nou te "fè YouTube." Mwen pa t 'pèmèt tèt mwen chire cheve m' soti, men te di tout moun ke tout bagay ta travay deyò, paske an reyalite, tout bagay te kalkile depi lontan.

Konsènan pèfòmans

— Èske ou ka di m 'konbyen moun ki te sou sit la sou yon sèl track? Èske te gen nenpòt pwoblèm pèfòmans?

Nikolay: Pa te gen okenn pwoblèm pèfòmans, jan nou te deja di. Kantite maksimòm moun ki te patisipe nan yon rapò te 1300 moun, sa a se sou Heisenbug.

— Èske te gen nenpòt pwoblèm ak gade lokal yo? Epi èske li posib pou gen yon deskripsyon teknik ak dyagram sou fason li tout travay?

Nikolay: Nou pral fè yon atik sou sa pita.

Ou ka menm debogaj kouran lokalman. Yon fwa konferans yo te kòmanse, li te vin menm pi fasil, paske kouran pwodiksyon parèt ke nou ka gade tout tan an.

Vladimir: Jan mwen konprann li, devlopè front-end yo te travay lokalman ak mok, ak Lè sa a, depi lè a woule soti nan devs yo nan devan an tou kout (5 minit), pa gen okenn pwoblèm ak tcheke sa k ap pase ak sètifika yo.

— Tout bagay teste ak debogaj, menm lokalman. Sa vle di nou pral ekri yon atik ak tout karakteristik teknik yo, montre w, di w tout bagay ak dyagram, ki jan li te ye.

Vladimir: Ou ka pran li epi repete li.

- Nan 3 mwa.

Total

— Tout sa ki dekri ansanm son fre, konsidere ke li te fè pa yon ti ekip nan twa mwa.

Nikolay: Yon gwo ekip pa ta fè sa. Men, yon ti gwoup moun ki kominike byen sere ak byen youn ak lòt epi ki ka vini nan yon akò te kapab. Yo pa gen okenn kontradiksyon, achitekti a te envante nan de jou, te finalize epi li pa aktyèlman chanje. Gen yon fasilitasyon trè strik nan kondisyon biznis fèk ap rantre an tèm de anpile demann karakteristik ak chanjman.

— Ki sa ki te sou lis lòt travay ou yo lè konferans ete yo te deja fèt?

Nikolay: Pou egzanp, kredi. Liy k ap trennen sou videyo a, pop-ups nan kèk kote nan videyo a depann sou kontni an yo montre. Pa egzanp, oratè a vle poze yon kesyon bay odyans lan, epi yon vòt parèt sou ekran an, ki tounen nan do a ki baze sou rezilta vòt yo bay oratè a li menm. Gen kèk kalite aktivite sosyal nan fòm lan nan renmen, kè, evalyasyon nan rapò a pandan prezantasyon an tèt li, pou ke ou ka ranpli fidbak nan bon moman an san yo pa distrè pita pa fòm fidbak. Okòmansman tankou sa a.

Epi tou ajoute nan platfòm la tout antye, eksepte pou difizyon ak konferans, tou yon eta apre konferans. Sa yo se playlists (ki gen ladan sa yo konpile pa itilizatè), pètèt kontni ki soti nan lòt konferans sot pase yo, entegre, make, aksesib a itilizatè a, epi tou ki disponib pou gade sou sit entènèt nou an (live.jugru.org).

— Mesye, mèsi anpil pou repons ou yo!

Si pami lektè yo gen moun ki te patisipe nan konferans ete nou yo, tanpri pataje enpresyon w sou jwè a ak emisyon an. Ki sa ki te pratik, ki sa ki irite ou, ki sa ou ta renmen wè nan lavni?

Si ou enterese nan platfòm la epi ou vle wè li "nan batay", nou itilize li ankò sou nou an konferans otòn-ivè. Gen yon seri antye nan yo, kidonk gen prèske sètènman youn ki bon pou ou.

Sous: www.habr.com

Add nouvo kòmantè