Tengeneza jukwaa la video katika siku 90

Masika haya tulijikuta katika hali ya uchangamfu sana. Kwa sababu ya janga hili, ilionekana wazi kuwa mikutano yetu ya kiangazi ilihitaji kuhamishwa mkondoni. Na ili kuziendesha mtandaoni kwa ufanisi, suluhu za programu zilizotengenezwa tayari hazikufaa; tulihitaji kuandika vyetu. Na tulikuwa na miezi mitatu ya kufanya hivi.

Ni wazi kuwa imekuwa miezi mitatu ya kusisimua. Lakini kutoka nje sio dhahiri kabisa: jukwaa la mkutano wa mtandaoni ni nini? Inajumuisha sehemu gani? Kwa hivyo, mwisho wa mikutano ya majira ya joto ya DevOops, niliwauliza wale ambao waliwajibika kwa kazi hii:

  • Nikolay Molchanov - mkurugenzi wa kiufundi wa JUG Ru Group;
  • Vladimir Krasilshchik ni mtayarishaji programu wa Java anayefanya kazi kwenye mazingira ya nyuma (unaweza pia kuona ripoti zake kwenye mikutano yetu ya Java);
  • Artyom Nikonov anawajibika kwa utiririshaji wetu wote wa video.

Kwa njia, katika mikutano ya vuli-msimu wa baridi tutatumia toleo lililoboreshwa la jukwaa sawa - wasomaji wengi wa habra bado watakuwa watumiaji wake.

Tengeneza jukwaa la video katika siku 90

Picha ya jumla

- Ni muundo gani wa timu?

Nikolay Molchanov: Tuna mchambuzi, mbunifu, anayejaribu, watatu wa mbele, na wa nyuma. Na, bila shaka, mtaalamu wa T-umbo!

- Mchakato ulionekanaje kwa ujumla?

Nikolay: Hadi katikati ya Machi, hatukuwa na chochote tayari kwa mtandaoni hata kidogo. Na mnamo Machi 15, jukwa zima la mkondoni lilianza kuzunguka. Tulianzisha hifadhi kadhaa, tulipanga, tulijadili usanifu wa msingi na tulifanya kila kitu kwa miezi mitatu.

Hii, bila shaka, ilipitia hatua za classic za kupanga, usanifu, uteuzi wa kipengele, kupiga kura kwa vipengele hivyo, sera ya vipengele hivyo, muundo wao, maendeleo, kupima. Kama matokeo, mnamo Juni 6, tulisambaza kila kitu kwa uzalishaji. TechTrain. Kulikuwa na siku 90 kwa kila kitu.

- Je, tuliweza kutimiza kile tulichojitolea?

Nikolay: Kwa kuwa sasa tunashiriki katika mkutano wa DevOops mtandaoni, inamaanisha ulifanya kazi. Binafsi nilijitolea kwa jambo kuu: nitawaletea wateja chombo ambacho wanaweza kufanya mkutano wa mtandaoni.

Changamoto ilikuwa hii: tupe chombo ambacho tunaweza kutangaza mikutano yetu kwa wenye tikiti.

Mipango yote iligawanywa katika hatua kadhaa, na vipengele vyote (karibu 30 vya kimataifa) viligawanywa katika makundi 4:

  • ambayo kwa hakika tutafanya (hatuwezi kuishi bila wao),
  • ambayo tutafanya pili,
  • ambayo hatutawahi kufanya,
  • na ambayo hatutawahi kufanya.

Tulifanya vipengele vyote kutoka kwa makundi mawili ya kwanza.

- Ninajua kuwa jumla ya masuala 600 ya JIRA yaliundwa. Katika miezi mitatu, ulifanya huduma ndogo 13, na ninashuku kuwa hazikuandikwa kwenye Java tu. Ulitumia teknolojia tofauti, una makundi mawili ya Kubernetes katika maeneo matatu ya upatikanaji na mitiririko 5 ya RTMP huko Amazon.

Hebu sasa tuangalie kila sehemu ya mfumo kando.

Kutiririsha

- Wacha tuanze wakati tayari tunayo picha ya video, na inatumwa kwa huduma zingine. Artyom, tuambie jinsi utiririshaji huu hufanyika?

Artyom Nikonov: Mpango wetu wa jumla unaonekana kama hii: picha kutoka kwa kamera -> chumba chetu cha udhibiti -> seva ya RTMP ya ndani -> Amazon -> kicheza video. Maelezo zaidi aliandika juu yake juu ya Habre mnamo Juni.

Kwa ujumla, kuna njia mbili za kimataifa za kufanya hivi: ama kwa vifaa au kulingana na ufumbuzi wa programu. Tulichagua njia ya programu kwa sababu ni rahisi zaidi kwa wasemaji wa mbali. Si mara zote inawezekana kuleta maunzi kwa spika katika nchi nyingine, lakini kutoa programu kwa spika inaonekana rahisi na ya kuaminika zaidi.

Kutoka kwa mtazamo wa vifaa, tuna idadi fulani ya kamera (katika studio zetu na kwa wasemaji wa mbali), idadi fulani ya udhibiti wa kijijini katika studio, ambayo wakati mwingine inapaswa kurekebishwa chini ya meza wakati wa matangazo.

