Approcciu senza server per u sviluppu rapidu di un serviziu video di travagliu

Approcciu senza server per u sviluppu rapidu di un serviziu video di travagliu

U travagliu in l'outsourcing, induve u principiu principale pò esse descrittu da a frasa "vende assai, fate rapidamente". Più veloce facemu, più guadagnemu. È, hè desideratu chì tuttu u travagliu micca nantu à crutches è snot, ma cù un livellu di qualità accettabile. Vi cuntaraghju di a mo spirienza quandu era necessariu di sviluppà un serviziu promozionale in pocu tempu.

Dà: contu root in AWS, senza restrizioni à a scelta di stack di tecnulugia, un backend, è un mese per u sviluppu.

Un compitu: implementà un serviziu promozionale induve l'utilizatori caricanu da unu à quattru video chì duranu da unu à quattru seconde, chì sò dopu incrustati in a serie video originale.

dicisioni

Scrivite u vostru propiu serviziu di bicicletta in pocu tempu ùn hè micca una bona idea. Inoltre, per u serviziu per affruntà a carica è per tutti per riceve u video bramatu, l'infrastruttura serà necessaria. È preferibile micca cù u prezzu di l'aviò. Dunque, ci focalizemu immediatamente in suluzioni pronti cù una persunalizazione minima.

A suluzione standard per travaglià cù u video hè FFmpeg, una utilità di cunsola multipiattaforma chì, attraversu argumenti, permette di cutà è overdub audio. Tuttu ciò chì resta da fà hè di scrive un wrapper è liberà in a vita. Scrivemu un prototipu chì unisce dui video inseme, è ... principia u divertimentu. A biblioteca hè basata nantu à .NET Core 2, duverebbe eseguisce nantu à qualsiasi macchina virtuale, cusì pigliamu una istanza AWS EC2 è tuttu funziona.

Testu oculatuno, ùn funziona micca
.
Ancu s'ellu FFmpeg simplificà u compitu, per una soluzione veramente di travagliu avete bisognu di creà una istanza EC2 è cuncepisce una infrastruttura di rete per questu, cumpresu un Load Balancer. U compitu simplice di implementà da zero diventa "un pocu" più cumplicatu, è l'infrastruttura principia à dumandà soldi immediatamente - ogni ora a quantità per runtime hè ritirata da u contu di u cliente.

U nostru serviziu ùn implica micca prucessi di Long-Running, ùn hè micca bisognu di una basa di dati relazionale grande è grassa, è si adatta perfettamente à una architettura basata nantu à l'avvenimenti cù una catena di chjama di microserviziu. A suluzione si suggerisce - pudemu abbandunà EC2 è implementà una vera applicazione senza server, cum'è l'Image Resizer standard basatu in AWS Lambda.

Per via, malgradu l'evidente disgrazia di i sviluppatori AWS per .NET, supportanu .NET Core 2.1 cum'è runtime, chì furnisce una gamma completa di opportunità di sviluppu.

È a ciliegia nantu à a torta - AWS furnisce un serviziu separatu per travaglià cù i fugliali video - AWS Elemental MediaConvert.

L'essenza di u travagliu hè incredibbilmente simplice: piglià un ligame S3 à u video in uscita, scrivite attraversu AWS Console, .NET SDK o simpricimenti JSON ciò chì vulemu fà cù u video è chjamate u serviziu. Hè stessu implementa file per processà e dumande entrate, carica u risultatu à S3 stessu è, più impurtante, genera un Event CloudWatch per ogni cambiamentu di statutu. Questu ci permette di implementà i triggers lambda per compie u processu video.

Approcciu senza server per u sviluppu rapidu di un serviziu video di travagliu
Eccu ciò chì pare l'architettura finale:

Tuttu u backend hè allughjatu in dui lambda. Un altru hè per a rotazione di video verticali, postu chì tali travagliu ùn pò micca esse fattu in un passu.

Puderemu u fronte in forma di una applicazione SPA scritta in JS è cumpilata via pug in un bucket S3 publicu. Per scaricà i video stessi, ùn avemu micca bisognu di codice di u servitore - solu bisognu di apre l'endpoint REST chì S3 ci furnisce. L'unicu cosa hè di ùn vi scurdate di cunfigurà pulitiche è CORS.

Pitfalls

  • AWS MediaConvert, per una ragione scunnisciuta, applicà solu u sonu à ogni frammentu di video separatamente, ma avemu bisognu di una canzone allegra da tuttu u screensaver.
  • I video verticali anu da esse processati separatamente. AWS ùn piace micca e barre nere è mette i rulli à 90 °.

Pista di pattinaggio faciule

Malgradu tutta a bellezza di Stateless, avete bisognu di seguità ciò chì deve esse fattu cù u video: cola o aghjunghje audio à a sequenza video finita. Fortunatamente, MediaConvert sustene u passaghju di metadata attraversu i so Jobs, è pudemu sempre aduprà una bandiera simplice di a forma "isMasterSoundJob", analizendu sta metadata in ogni stadiu.

Serverless permette perfettamente di travaglià cù NoOps - un approcciu chì assume l'innecessità di una squadra separata rispunsevule per l'infrastruttura di u prugettu. Dunque, era una piccula materia - implementemu a suluzione in AWS senza a participazione di l'amministratori di u sistema, chì anu sempre qualcosa da fà in ogni modu.
È per accelerà tuttu questu, automatizemu u script di implementazione quant'è pussibule in AWS CloudFormation, chì vi permette di implementà cù un buttone direttamente da VS. In u risultatu, un schedariu di 200 linee di codice permette di sparghje una suluzione pronta, ancu s'è a sintassi di CloudFormation pò esse scunfiante si ùn site micca abituatu.

Tuttu

Serverless ùn hè micca una panacea. Ma renderà a vita assai più faciule in situazioni cù trè limiti: "risorse limitate - cortu termini - pocu soldi".

Caratteristiche di l'applicazioni Adatta per Serverless

  • senza prucessi Long-running. API Gateway hard limit hè 29 seconde, lambda hard limit hè 5 minuti;
  • descrittu da l'architettura Event-Driven;
  • si rompe in cumpunenti pocu accoppiati cum'è SOA;
  • ùn esige micca assai travagliu cù a vostra cundizione;
  • scrittu in .NET Core. Per travaglià cù u .NET Framework, avete sempre bisognu di almenu Docker cù u runtime appropritatu.

Beneficii di l'approcciu Serverless

  • riduce i costi di l'infrastruttura;
  • riduce u costu di furnisce a suluzione;
  • scalabilità automatica;
  • u sviluppu à l'avanguardia di u prugressu tecnologicu.

Disadvantages, cù un esempiu specificu

  • Traccia e logging distribuiti - parzialmente risolti tramite AWS X-Ray è AWS CloudWatch;
  • debugging inconveniente;
  • Cold Start quandu ùn ci hè micca carica;
  • L'interfaccia utente-ostile AWS hè un prublema universale :)

Source: www.habr.com

Add a comment