Bezserveru pieeja ātrai strādājoŔa video pakalpojuma attīstībai

Bezserveru pieeja ātrai strādājoŔa video pakalpojuma attīstībai

Strādāju ārpakalpojumos, kur galveno principu var raksturot ar frāzi ā€œpārdod daudz, dari ātriā€. Jo ātrāk mēs to izdarÄ«sim, jo ​​vairāk nopelnÄ«sim. Un, vēlams, lai viss darbotos nevis uz kruÄ·iem un puņķiem, bet gan ar pieņemamu kvalitātes lÄ«meni. PastāstīŔu par savu pieredzi, kad bija nepiecieÅ”ams Ä«sā laika periodā izstrādāt akcijas servisu.

Ņemot vērā: saknes konts AWS, bez ierobežojumiem tehnoloģiju steka izvēlei, viena aizmugursistēma un viens mēnesis izstrādei.

Uzdevums: ieviest reklāmas pakalpojumu, kurā lietotāji augÅ”upielādē no viena lÄ«dz četriem videoklipiem, kuru ilgums ir no vienas lÄ«dz četrām sekundēm, kas pēc tam tiek iegulti oriÄ£inālajā video sērijā.

Šķīdums

UzrakstÄ«t savu velosipēdu servisu tik Ä«sā laikā nav laba ideja. Turklāt, lai dienests tiktu galā ar slodzi un ikviens saņemtu kāroto video, bÅ«s nepiecieÅ”ama infrastruktÅ«ra. Un vēlams ne ar cenu zÄ«mi no lidmaŔīnas. Tāpēc mēs nekavējoties koncentrējamies uz gataviem risinājumiem ar minimālu pielāgoÅ”anu.

Standarta risinājums darbam ar video ir FFmpeg, starpplatformu konsoles utilÄ«ta, kas, izmantojot argumentus, ļauj izgriezt un pārdublēt audio. Atliek tikai uzrakstÄ«t iesaiņojumu un atbrÄ«vot to dzÄ«vē. Mēs uzrakstām prototipu, kas savieno divus videoklipus, un... jautrÄ«ba sākas. Bibliotēkas pamatā ir .NET Core 2, tai vajadzētu darboties jebkurā virtuālajā maŔīnā, tāpēc mēs ņemam AWS EC2 gadÄ«jumu un viss darbosies.

Slēpts tekstsnē, tas nedarbosies
.
Lai gan FFmpeg vienkārÅ”o uzdevumu, patiesi strādājoÅ”am risinājumam ir jāizveido EC2 instance un jāizveido tam tÄ«kla infrastruktÅ«ra, tostarp Load Balancer. VienkārÅ”ais izvietoÅ”anas uzdevums no nulles kļūst ā€œnedaudzā€ sarežģītāks, un infrastruktÅ«ra nekavējoties sāk pieprasÄ«t naudu - katru stundu no klienta konta tiek izņemta summa par izpildes laiku.

MÅ«su pakalpojums neietver ilgstoÅ”us procesus, tam nav nepiecieÅ”ama liela un apjomÄ«ga relāciju datu bāze, un tas lieliski iekļaujas uz notikumiem balstÄ«tā arhitektÅ«rā ar mikropakalpojumu zvanu ķēdi. Risinājums liecina par sevi ā€” mēs varam atteikties no EC2 un ieviest Ä«stu bezservera lietojumprogrammu, piemēram, standarta Image Resizer, kura pamatā ir AWS Lambda.

Starp citu, neskatoties uz acÄ«mredzamo AWS izstrādātāju nepatiku pret .NET, viņi atbalsta .NET Core 2.1 kā izpildlaiku, kas nodroÅ”ina pilnu attÄ«stÄ«bas iespēju klāstu.

Un ķirsis uz kūkas - AWS nodroŔina atseviŔķu pakalpojumu darbam ar video failiem - AWS Elemental MediaConvert.

Darba bÅ«tÄ«ba ir neticami vienkārÅ”a: mēs paņemam S3 saiti uz izejoÅ”o video, ierakstām caur AWS konsoli, .NET SDK vai vienkārÅ”i JSON, ko vēlamies darÄ«t ar video, un izsaucam pakalpojumu. Tas pats ievieÅ” rindas ienākoÅ”o pieprasÄ«jumu apstrādei, augÅ”upielādē rezultātu paŔā S3 un, pats galvenais, Ä£enerē CloudWatch notikumu katrai statusa maiņai. Tas ļauj mums ieviest lambda trigerus, lai pabeigtu video apstrādi.