Mawimbi kutoka kwa vifaa hivi huingia kwenye kompyuta na kadi za kunasa, kadi za kuingiza/toleo na kadi za sauti. Huko ishara zimechanganywa na kukusanywa katika mpangilio:

Tengeneza jukwaa la video katika siku 90
Mfano wa mpangilio wa wasemaji 4

Tengeneza jukwaa la video katika siku 90
Mfano wa mpangilio wa wasemaji 4

Zaidi ya hayo, utangazaji unaoendelea hutolewa kwa msaada wa kompyuta tatu: kuna mashine moja kuu na jozi ya kazi kwa upande wake. Kompyuta ya kwanza inakusanya ripoti ya kwanza, ya pili - mapumziko, ya kwanza - ripoti inayofuata, ya pili - mapumziko ya pili, na kadhalika. Na mashine kuu inachanganya ya kwanza na ya pili.

Hii inaunda aina ya pembetatu, na ikiwa mojawapo ya nodi hizi itashindwa, tunaweza haraka na bila kupoteza ubora kuendelea kutoa maudhui kwa wateja. Tulikuwa na hali kama hiyo. Katika wiki ya kwanza ya mikutano, tulirekebisha mashine moja, tukaiwasha/kuzima. Watu wanaonekana kufurahishwa na ujasiri wetu.

Ifuatayo, mito kutoka kwa kompyuta huenda kwa seva ya ndani, ambayo ina kazi mbili: njia ya mito ya RTMP na hifadhi za rekodi. Kwa hivyo tuna alama nyingi za kurekodi. Mitiririko ya video kisha hutumwa kwa sehemu ya mfumo wetu uliojengwa kwenye huduma za Amazon SaaS. Tunatumia MediaLive,S3,CloudFront.

Nikolay: Ni nini hufanyika hapo kabla video kufikia hadhira? Lazima uikate kwa njia fulani, sawa?

Artyom: Tunakandamiza video kwa upande wetu na kuituma kwa MediaLive. Tunazindua transcoder huko. Wanapitisha msimbo wa video katika muda halisi hadi maazimio kadhaa ili watu waweze kuzitazama kwenye simu zao, kupitia mtandao duni nchini, na kadhalika. Kisha mito hii hukatwa vipande, hivi ndivyo itifaki inavyofanya kazi HLS. Tunatuma orodha ya kucheza kwenye sehemu ya mbele ambayo ina viashiria kwa vipande hivi.

Je, tunatumia azimio la 1080p?

Artyom: Upana wa video yetu ni sawa na saizi 1080p - 1920, na urefu ni kidogo kidogo, picha ni ndefu zaidi - kuna sababu za hili.

Mchezaji

- Artyom alielezea jinsi video inavyoingia kwenye mitiririko, jinsi inavyosambazwa katika orodha tofauti za kucheza kwa maazimio tofauti ya skrini, kukatwa vipande vipande na kuingia kwenye kicheza. Kolya, sasa niambie huyu ni mchezaji wa aina gani, anatumiaje mkondo, kwa nini HLS?

Nikolay: Tuna mchezaji ambaye watazamaji wote wa mkutano wanaweza kutazama.

Tengeneza jukwaa la video katika siku 90

Kimsingi, hii ni karatasi ya kuzunguka maktaba hls.js, ambayo wachezaji wengine wengi wameandikwa. Lakini tulihitaji utendakazi mahususi: kurejesha nyuma na kuweka alama mahali alipo, ni ripoti gani anayotazama kwa sasa. Pia tulihitaji mipangilio yetu wenyewe, kila aina ya nembo na kila kitu kingine ambacho kilijengwa ndani nasi. Kwa hivyo, tuliamua kuandika maktaba yetu wenyewe (karatasi juu ya HLS) na kuipachika kwenye wavuti.

Huu ndio utendakazi wa mizizi, kwa hivyo ilitekelezwa karibu kwanza. Na kisha kila kitu kilikua karibu nayo.

Kwa kweli, kupitia uidhinishaji, mchezaji hupokea kutoka upande wa nyuma orodha ya kucheza iliyo na viungo vya vipande vinavyohusiana na wakati na ubora, kupakua zinazohitajika na kuzionyesha kwa mtumiaji, akifanya "uchawi" fulani njiani.

Tengeneza jukwaa la video katika siku 90
Mfano wa ratiba

- Kitufe kimeundwa ndani ya kichezaji ili kuonyesha ratiba ya ripoti zote...

Nikolay: Ndiyo, mara moja tulitatua tatizo la urambazaji wa mtumiaji. Katikati ya Aprili, tuliamua kwamba hatutatangaza kila moja ya mikutano yetu kwenye tovuti tofauti, lakini tutachanganya kila kitu kwa moja. Ili watumiaji wa tiketi ya Full Pass waweze kubadili kwa uhuru kati ya mikutano tofauti: matangazo ya moja kwa moja na rekodi za zamani.

Na ili kurahisisha watumiaji kusogeza mkondo wa sasa na kubadili kati ya nyimbo, tuliamua kutengeneza kitufe cha "Matangazo Yote" na kadi za ripoti mlalo ili kubadilisha kati ya nyimbo na ripoti. Kuna udhibiti wa kibodi.

- Je, kulikuwa na matatizo yoyote ya kiufundi na hili?

Nikolay: Walikuwa na upau wa kusogeza ambapo sehemu za kuanzia za ripoti tofauti ziliwekwa alama.

- Mwishowe, je, ulitekeleza alama hizi kwenye upau wa kusogeza kabla YouTube haijafanya kitu kama hicho?

Artyom: Walikuwa nayo katika beta wakati huo. Inaonekana kama hiki ni kipengele changamano sana kwa sababu wamekuwa wakiijaribu kwa kiasi na watumiaji katika mwaka uliopita. Na sasa imefikia mauzo.

Nikolay: Lakini kwa kweli tulipata kuuza haraka. Kusema kweli, nyuma ya kipengele hiki rahisi kuna kiasi kikubwa cha backend, frontend, mahesabu na hisabati ndani ya mchezaji.

Mbele

- Hebu tuchunguze jinsi maudhui haya tunayoonyesha (kadi ya hotuba, spika, tovuti, ratiba) yanafika mwisho?

Vladimir Krasilshchik: Tuna mifumo kadhaa ya ndani ya IT. Kuna mfumo ambao ripoti zote na wasemaji wote huingizwa. Kuna mchakato ambao mzungumzaji hushiriki katika mkutano. Spika anawasilisha maombi, mfumo unaikamata, basi kuna bomba fulani kulingana na ambayo ripoti imeundwa.

Tengeneza jukwaa la video katika siku 90
Hivi ndivyo msemaji anavyoona bomba

Mfumo huu ni maendeleo yetu ya ndani.

Ifuatayo, unahitaji kuunda ratiba kutoka kwa ripoti za kibinafsi. Kama unavyojua, hili ni tatizo la NP-ngumu, lakini kwa namna fulani tunalitatua. Ili kufanya hivyo, tunazindua kipengee kingine kinachozalisha ratiba na kuipakia kwenye huduma ya wingu ya mtu wa tatu Contentful. Huko, kila kitu tayari kinaonekana kama meza ambayo kuna siku za mkutano, katika siku kuna nafasi za wakati, na katika nafasi kuna ripoti, mapumziko au shughuli za udhamini. Kwa hivyo maudhui tunayoona yanapatikana katika huduma ya watu wengine. Na kazi ni kuifikisha kwenye tovuti.

Inaweza kuonekana kuwa tovuti ni ukurasa tu na mchezaji, na hakuna chochote ngumu hapa. Ila sivyo. Mandhari nyuma ya ukurasa huu huenda kwa Kuridhika, hupata ratiba kutoka hapo, hutengeneza baadhi ya vitu na kuituma kwenye sehemu ya mbele. Kwa kutumia muunganisho wa soketi ya wavuti, ambayo kila mteja wa jukwaa letu hutengeneza, tunamtumia sasisho la ratiba kutoka sehemu ya nyuma hadi ya mbele.

Kesi halisi: mzungumzaji alibadilisha kazi wakati wa mkutano. Tunahitaji kubadilisha beji ya kampuni ya mwajiri wake. Je, hii inatokeaje kutoka kwa nyuma? Sasisho hutumwa kwa wateja wote kupitia soketi ya wavuti, na kisha sehemu ya mbele yenyewe huchora upya kalenda ya matukio. Haya yote hutokea bila mshono. Mchanganyiko wa huduma ya wingu na vipengele vyetu kadhaa hutupa fursa ya kuzalisha maudhui haya yote na kutoa mbele.

Nikolay: Ni muhimu kufafanua hapa kwamba tovuti yetu sio programu ya kawaida ya SPA. Hii ni tovuti inayotegemea mpangilio, iliyotolewa na SPA. Google inaona tovuti hii kama HTML iliyotolewa. Hii ni nzuri kwa SEO na kwa kuwasilisha maudhui kwa mtumiaji. Haisubiri hadi megabaiti 1,5 za JavaScript kupakia kabla ya kuona ukurasa, mara moja huona ukurasa ambao tayari umetolewa, na unaihisi kila wakati unapobadilisha ripoti. Kila kitu hutokea katika nusu ya pili, kwa kuwa maudhui tayari tayari na kutumwa mahali pazuri.

- Wacha tuchore mstari chini ya yote yaliyo hapo juu kwa kuorodhesha teknolojia. Tyoma alisema kuwa tuna mitiririko 5 ya Amazon, na tunawasilisha video na sauti huko. Tunayo maandishi ya bash hapo, tunayatumia kuzindua na kusanidi...

Artyom: Hii hutokea kupitia API ya AWS, kuna huduma nyingi zaidi za upande wa kiufundi huko. Tuligawanya majukumu yetu ili nifikishe CloudFront, na watengenezaji wa mbele na nyuma wanaichukua kutoka hapo. Tunayo idadi ya vifungo vyetu ili kurahisisha mpangilio wa maudhui, ambayo kisha tunatengeneza katika 4K, nk. Kwa kuwa tarehe za mwisho zilikuwa ngumu sana, tulifanya hivyo karibu kabisa kwenye AWS.

- Kisha yote haya huenda kwa mchezaji kwa kutumia mfumo wa nyuma. Tuna TypeScript, React, Next.JS kwenye kichezaji chetu. Na kwenye backend tuna huduma kadhaa katika C #, Java, Spring Boot na Node.js. Haya yote yanatumwa kwa kutumia Kubernetes kwa kutumia miundombinu ya Yandex.Cloud.

Pia ninataka kutambua kwamba wakati nilihitaji kufahamiana na jukwaa, ikawa rahisi: hazina zote ziko kwenye GitLab, kila kitu kinaitwa vizuri, vipimo vimeandikwa, kuna nyaraka. Hiyo ni, hata katika hali ya dharura, walishughulikia mambo kama hayo.

Vikwazo vya Biashara na Uchanganuzi

- Tulilenga watumiaji 10 kulingana na mahitaji ya biashara. Ni wakati wa kuzungumza juu ya vikwazo vya biashara ambavyo tulikuwa. Tulilazimika kuhakikisha mzigo mkubwa wa kazi, kuhakikisha kufuata sheria juu ya uhifadhi wa data ya kibinafsi. Na nini kingine?

Nikolay: Hapo awali, tulianza kutoka kwa mahitaji ya video. Jambo muhimu zaidi ni hifadhi ya video iliyosambazwa duniani kote kwa utoaji wa haraka kwa mteja. Nyingine ni pamoja na azimio la 1080p, pamoja na kurejesha nyuma, ambayo wengine wengi hawatekelezi katika hali ya moja kwa moja. Baadaye tuliongeza uwezo wa kuwezesha kasi ya 2x, kwa msaada wake unaweza "kupata" moja kwa moja na kuendelea kutazama mkutano kwa wakati halisi. Na njiani, utendaji wa kuashiria wakati ulionekana. Zaidi ya hayo, ilitubidi kustahimili makosa na kuhimili mzigo wa miunganisho 10. Kwa mtazamo wa nyuma, hii ni takriban miunganisho 000 iliyozidishwa na maombi 10 kwa kila ukurasa uonyeshaji upya. Na hii tayari ni 000 RPS/sec. Kidogo kabisa.

- Je, kulikuwa na mahitaji mengine yoyote ya "maonyesho ya kawaida" na stendi za mtandaoni za washirika?

Nikolay: Ndio, hii ilibidi ifanyike haraka na kwa ulimwengu wote. Tulikuwa na hadi kampuni 10 za washirika kwa kila mkutano, na zote zililazimika kukamilishwa baada ya wiki moja au mbili. Hata hivyo, maudhui yao yanatofautiana kidogo katika muundo. Lakini injini fulani ya kiolezo ilitengenezwa ambayo inakusanya kurasa hizi kwa kuruka, bila ushiriki zaidi wa maendeleo.

- Pia kulikuwa na mahitaji ya uchanganuzi wa maoni na takwimu za wakati halisi. Ninajua kuwa tunatumia Prometheus kwa hili, lakini tuambie kwa undani zaidi: ni mahitaji gani tunayotimiza kwa uchanganuzi, na hii inatekelezwaje?

Nikolay: Hapo awali, tuna mahitaji ya uuzaji kwa ajili ya kukusanya kwa ajili ya majaribio ya A/B na kukusanya taarifa ili kuelewa jinsi ya kuwasilisha vyema maudhui bora kwa mteja katika siku zijazo. Pia kuna mahitaji ya baadhi ya uchanganuzi kuhusu shughuli za washirika na takwimu unazoona (tembelea kaunta). Taarifa zote zinakusanywa kwa wakati halisi.

Tunaweza kutoa maelezo haya katika fomu iliyojumlishwa hata kwa wazungumzaji: ni watu wangapi walikuwa wakikutazama kwa wakati fulani. Wakati huo huo, kwa kuzingatia Sheria ya Shirikisho 152, akaunti yako ya kibinafsi na data ya kibinafsi hazifuatiwi kwa njia yoyote.

Mfumo tayari una zana za uuzaji na vipimo vyetu vya kupima shughuli za mtumiaji kwa wakati halisi (ambaye alitazama sekunde gani ya ripoti) ili kuunda grafu za mahudhurio kwenye ripoti. Kulingana na data hii, utafiti unafanywa ambao utafanya mikutano ijayo kuwa bora zaidi.

Ulaghai

- Je, tuna njia za kupambana na udanganyifu?

Nikolay: Kwa sababu ya muda mfupi kutoka kwa mtazamo wa biashara, kazi haikuwekwa ili kuzuia mara moja miunganisho isiyo ya lazima. Ikiwa watumiaji wawili waliingia chini ya akaunti moja, wanaweza kutazama yaliyomo. Lakini tunajua ni mitazamo mingapi kwa wakati mmoja kutoka kwa akaunti moja. Na tulipiga marufuku wakiukaji kadhaa hasidi.

Vladimir: Kwa sifa yake, mmoja wa watumiaji waliopigwa marufuku alielewa kwa nini hii ilitokea. Alikuja, akaomba msamaha na kuahidi kununua tiketi.

- Ili haya yote yafanyike, lazima ufuatilie kabisa watumiaji wote kutoka kwa ingizo hadi kutoka, kila wakati ujue wanachofanya. Je, mfumo huu unafanya kazi vipi?

Vladimir: Ningependa kuzungumza kuhusu uchanganuzi na takwimu, ambazo kisha tunachanganua kwa ajili ya kufaulu kwa ripoti au kisha tunaweza kuwapa washirika. Wateja wote wameunganishwa kupitia muunganisho wa soketi ya wavuti kwa nguzo maalum ya nyuma. Inasimama pale hazelcast. Kila mteja katika kila kipindi anatuma kile anachofanya na wimbo gani anatazama. Kisha maelezo haya yanajumlishwa kwa kutumia kazi za haraka za Hazelcast na kurejeshwa kwa kila mtu anayetazama nyimbo hizi. Tunaona kwenye kona ni watu wangapi sasa wako pamoja nasi.

