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.
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