Approċċ mingħajr server għal żvilupp rapidu ta 'servizz tal-vidjo li jaħdem

Approċċ mingħajr server għal żvilupp rapidu ta 'servizz tal-vidjo li jaħdem

Naħdem fl-esternalizzazzjoni, fejn il-prinċipju ewlieni jista 'jiġi deskritt bil-frażi "bigħ ħafna, agħmel dan malajr." Iktar ma nagħmluha malajr, aktar se naqilgħu. U, huwa mixtieq li kollox jaħdem mhux fuq krozzi u snot, iżda b'livell aċċettabbli ta 'kwalità. Jien ngħidlek dwar l-esperjenza tiegħi meta kien meħtieġ li niżviluppa servizz promozzjonali f'perjodu qasir ta 'żmien.

Mogħti: kont tal-għeruq fuq AWS, l-ebda restrizzjonijiet fuq l-għażla tal-munzell tat-teknoloġija, backend wieħed, u xahar għall-iżvilupp.

Kompitu: timplimenta servizz promozzjonali fejn l-utenti jtellgħu minn wieħed sa erba' vidjows li jdumu minn waħda sa erba' sekondi, li mbagħad jiġu inkorporati fis-serje ta' vidjow oriġinali.

deċiżjoni

Li tikteb is-servizz tar-roti tiegħek stess fi żmien daqshekk qasir mhix idea tajba. Barra minn hekk, sabiex is-servizz ilaħħaq mat-tagħbija u biex kulħadd jirċievi l-video coveted, se tkun meħtieġa infrastruttura. U preferibbilment mhux bil-prezz tag mill-ajruplan. Għalhekk, aħna niffukaw immedjatament fuq soluzzjonijiet lesti b'personalizzazzjoni minima.

Is-soluzzjoni standard biex taħdem bil-vidjo hija FFmpeg, utilità tal-console cross-platform li, permezz ta 'argumenti, tippermettilek taqta' u overdub awdjo. Kulma fadal hu li tikteb tgeżwir u rilaxxha fil-ħajja. Aħna niktbu prototip li jgħaqqdu żewġ filmati flimkien, u... jibda l-gost. Il-librerija hija bbażata fuq .NET Core 2, għandha taħdem fuq kwalunkwe magna virtwali, għalhekk nieħdu istanza AWS EC2 u kollox jaħdem

Test moħbile, mhux se taħdem
.
Għalkemm FFmpeg jissimplifika l-kompitu, għal soluzzjoni li taħdem tassew għandek bżonn toħloq istanza EC2 u tfassal infrastruttura tan-netwerk għaliha, inkluż Load Balancer. Il-kompitu sempliċi ta 'skjerament mill-bidu jsir "ftit" aktar ikkumplikat, u l-infrastruttura tibda titlob flus immedjatament - kull siegħa l-ammont għall-runtime jiġi rtirat mill-kont tal-klijent.

Is-servizz tagħna ma jinvolvix proċessi Long-Running, ma jeħtieġx database relazzjonali kbira u grassa, u jidħol perfettament f'arkitettura bbażata fuq avveniment b'katina ta 'sejħiet ta' mikroservizz. Is-soluzzjoni tissuġġerixxi lilha nfisha - nistgħu nabbandunaw EC2 u nimplimentaw applikazzjoni vera mingħajr server, bħall-Image Resizer standard ibbażat fuq AWS Lambda.

Mill-mod, minkejja d-dispjaċir ovvju tal-iżviluppaturi AWS għal .NET, huma jappoġġaw .NET Core 2.1 bħala runtime, li jipprovdi firxa sħiħa ta 'opportunitajiet ta' żvilupp.

U ċ-ċirasa fuq il-kejk - AWS jipprovdi servizz separat biex taħdem ma 'fajls tal-vidjo - AWS Elemental MediaConvert.

L-essenza tax-xogħol hija oerhört sempliċi: nieħdu link S3 għall-vidjo li joħroġ, niktbu permezz tal-AWS Console, .NET SDK jew sempliċement JSON dak li rridu nagħmlu bil-vidjo u nsejħu s-servizz. Hija stess timplimenta kjuwijiet għall-ipproċessar tat-talbiet deħlin, ittella’ r-riżultat fuq S3 innifsu u, l-aktar importanti, tiġġenera Avveniment CloudWatch għal kull bidla fl-istatus. Dan jippermettilna nimplimentaw triggers lambda biex tlesti l-ipproċessar tal-vidjo.

Approċċ mingħajr server għal żvilupp rapidu ta 'servizz tal-vidjo li jaħdem
Hekk tidher l-arkitettura finali:

Il-backend kollu jinsab f'żewġ lambdas. Ieħor huwa għar-rotazzjoni tal-vidjows vertikali, peress li xogħol bħal dan ma jistax isir f'pass wieħed.

Se npoġġu l-faċċata fil-forma ta 'applikazzjoni SPA miktuba f'JS u miġbura permezz ta' pug f'barmil S3 pubbliku. Biex tniżżel il-vidjows infushom, m'għandna bżonn l-ebda kodiċi tas-server - irridu biss niftħu l-endpoints REST li jipprovdilna S3. L-unika ħaġa hi li ma ninsewx li tikkonfigura l-politiki u l-CORS.

Iżvantaġġi

  • AWS MediaConvert, għal xi raġuni mhux magħrufa, tapplika biss il-ħoss għal kull framment tal-vidjow separatament, iżda għandna bżonn kanzunetta ferrieħa mill-screensaver kollu.
  • Vidjows vertikali jeħtieġ li jiġu pproċessati separatament. AWS ma jħobbx vireg suwed u jpoġġi r-rombli f'90°.

Rink tal-iskejzjar faċli

Minkejja s-sbuħija kollha ta 'Stateless, għandek bżonn iżżomm rekord ta' dak li jeħtieġ li jsir bil-vidjo: kolla jew żid awdjo mas-sekwenza tal-vidjo lest. Fortunatament, MediaConvert jappoġġja l-mogħdija tal-metadejta permezz tal-Impjiegi tagħha, u nistgħu dejjem nużaw bandiera sempliċi tal-forma "isMasterSoundJob", li naqsbu din il-metadejta fi kwalunkwe stadju.

Serverless jippermetti perfettament li taħdem ma 'NoOps - approċċ li jassumi n-nuqqas ta' tim separat responsabbli għall-infrastruttura tal-proġett. Għalhekk, kienet kwistjoni żgħira - aħna niskjeraw is-soluzzjoni fuq AWS mingħajr il-parteċipazzjoni ta 'amministraturi tas-sistema, li dejjem għandhom xi ħaġa x'jagħmlu xorta waħda.
U biex tħaffef dan kollu, aħna nawtomatizzaw l-iskrittura tal-iskjerament kemm jista 'jkun fuq AWS CloudFormation, li jippermettilek li tuża b'buttuna waħda direttament minn VS. Bħala riżultat, fajl ta '200 linja ta' kodiċi jippermettilek li toħroġ soluzzjoni lesta, għalkemm is-sintassi ta 'CloudFormation tista' tkun xokkanti jekk m'intix imdorri għaliha.

B'kollox

Serverless mhix rimedju. Imma se tagħmel il-ħajja ħafna aktar faċli f’sitwazzjonijiet bi tliet limiti: “riżorsi limitati—terminu qasir—flus ftit.”

Karatteristiċi tal-Applikazzjonijiet Adattati għal Serverless

  • mingħajr proċessi Long-Running. API Gateway limitu iebes huwa 29 sekonda, limitu iebes lambda huwa 5 minuti;
  • deskritt mill-arkitettura Mmexxija mill-Avvenimenti;
  • jinqasam f'komponenti akkoppjati b'mod laxk bħal SOA;
  • ma teħtieġx ħafna xogħol bil-kundizzjoni tiegħek;
  • miktub f'.NET Core. Biex taħdem mal-.NET Framework, xorta jkollok bżonn mill-inqas Docker bir-runtime xieraq.

Benefiċċji tal-approċċ Serverless

  • inaqqas l-ispejjeż tal-infrastruttura;
  • inaqqas l-ispiża tat-twassil tas-soluzzjoni;
  • skalabbiltà awtomatika;
  • żvilupp fl-aktar avvanzata tal-progress teknoloġiku.

Żvantaġġi, b'eżempju speċifiku

  • Traċċar u illoggjar imqassma - parzjalment solvuti permezz ta 'AWS X-Ray u AWS CloudWatch;
  • debugging inkonvenjenti;
  • Bidu kiesaħ meta ma jkunx hemm tagħbija;
  • L-interface ostili għall-utent AWS hija problema universali :)

Sors: www.habr.com

Żid kumment