Tengeneza jukwaa la video katika siku 90

Habari sawa huhifadhiwa ndani Mongo na huenda kwenye ziwa letu la data, ambalo tuna fursa ya kujenga grafu ya kuvutia zaidi. Swali linatokea: ni watumiaji wangapi wa kipekee waliotazama ripoti hii? Tunaenda postgres, kuna pings za watu wote waliokuja kwa id ya ripoti hii. Tulikusanya, tukakusanya za kipekee, na sasa tunaweza kuelewa.

Nikolay: Lakini wakati huo huo, tunapokea pia data ya wakati halisi kutoka kwa Prometheus. Imewekwa dhidi ya huduma zote za Kubernetes, dhidi ya Kubernetes yenyewe. Inakusanya kila kitu kabisa, na kwa Grafana tunaweza kuunda grafu zozote kwa wakati halisi.

Vladimir: Kwa upande mmoja, tunapakua hii kwa usindikaji zaidi wa OLAP. Na kwa OLTP, programu hupakua kitu kizima kwa Prometheus, Grafana na grafu hata huungana!

- Hii ndio kesi wakati grafu zinaungana.

Mabadiliko ya Nguvu

- Tuambie jinsi mabadiliko yanayobadilika yanavyotekelezwa: ikiwa ripoti ilighairiwa dakika 6 kabla ya kuanza, ni nini mlolongo wa vitendo? Bomba lipi linafanya kazi?

Vladimir: Bomba lina masharti sana. Kuna uwezekano kadhaa. Ya kwanza ni kwamba mpango wa kutengeneza ratiba ulifanya kazi na kubadilisha ratiba. Ratiba iliyorekebishwa imepakiwa kwa Contentful. Baada ya hapo mandhari ya nyuma inaelewa kuwa kuna mabadiliko ya mkutano huu katika Contentful, huchukua na kuijenga upya. Kila kitu kinakusanywa na kutumwa kupitia websocket.

Uwezekano wa pili, wakati kila kitu kinatokea kwa kasi ya kuvunja: mhariri hubadilisha kwa mikono habari katika Yaliyomo (kiungo cha Telegram, uwasilishaji wa msemaji, nk) na mantiki sawa hufanya kazi kama mara ya kwanza.

Nikolay: Kila kitu hufanyika bila kuonyesha upya ukurasa. Mabadiliko yote hutokea kwa urahisi kabisa kwa mteja. Vile vile huenda kwa kubadili ripoti. Wakati unakuja, ripoti na kiolesura hubadilika.

Vladimir: Pia, kuna vipunguzi vya muda vya kuanza kwa ripoti katika ratiba. Mwanzoni kabisa hakuna kitu. Na ikiwa unasukuma panya yako juu ya mstari mwekundu, basi wakati fulani, shukrani kwa mkurugenzi wa utangazaji, cutoffs itaonekana. Mkurugenzi huweka mwanzo sahihi wa utangazaji, mandhari ya nyuma huchukua mabadiliko haya, huhesabu saa za kuanza na mwisho za mawasilisho ya wimbo mzima kwa mujibu wa ratiba ya mkutano, huituma kwa wateja wetu, na mchezaji huchota vipunguzi. Sasa mtumiaji anaweza kuabiri kwa urahisi hadi mwanzo na mwisho wa ripoti. Ilikuwa hitaji kali la biashara, rahisi sana na muhimu. Hutapoteza muda kutafuta wakati halisi wa kuanza kwa ripoti. Na tunapofanya hakikisho, itakuwa nzuri kabisa.

Usambazaji

- Ningependa kuuliza kuhusu kupelekwa. Kolya na timu walitumia muda mwingi mwanzoni kuanzisha miundombinu yote ambayo kila kitu kinatokea kwa ajili yetu. Niambie, yote hayo yametengenezwa na nini?

Nikolay: Kwa mtazamo wa kiufundi, mwanzoni tulikuwa na hitaji la bidhaa kuwa dhahania iwezekanavyo kutoka kwa muuzaji yeyote. Njoo kwa AWS ili kutengeneza hati za Terraform haswa kutoka kwa AWS, au haswa kutoka kwa Yandex, au kutoka Azure, nk. haikufaa kabisa. Tulilazimika kuhamia mahali fulani wakati fulani.

Kwa wiki tatu za kwanza tulikuwa tukitafuta kila mara njia ya kufanya hili vizuri zaidi. Kwa hivyo, tulifikia hitimisho kwamba Kubernetes katika kesi hii ni kila kitu chetu, kwa sababu inaturuhusu kuunda huduma za kuongeza kiotomatiki, uwasilishaji wa kiotomatiki, na kupata karibu huduma zote nje ya boksi. Kwa kawaida, huduma zote zilipaswa kufunzwa kufanya kazi na Kubernetes, Docker, na timu ilibidi kujifunza pia.