Bezserveru pieeja ātrai strādājoŔa video pakalpojuma attīstībai
Lūk, kā izskatās galīgā arhitektūra:

Visa aizmugure ir izvietota divās lambdas. Vēl viens ir paredzēts vertikālu video pagrieÅ”anai, jo Ŕādu darbu nevar paveikt vienā piegājienā.

PriekÅ”pusi ievietosim JS valodā rakstÄ«tas un ar mopÅ”a starpniecÄ«bu sastādÄ«tas SPA pieteikuma formā publiskā S3 spainÄ«. Lai lejupielādētu paÅ”us videoklipus, mums nav nepiecieÅ”ams nekāds servera kods ā€” mums vienkārÅ”i jāatver REST galapunkti, ko mums nodroÅ”ina S3. VienÄ«gais, neaizmirstiet konfigurēt politikas un CORS.

Slazdiem

  • AWS MediaConvert nezināmu iemeslu dēļ skaņu piemēro tikai katram video fragmentam atseviŔķi, taču mums ir nepiecieÅ”ama jautra dziesma no visa ekrānsaudzētāja.
  • Vertikālie videoklipi ir jāapstrādā atseviŔķi. AWS nepatÄ«k melnas joslas un noliek rullīŔus 90° leņķī.

Viegla slidotava

Neskatoties uz visu bezvalstnieku skaistumu, jums ir jāseko lÄ«dzi tam, kas jādara ar videoklipu: pielÄ«mējiet vai pievienojiet audio gatavajai video secÄ«bai. Par laimi, MediaConvert atbalsta metadatu nodoÅ”anu, izmantojot savus darbus, un mēs vienmēr varam izmantot vienkārÅ”u karogu formā ā€œisMasterSoundJobā€, analizējot Å”os metadatus jebkurā posmā.

Bez servera lieliski ļauj strādāt ar NoOps – pieeju, kas paredz atseviŔķas komandas, kas atbildÄ«ga par projekta infrastruktÅ«ru, nevajadzÄ«gumu. Tāpēc tas bija mazs jautājums - mēs izvietojām risinājumu AWS bez sistēmas administratoru lÄ«dzdalÄ«bas, kuriem vienmēr ir ko darÄ«t.
Un, lai to visu paātrinātu, mēs pēc iespējas vairāk automatizējam izvietoÅ”anas skriptu AWS CloudFormation, kas ļauj izvietot ar vienu pogu tieÅ”i no VS. Rezultātā fails ar 200 koda rindiņām ļauj izvērst gatavu risinājumu, lai gan CloudFormation sintakse var bÅ«t Å”okējoÅ”a, ja neesat pie tā pieradis.

Kopā

Bez servera nav panaceja. Bet tas padarÄ«s dzÄ«vi daudz vieglāku situācijās ar trim ierobežojumiem: "ierobežoti resursi — Ä«stermiņa — maz naudas."

Bezserveriem piemēroto lietojumprogrammu raksturojums

  • bez ilgstoÅ”iem procesiem. API vārtejas cietais ierobežojums ir 29 sekundes, lambda cietais ierobežojums ir 5 minÅ«tes;
  • apraksta Event-Driven arhitektÅ«ra;
  • sadalās brÄ«vi savienotos komponentos, piemēram, SOA;
  • neprasa daudz darba ar jÅ«su stāvokli;
  • rakstÄ«ts .NET Core. Lai strādātu ar .NET Framework, jums joprojām bÅ«s nepiecieÅ”ams vismaz Docker ar atbilstoÅ”u izpildlaiku.

Bez servera pieejas priekŔrocības

  • samazina infrastruktÅ«ras izmaksas;
  • samazina risinājuma piegādes izmaksas;
  • automātiska mērogojamÄ«ba;
  • attÄ«stÄ«ba tehnoloÄ£iskā progresa lÄ«deriem.

Trūkumi, ar konkrētu piemēru

  • IzplatÄ«ta izsekoÅ”ana un reÄ£istrēŔana ā€” daļēji atrisināta, izmantojot AWS X-Ray un AWS CloudWatch;
  • neērta atkļūdoÅ”ana;
  • Aukstā iedarbināŔana, kad nav slodzes;
  • AWS lietotājam naidÄ«gs interfeiss ir universāla problēma :)

Avots: www.habr.com

Iegādājieties uzticamu mitināŔanu vietnēm ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa vietņu mitināŔanu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster