Mbinu isiyo na seva ya ukuzaji wa haraka wa huduma ya video inayofanya kazi

Mbinu isiyo na seva ya ukuzaji wa haraka wa huduma ya video inayofanya kazi

Ninafanya kazi katika utaftaji, ambapo kanuni kuu inaweza kuelezewa na kifungu "uza sana, fanya haraka." Kadiri tunavyofanya haraka, ndivyo tutakavyopata mapato zaidi. Na, ni kuhitajika kuwa kila kitu hufanya kazi si kwa magongo na snot, lakini kwa kiwango cha kukubalika cha ubora. Nitakuambia kuhusu uzoefu wangu wakati ilikuwa muhimu kuendeleza huduma ya utangazaji kwa muda mfupi.

Imetolewa: akaunti ya mizizi kwenye AWS, hakuna vikwazo juu ya uchaguzi wa safu ya teknolojia, backend moja, na mwezi mmoja kwa maendeleo.

Kazi: tekeleza huduma ya utangazaji ambapo watumiaji wanapakia kutoka video moja hadi nne ya kudumu kutoka sekunde moja hadi nne, ambayo ni iliyopachikwa katika mfululizo wa video asili.

uamuzi

Kuandika huduma yako ya baiskeli kwa muda mfupi sio wazo nzuri. Kwa kuongeza, ili huduma iweze kukabiliana na mzigo na kwa kila mtu kupokea video inayotamaniwa, miundombinu itahitajika. Na ikiwezekana sio kwa lebo ya bei kutoka kwa ndege. Kwa hivyo, tunazingatia mara moja suluhisho zilizotengenezwa tayari na ubinafsishaji mdogo.

Suluhisho la kawaida la kufanya kazi na video ni FFmpeg, shirika la kiweko la jukwaa ambalo, kupitia hoja, hukuruhusu kukata na kuzidisha sauti. Kilichobaki kufanya ni kuandika kanga na kuifungua maishani. Tunaandika mfano unaounganisha video mbili pamoja, na ... furaha huanza. Maktaba inategemea .NET Core 2, inapaswa kuendeshwa kwa mashine yoyote ya mtandaoni, kwa hivyo tunachukua mfano wa AWS EC2 na kila kitu kitafanya kazi.

Maandishi yaliyofichwahapana, haitafanya kazi
.
Ingawa FFmpeg hurahisisha kazi, kwa suluhu inayofanya kazi kweli unahitaji kuunda mfano wa EC2 na kubuni miundombinu ya mtandao kwa ajili yake, ikiwa ni pamoja na Kisawazisha cha Mzigo. Kazi rahisi ya kupeleka kutoka mwanzo inakuwa "kidogo" ngumu zaidi, na miundombinu huanza kudai pesa mara moja - kila saa kiasi cha wakati wa kukimbia hutolewa kutoka kwa akaunti ya mteja.

Huduma yetu haihusishi michakato ya Muda Mrefu, haihitaji hifadhidata kubwa na mnene ya uhusiano, na inafaa kikamilifu katika usanifu unaotegemea tukio na msururu wa simu za huduma ndogo. Suluhisho linajipendekeza - tunaweza kuachana na EC2 na kutekeleza programu-tumizi isiyo na seva, kama vile Kirekebisha Picha cha kawaida kulingana na AWS Lambda.

Kwa njia, licha ya kutopenda dhahiri kwa watengenezaji wa AWS kwa .NET, wanaunga mkono NET Core 2.1 kama wakati wa kukimbia, ambayo hutoa fursa kamili za maendeleo.

Na cherry kwenye keki - AWS hutoa huduma tofauti kwa kufanya kazi na faili za video - AWS Elemental MediaConvert.

Kiini cha kazi ni rahisi sana: tunachukua kiungo cha S3 kwa video inayotoka, tunaandika kupitia AWS Console, .NET SDK au kwa urahisi JSON tunachotaka kufanya na video na piga huduma. Yenyewe hutumia foleni za kuchakata maombi yanayoingia, hupakia matokeo kwa S3 yenyewe na, muhimu zaidi, hutoa Tukio la CloudWatch kwa kila mabadiliko ya hali. Hii inaturuhusu kutekeleza vichochezi vya lambda ili kukamilisha usindikaji wa video.