Tuna makundi mawili. Mtihani na uzalishaji. Zinafanana kabisa katika suala la vifaa na mipangilio. Tunatekeleza miundombinu kama kanuni. Huduma zote husambazwa kiotomatiki katika mazingira matatu kutoka kwa matawi ya vipengele, matawi makuu, matawi ya majaribio na GitLab kwa kutumia bomba la kiotomatiki. Hii imeunganishwa kikamilifu katika GitLab, iliyounganishwa kwa kiwango kikubwa na Elastic, Prometheus.

Tunapata fursa ya haraka (kwa upande wa nyuma ndani ya dakika 10, kwa upande wa mbele ndani ya dakika 5) kuzindua mabadiliko kwa mazingira yoyote kwa majaribio yote, miunganisho, kufanya majaribio ya utendaji, majaribio ya ujumuishaji kwenye mazingira, na pia kujaribu na majaribio ya kubeba. mazingira ya mtihani takriban kitu sawa ambacho tunataka kupata katika uzalishaji.

Kuhusu vipimo

- Unajaribu karibu kila kitu, ni ngumu kuamini jinsi ulivyoandika kila kitu. Je, unaweza kutuambia kuhusu vipimo vya backend: ni kiasi gani kila kitu kinafunikwa, ni vipimo gani?

Vladimir: Aina mbili za majaribio zimeandikwa. Ya kwanza ni vipimo vya sehemu. Vipimo vya kiwango cha kuinua ya utumizi mzima wa majira ya kuchipua na uweke ndani Vyombo vya majaribio. Huu ni mtihani wa hali ya juu zaidi ya biashara. Sifanyi majaribio ya utendakazi. Tunajaribu vitu vikubwa tu. Kwa mfano, katika jaribio hilo, mchakato wa kuingia kwa mtumiaji unaigwa, ombi la mtumiaji la tikiti za mahali anapoweza kwenda, na ombi la ufikiaji wa kutazama mtiririko. Matukio ya wazi sana ya mtumiaji.

Takriban kitu kimoja kinatekelezwa katika kinachojulikana vipimo vya ushirikiano , ambayo kwa kweli huendesha kwenye mazingira. Kwa hakika, wakati uwekaji unaofuata katika uzalishaji unapotolewa, hali halisi za kimsingi pia zinaendelea katika uzalishaji. Kuingia sawa, kuomba tikiti, kuomba ufikiaji wa CloudFront, kuangalia kama mtiririko unaunganishwa na ruhusa zangu, kuangalia kiolesura cha mkurugenzi.

Kwa sasa nina vipimo vya sehemu 70 na vipimo 40 vya ujumuishaji kwenye ubao. Chanjo iko karibu sana na 95%. Hii ni kwa sehemu, chini ya zile za ujumuishaji, hazihitajiki sana. Kwa kuzingatia kwamba mradi unahusisha kila aina ya kizazi cha kanuni, hii ni kiashiria kizuri sana. Hakukuwa na njia nyingine ya kufanya tulichofanya kwa muda wa miezi mitatu. Kwa sababu ikiwa tungejaribu wenyewe, tukitoa vipengele kwa anayejaribu, na angepata hitilafu na kuzirejesha kwetu ili zirekebishwe, basi safari hii ya kwenda na kurudi ili kutatua msimbo itakuwa ndefu sana, na hatungetimiza makataa yoyote.

Nikolay: Kwa kawaida, ili kutekeleza urejeshaji kwenye jukwaa zima wakati wa kubadilisha kazi fulani, unahitaji kukaa na kupiga kila mahali kwa siku mbili.

Vladimir: Kwa hiyo, ni mafanikio makubwa kwamba ninapokadiria kipengele, nasema kwamba ninahitaji siku 4 kwa kalamu mbili rahisi na 1 websocket, Kolya inaruhusu. Tayari amezoea ukweli kwamba siku hizi 4 ni pamoja na aina 2 za vipimo, na kisha, uwezekano mkubwa, utafanya kazi.

Nikolay: Pia nina vipimo 140 vilivyoandikwa: sehemu + kazi, ambayo hufanya kitu kimoja. Matukio yote sawa yanajaribiwa katika uzalishaji, katika majaribio, na katika uzalishaji. Pia hivi majuzi tuliongeza majaribio ya msingi ya UI yanayofanya kazi. Kwa njia hii tunashughulikia utendakazi wa kimsingi zaidi ambao unaweza kusambaratika.

Vladimir: Bila shaka, inafaa kuzungumza juu ya vipimo vya mzigo. Ilikuwa ni lazima kupima jukwaa chini ya mzigo karibu na moja halisi ili kuelewa jinsi kila kitu kilivyo, kinachotokea na Sungura, kinachotokea na JVM, ni kumbukumbu ngapi inahitajika kweli.

- Sijui kwa uhakika ikiwa tunajaribu chochote kwenye upande wa mkondo, lakini nakumbuka kuwa kulikuwa na shida na viboreshaji wakati tulipokutana. Je, tumejaribu mito?

Artyom: Ilijaribiwa mara kwa mara. Kuandaa mikutano. Katika mchakato wa kuandaa mikutano, kulikuwa na takriban tikiti 2300 za JIRA. Haya ni mambo ya kawaida ambayo watu walifanya ili kufanya mikutano. Tulichukua sehemu za jukwaa kwenye ukurasa tofauti kwa mikutano, ambayo iliendeshwa na Kirill Tolkachev (talkkv).

