Serverless oanpak foar rappe ûntwikkeling fan in wurkjende fideo tsjinst

Serverless oanpak foar rappe ûntwikkeling fan in wurkjende fideo tsjinst

Ik wurkje yn outsourcing, wêr't it haadprinsipe kin wurde beskreaun troch de sin "in protte ferkeapje, doch it fluch." Hoe flugger wy it dogge, hoe mear wy sille fertsjinje. En, it is winsklik dat alles wurket net op krukken en snot, mar mei in akseptabel nivo fan kwaliteit. Ik sil jo fertelle oer myn ûnderfining doe't it nedich wie om in promoasjetsjinst yn in koarte perioade te ûntwikkeljen.

Jûn: root-akkount op AWS, gjin beheiningen op 'e kar fan technologystapel, ien backend, en ien moanne foar ûntwikkeling.

In taak: ymplemintearje in promoasjetsjinst wêrby't brûkers fan ien oant fjouwer fideo's uploade dy't duorje fan ien oant fjouwer sekonden, dy't dan ynbêde binne yn 'e orizjinele fideosearje.

beslút

Yn sa'n koarte tiid jo eigen fytstsjinst skriuwe is gjin goed idee. Derneist, om de tsjinst te kinnen mei de lading en foar elkenien om de begeerde fideo te ûntfangen, sil ynfrastruktuer ferplicht wurde. En leafst net mei it priiskaartsje fan it fleantúch. Dêrom rjochtsje wy ús daliks op klearebare oplossingen mei minimale maatwurk.

De standert oplossing foar wurkjen mei fideo is FFmpeg, in cross-platform konsole-hulpprogramma dat, troch arguminten, jo audio kin snije en oerdubbje. Alles wat oerbleaun is om in wrapper te skriuwen en it yn it libben loslitte. Wy skriuwe in prototype dat twa fideo's byinoar stekt, en ... de wille begjint. De bibleteek is basearre op .NET Core 2, it moat rinne op elke firtuele masine, dus wy nimme in AWS EC2-eksimplaar en alles sil wurkje

Ferburgen tekstnee, it sil net wurkje
.
Hoewol't FFmpeg simplifies de taak, foar in echt wurkjende oplossing moatte jo meitsje in EC2 eksimplaar en ûntwerpe in netwurk ynfrastruktuer foar it, ynklusyf in Load Balancer. De ienfâldige taak fan it ynsetten fanôf it begjin wurdt "in bytsje" yngewikkelder, en de ynfrastruktuer begjint daliks jild te freegjen - elk oere wurdt it bedrach foar runtime ynlutsen fan 'e klantkonto.

Us tsjinst net belûke Long-Running prosessen, net nedich in grutte en fet relational databank, en past perfekt yn in evenemint-basearre arsjitektuer mei in keatling fan microservice calls. De oplossing suggerearret himsels - wy kinne EC2 ferlitte en in echte-serverleaze applikaasje ymplementearje, lykas de standert Image Resizer basearre op AWS Lambda.

Trouwens, nettsjinsteande de dúdlike ôfkear fan AWS-ûntwikkelders foar .NET, stypje se .NET Core 2.1 as runtime, dy't in folslein oanbod fan ûntwikkelingsmooglikheden leveret.

En de kers op 'e taart - AWS biedt in aparte tsjinst foar wurkjen mei fideobestannen - AWS Elemental MediaConvert.

De essinsje fan it wurk is ongelooflijk ienfâldich: wy nimme in S3-keppeling nei de útgeande fideo, skriuwe fia AWS Console, .NET SDK of gewoan JSON wat wy wolle dwaan mei de fideo en neame de tsjinst. It sels ymplemintearret wachtrijen foar it ferwurkjen fan ynkommende oanfragen, uploadt it resultaat nei S3 sels en, it wichtichste, genereart in CloudWatch Event foar elke statusferoaring. Hjirmei kinne wy ​​lambda-triggers ymplementearje om fideoferwurking te foltôgjen.

Serverless oanpak foar rappe ûntwikkeling fan in wurkjende fideo tsjinst
Dit is hoe't de definitive arsjitektuer derút sjocht:

De hiele efterkant is ûnderbrocht yn twa lambda's. In oar is foar rotearjende fertikale fideo's, om't sa'n wurk net yn ien pas kin dien wurde.

Wy sille pleatse de foarkant yn 'e foarm fan in SPA applikaasje skreaun yn JS en kompilearre fia pug yn in iepenbiere S3 emmer. Om de fideo's sels te downloaden, hawwe wy gjin serverkoade nedich - wy moatte gewoan de REST-einpunten iepenje dy't S3 ús leveret. It ienige ding is net ferjitte te konfigurearjen belied en CORS.

falkûlen

  • AWS MediaConvert jildt om ien of oare ûnbekende reden allinich lûd op elk fideofragmint apart, mar wy hawwe in fleurich ferske nedich fan 'e heule skermbefeiliging.
  • Fertikale fideo's moatte apart wurde ferwurke. AWS hâldt net fan swarte balken en set de rollen op 90°.

Maklike skatebaan

Nettsjinsteande al de skientme fan Stateless, moatte jo byhâlde wat der mei de fideo dien wurde moat: lymje of audio tafoegje oan 'e ôfmakke fideosekwinsje. Gelokkich stipet MediaConvert it trochjaan fan metadata troch har Jobs, en wy kinne altyd in ienfâldige flagge brûke fan 'e foarm "isMasterSoundJob", dizze metadata yn elk stadium analysearje.

Serverless lit perfekt wurkje mei NoOps - in oanpak dy't oannimt dat it ûnnedich is fan in apart team ferantwurdlik foar de projektynfrastruktuer. Dêrom wie it in lytse saak - wy sette de oplossing op AWS yn sûnder de dielname fan systeembehearders, dy't dochs altyd wat te dwaan hawwe.
En om dit alles te fersnellen, automatisearje wy it ynsetskript safolle mooglik op AWS CloudFormation, wêrtroch jo mei ien knop direkt fan VS kinne ynsette. As gefolch, in bestân fan 200 rigels koade lit jo in klearmakke oplossing útrolje, hoewol de CloudFormation-syntaksis kin skokkend wêze as jo der net oan wend binne.

Totaal

Serverless is gjin panacee. Mar it sil it libben folle makliker meitsje yn situaasjes mei trije grinzen: "beheinde boarnen - koarte termyn - lyts jild."

Skaaimerken fan applikaasjes geskikt foar Serverless

  • sûnder Long-Running prosessen. API Gateway hurde limyt is 29 sekonden, lambda hurde limyt is 5 minuten;
  • beskreaun troch Event-Driven arsjitektuer;
  • brekt del yn los keppele komponinten lykas SOA;
  • fereasket net folle wurk mei jo tastân;
  • skreaun yn .NET Core. Om mei it .NET Framework te wurkjen, sille jo noch teminsten Docker nedich hawwe mei de passende runtime.

Foardielen fan de Serverless oanpak

  • ferleget ynfrastruktuerkosten;
  • ferleget de kosten fan it leverjen fan de oplossing;
  • automatyske skalberens;
  • ûntwikkeling op it snijflak fan technologyske foarútgong.

Neidielen, mei in spesifyk foarbyld

  • Ferspraat tracing en logging - foar in part oplost fia AWS X-Ray en AWS CloudWatch;
  • ûngemaklik debuggen;
  • Kâlde Start as der gjin lading is;
  • AWS brûkersfijannige ynterface is in universele probleem :)

Boarne: www.habr.com

Add a comment