Mbinu isiyo na seva ya ukuzaji wa haraka wa huduma ya video inayofanya kazi
Hivi ndivyo usanifu wa mwisho unavyoonekana:

Sehemu ya nyuma yote imewekwa katika lambdas mbili. Nyingine ni ya kuzungusha video za wima, kwani kazi kama hiyo haiwezi kufanywa kwa njia moja.

Tutaweka sehemu ya mbele katika mfumo wa ombi la SPA lililoandikwa kwa JS na kukusanywa kupitia pug kwenye ndoo ya umma ya S3. Ili kupakua video zenyewe, hatuhitaji msimbo wowote wa seva - tunahitaji tu kufungua sehemu za mwisho za REST ambazo S3 hutupa. Jambo pekee ni usisahau kusanidi sera na CORS.

Pitfalls

  • AWS MediaConvert, kwa sababu isiyojulikana, hutumika tu sauti kwa kila kipande cha video kando, lakini tunahitaji wimbo wa furaha kutoka kwa skrini nzima.
  • Video za wima zinahitaji kuchakatwa kando. AWS haipendi baa nyeusi na huweka rollers kwa 90 °.

Rink rahisi ya skating

Licha ya uzuri wote wa Uraia, unahitaji kufuatilia kile kinachohitajika kufanywa na video: gundi au kuongeza sauti kwenye mlolongo wa video uliomalizika. Kwa bahati nzuri, MediaConvert inasaidia kupitisha metadata kupitia Kazi zake, na tunaweza kutumia bendera rahisi kila wakati ya fomu ya "isMasterSoundJob", tukichanganua metadata hii katika hatua yoyote.

Serverless inaruhusu kikamilifu kufanya kazi na NoOps - mbinu ambayo inachukua ulazima wa timu tofauti inayohusika na miundombinu ya mradi. Kwa hiyo, ilikuwa jambo dogo - tunapeleka suluhisho kwenye AWS bila ushiriki wa wasimamizi wa mfumo, ambao daima wana kitu cha kufanya hata hivyo.
Na ili kuharakisha haya yote, tunafanya hati ya kupeleka kiotomatiki iwezekanavyo kwenye AWS CloudFormation, ambayo inakuwezesha kupeleka kwa kifungo kimoja moja kwa moja kutoka kwa VS. Kama matokeo, faili ya mistari 200 ya nambari hukuruhusu kutoa suluhisho lililotengenezwa tayari, ingawa syntax ya CloudFormation inaweza kushtua ikiwa haujaizoea.

Katika jumla ya

Serverless sio tiba. Lakini itafanya maisha kuwa rahisi zaidi katika hali zenye vikomo vitatu: “rasilimali chache—muda mfupi—pesa kidogo.”

Sifa za Programu Zinazofaa kwa Bila Seva

  • bila michakato ya Muda Mrefu. API Gateway kikomo ngumu ni sekunde 29, lambda kikomo ngumu ni dakika 5;
  • ilivyoelezwa na usanifu unaoendeshwa na Tukio;
  • hugawanyika katika vipengele vilivyounganishwa kwa urahisi kama SOA;
  • hauhitaji kazi nyingi na hali yako;
  • imeandikwa katika .NET Core. Ili kufanya kazi na Mfumo wa NET, bado utahitaji angalau Docker na wakati unaofaa wa kukimbia.

Faida za mbinu isiyo na seva

  • inapunguza gharama za miundombinu;
  • hupunguza gharama ya kutoa suluhisho;
  • scalability moja kwa moja;
  • maendeleo katika ukingo wa maendeleo ya kiteknolojia.

Hasara, na mfano maalum

  • Ufuatiliaji na ukataji miti uliosambazwa - kutatuliwa kwa sehemu kupitia AWS X-Ray na AWS CloudWatch;
  • utatuzi usiofaa;
  • Baridi Anza wakati hakuna mzigo;
  • Kiolesura cha uhasama cha watumiaji wa AWS ni shida ya ulimwengu :)

Chanzo: mapenzi.com

Kuongeza maoni