Kusema kweli, hakukuwa na matatizo makubwa. Mara kadhaa tulipopata hitilafu za kuweka akiba kwenye CloudFront, tuliitatua haraka sana - tulisanidi upya sera. Kulikuwa na hitilafu zaidi kwa watu, katika mifumo ya utiririshaji kwenye tovuti.

Wakati wa makongamano, ilibidi niandike wasafirishaji kadhaa zaidi ili kufidia vifaa na huduma zaidi. Katika sehemu zingine ilibidi nitengeneze baiskeli zangu kwa ajili ya vipimo tu. Ulimwengu wa vifaa vya AV (sauti-video) sio mzuri sana - una aina fulani ya "API" ya vifaa ambayo huwezi kushawishi. Na ni mbali na ukweli kwamba utaweza kupata habari unayohitaji. Wauzaji wa vifaa ni polepole sana, na karibu haiwezekani kupata unachotaka kutoka kwao. Kwa jumla kuna vipande zaidi ya 100 vya vifaa, hazirudishi unachohitaji, na unaandika wauzaji wa ajabu na wasio na maana, shukrani ambayo unaweza angalau kwa namna fulani kurekebisha mfumo.

ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅

- Nakumbuka jinsi kabla ya kuanza kwa mikutano tulinunua vifaa vya ziada.

Artyom: Tulinunua kompyuta, kompyuta za mkononi, na vifurushi vya betri. Kwa sasa tunaweza kuishi bila umeme kwa dakika 40. Mnamo Juni kulikuwa na dhoruba kali huko St. Petersburg - kwa hivyo tulikuwa na giza kama hilo. Wakati huo huo, watoa huduma kadhaa wanakuja kwetu na viungo vya macho kutoka kwa pointi tofauti. Hizi ni dakika 40 za muda wa chini wa ujenzi, wakati ambapo tutakuwa na taa, sauti, kamera, nk.

- Tuna hadithi sawa na Mtandao. Katika ofisi ambayo studio zetu ziko, tulikokota wavu mkali kati ya sakafu.

Artyom: Tuna Gbit 20 za nyuzi kati ya sakafu. Zaidi ya sakafu, mahali fulani kuna optics, mahali fulani hakuna optics, lakini bado kuna chaneli chache kuliko zile za gigabit - tunaendesha video juu yao kati ya nyimbo za mkutano. Kwa ujumla, ni rahisi sana kufanya kazi kwenye miundombinu yako mwenyewe; mara chache unaweza kufanya hivyo kwenye mikutano ya nje ya mtandao kwenye tovuti.

- Kabla sijafanya kazi katika Kikundi cha JUG Ru, niliona jinsi vyumba vya maunzi kwenye mikutano ya nje ya mtandao vilivyowekwa mara moja, ambapo kulikuwa na kifuatiliaji kikubwa chenye vipimo vyote unavyounda Grafana. Sasa pia kuna chumba cha makao makuu ambamo timu ya ukuzaji huketi, ambayo wakati wa mkutano hurekebisha hitilafu kadhaa na kukuza vipengele. Wakati huo huo, kuna mfumo wa ufuatiliaji unaoonyeshwa kwenye skrini kubwa. Artyom, Kolya na wavulana wengine huketi na kuhakikisha kwamba yote hayaanguka na hufanya kazi kwa uzuri.

Udadisi na matatizo

- Ulizungumza vizuri juu ya ukweli kwamba tuna utiririshaji na Amazon, kuna kicheza wavuti, kila kitu kimeandikwa kwa lugha tofauti za programu, uvumilivu wa makosa na mahitaji mengine ya biashara hutolewa, pamoja na akaunti ya kibinafsi inayotumika kwa vyombo vya kisheria na watu binafsi, na tunaweza kujumuika na mtu anayetumia OAuth 2.0, kuna kupinga ulaghai, kuzuia watumiaji. Tunaweza kuzindua mabadiliko kwa nguvu kwa sababu tulifanya vizuri, na yote yamejaribiwa.

Ninavutiwa kujua ni mambo gani yasiyo ya kawaida yalihusika katika kuanzisha jambo. Je, kumekuwa na hali yoyote ya ajabu wakati ulikuwa ukitengeneza backend, frontend, kitu cha mambo kiligeuka na haukuelewa nini cha kufanya nacho?

Vladimir: Inaonekana kwangu kwamba hii imetokea tu kwa miezi mitatu iliyopita. Kila siku. Kama unavyoona, nywele zangu zote zimetolewa.

Tengeneza jukwaa la video katika siku 90
Vladimir Krasilshchik baada ya miezi 3, wakati aina fulani ya mchezo iliibuka na hakuna mtu aliyeelewa nini cha kufanya nayo.

Kila siku kulikuwa na kitu kama hiki, wakati kulikuwa na wakati kama huo unapoichukua na kubomoa nywele zako, au kugundua kuwa hakuna mtu mwingine, na wewe tu unaweza kuifanya. Tukio letu kubwa la kwanza lilikuwa TechTrain. Mnamo Juni 6 saa 2 asubuhi tulikuwa bado hatujaweka mazingira ya uzalishaji, Kolya alikuwa akiifungua. Na akaunti ya kibinafsi haikufanya kazi kama seva ya uidhinishaji kwa kutumia OAuth2.0. Tuliigeuza kuwa mtoa huduma wa OAuth2.0 ili kuunganisha jukwaa nayo. Nilikuwa nikifanya kazi kwa labda masaa 18 moja kwa moja, niliangalia kompyuta na sikuona chochote, sikuelewa kwa nini haifanyi kazi, na Kolya aliangalia nambari yangu kwa mbali, akatafuta mdudu katika usanidi wa Spring. , iliipata, na LC ilifanya kazi, na katika uzalishaji pia.

Nikolay: Na saa moja kabla ya TechTrain kutolewa kulifanyika.

Nyota nyingi zilipangwa hapa. Tulikuwa na bahati sana kwa sababu tulikuwa na timu bora, na kila mtu alifurahishwa na wazo la kuifanya mtandaoni. Miezi hii yote mitatu tuliongozwa na ukweli kwamba "tulitengeneza YouTube." Sikujiruhusu kubomoa nywele zangu, lakini niliambia kila mtu kuwa kila kitu kitafanya kazi, kwa sababu kwa kweli, kila kitu kilikuwa kimehesabiwa zamani.

Kuhusu utendaji

Unaweza kuniambia ni watu wangapi walikuwa kwenye tovuti kwenye wimbo mmoja? Kulikuwa na masuala yoyote ya utendaji?

Nikolay: Hakukuwa na matatizo ya utendaji, kama tulivyokwisha sema. Idadi ya juu zaidi ya watu waliohudhuria ripoti moja ilikuwa watu 1300, hii ni kwenye Heisenbug.

- Je, kulikuwa na matatizo yoyote na utazamaji wa ndani? Na inawezekana kuwa na maelezo ya kiufundi na michoro ya jinsi yote inavyofanya kazi?

Nikolay: Tutafanya makala kuhusu hili baadaye.

Unaweza hata kutatua mitiririko ndani ya nchi. Mara tu mikutano ilipoanza, ikawa rahisi zaidi, kwa sababu mitiririko ya uzalishaji ilionekana ambayo tunaweza kutazama kila wakati.

Vladimir: Kama ninavyoelewa, watengenezaji wa mbele walifanya kazi ndani ya nchi na kejeli, na kisha, kwa kuwa wakati wa kuzindua kwa watengenezaji wa mbele pia ni mfupi (dakika 5), ​​hakuna shida na kuangalia kinachoendelea na vyeti.

- Kila kitu kinajaribiwa na kutatuliwa, hata ndani ya nchi. Hii inamaanisha tutaandika makala yenye vipengele vyote vya kiufundi, kukuonyesha, kukuambia kila kitu na michoro, jinsi ilivyokuwa.

Vladimir: Unaweza kuichukua na kurudia.

- Katika miezi 3.

Jumla ya

- Kila kitu kilichoelezewa pamoja kinasikika vizuri, kwa kuzingatia kwamba kilifanywa na timu ndogo katika miezi mitatu.

Nikolay: Timu kubwa isingefanya hivi. Lakini kikundi kidogo cha watu ambao huwasiliana kwa karibu na vizuri na kila mmoja na wanaweza kufikia makubaliano. Hawana utata wowote, usanifu ulivumbuliwa kwa siku mbili, ulikamilishwa na haujabadilika. Kuna uwezeshaji mkali sana wa mahitaji ya biashara zinazoingia katika suala la kujumlisha maombi ya vipengele na mabadiliko.

- Ni nini kilikuwa kwenye orodha yako ya kazi zaidi wakati mikutano ya kiangazi ilikuwa tayari imefanyika?

Nikolay: Kwa mfano, mikopo. Mistari inayotambaa kwenye video, madirisha ibukizi katika baadhi ya maeneo kwenye video kulingana na maudhui yanayoonyeshwa. Kwa mfano, mzungumzaji anataka kuuliza swali kwa watazamaji, na kura inatokea kwenye skrini, ambayo inarudi nyuma kulingana na matokeo ya kupiga kura kwa msemaji mwenyewe. Aina fulani ya shughuli za kijamii katika mfumo wa kupenda, mioyo, ukadiriaji wa ripoti wakati wa uwasilishaji yenyewe, ili uweze kujaza maoni kwa wakati unaofaa bila kukengeushwa baadaye na fomu za maoni. Awali kama hii.

Na pia kuongeza kwenye jukwaa zima, isipokuwa kwa utiririshaji na mkutano, pia hali ya baada ya mkutano. Hizi ni orodha za kucheza (pamoja na zile zilizotungwa na watumiaji), ikiwezekana maudhui kutoka kwa mikutano mingine iliyopita, iliyojumuishwa, iliyo na lebo, inayoweza kufikiwa na mtumiaji, na inapatikana pia kwa kutazamwa kwenye tovuti yetu (live.jugru.org).

- Guys, asante sana kwa majibu yako!

Ikiwa kati ya wasomaji kuna wale waliohudhuria mikutano yetu ya majira ya joto, tafadhali shiriki maoni yako ya mchezaji na utangaza. Ni nini kilikuwa rahisi, ni nini kilikukasirisha, ungependa kuona nini katika siku zijazo?

Ikiwa una nia ya jukwaa na unataka kuiona "katika vita", tunaitumia tena kwenye yetu mikutano ya vuli-baridi. Kuna anuwai nzima, kwa hivyo karibu kuna moja ambayo inakufaa.

Chanzo: mapenzi.com

Kuongeza maoni