Serverless lÀhenemine kiire video teenuse arendamiseks

Serverless lÀhenemine kiire video teenuse arendamiseks

Ma töötan outsourcena, kus peamine pĂ”himĂ”te on «mĂŒĂŒ palju, tee kiiresti». Mida kiiremini suudame teha, seda rohkem teenime. Ja soovitavalt peaks kĂ”ik toimima mitte kergelt, vaid vastuvĂ”tlikul kvaliteeditasemel. RÀÀgin oma kogemusest, mil tuli lĂŒhikese aja jooksul arendada promoteenus.

Antud: root-konto AWS-is, tehnolooge valides pole piiranguid, ĂŒks backend arendaja ja kuu arendamiseks.

Ülesanne: rakendada promoteenus, kus kasutajad saavad ĂŒles laadida ĂŒhe kuni neli videot, mille kestus on ĂŒhest nelja sekundini, mis seejĂ€rel integreeritakse originaalsesse videovoogu.

Lahendus

Oma teenuse kirjutamine selliste lĂŒhikeste tĂ€htaegadega — pole just parim plaan. Lisaks peab teenus taluma koormust ja kĂ”ik soovijad saama oma soovitud video, seetĂ”ttu on vajalik infrastruktuur. Soovitavalt mitte liiga kallis. SeetĂ”ttu keskendume kohe valmislahendusele minimaalse kohandamisega.

Standardne lahendus videoga töötamiseks on FFmpeg, platvormidevaheline konsoolirakendus, mis vĂ”imaldab argumentide kaudu nii lĂ”igata kui ka heli lisada. JÀÀb vaid kirjutada wrapper ja viia see ellu. Kirjutame prototĂŒĂŒbi, mis toob kokku kaks videot, ja... algab kĂ”ige huvitavam osa. Raamatukogu .NET Core 2, peab töötama igas virtuaalmasinas, seega vĂ”tame AWS EC2 instantsi ja kĂ”ik töötab.

Peidetud tekstei, see ei tööta.
.
FFmpeg, kuigi lihtsustab ĂŒlesannet, vajab tĂ”eliselt toimiva lahenduse jaoks EC2 instantsi loomist ja selle vĂ”rguinfrastruktuuri projekteerimist, sealhulgas koormuse jagajat. Lihtne ĂŒlesande juurutamine nullist on «veidi» keerulisem, ning infrastruktuur hakkab kohe nĂ”udma raha — iga tund eemaldatakse klientide kontolt summa jooksutamise eest.

Meie teenus ei eelda pikaajalisi protsesse, ei vaja suurt ja mahukat relatsioonilist andmebaasi ning mahub suurepĂ€raselt sĂŒndmuste arhitektuuri, kus on mikroteenuste kutsumise ahel. Lahendus tuleb iseenesest — saame loobuda EC2-st ja rakendada tĂ”eliselt serverivaba rakendust, sarnast standardset Image Resizer AWS Lambda baasil.

Muide, kuigi AWS arendajatel on selge antipaatia .NETi vastu, toetavad nad .NET Core 2.1 jooksutajana, mis annab kÔik arendamise vÔimalused.

Ja lĂ”petuseks — AWS pakub eraldi teenust videofailidega töötamiseks — AWS Elemental MediaConvert.

Töö olemus on uskumatult lihtne: vĂ”tame S3 lingi lĂ€htevideole, kirjutame AWS Console'i, .NET SDK-s vĂ”i lihtsalt JSON-is, mida soovime videoga teha, ja kutsume teenuse. See ise haldab sisendkĂŒsimuste töötlemiseks jĂ€rjekordi, laadib tulemuse automaatselt S3 ja, mis kĂ”ige tĂ€htsam, genereerib iga staatuse muutuse jaoks CloudWatch Event. See vĂ”imaldab meil rakendada lambdate trikke video töötlemise lĂ”petamiseks.

Serverless lÀhenemine kiire video teenuse arendamiseks
Nii nÀeb vÀlja lÔplik arhitektuuri variant.

Kogu backend on paigutatud kahte lambdasse. Veel ĂŒks on vertikaalsete videote pööramiseks, kuna sellist tööd ei saa teostada ĂŒhe kĂ€iguga.

Front-end SPA-rakenduse kujul, kirjutatud JS-is ja kompileeritud lĂ€bi pug, paneme avalikku S3 korvi. Videote ĂŒleslaadimiseks ei vaja me mingit serveripoolset koodi — piisab, kui avada S3 poolt pakutavad REST-lĂ”pp-punktid. Ainus punkt — Ă€rge unustage seadistada poliitikaid ja CORS-i.

Peidetud probleemid

  • AWS MediaConvert, mingil tunmatu pĂ”hjusel, lisab heli ainult iga videolĂ”igu peale eraldi, kuigi vajalik on lĂ”bus laul, mis kĂ€ivitub koos sissejuhatusega.
  • Vertikaalid videod tuleb töödelda eraldi. AWS ei vĂ€rava mustade ribade ja paneb videod 90°.

Lihtne mure.

Hoolimata kogu Statelessi ilust, on vajalik jĂ€lgida, mida video tegemiseks teha: kas liita vĂ”i lisada heli juba valmis videopildile. Õnneks toetab MediaConvert metainformatsiooni edastamist oma Tööde kaudu, ja me saame alati rakendada lihtsa lipu, nĂ€iteks “isMasterSoundJob”, need metainformatsioonid eristades igal etapil.

Serverless vĂ”imaldab suurepĂ€raselt töötada NoOps'i lĂ€henemisviisiga — meetod, mis vĂ€listab eraldi meeskonna vajaduse, kes vastutab projekti infrastruktuuri eest. Nii et asi oli kerge — juurutame lahenduse AWS-is ilma sĂŒsteemiadminnide osaluseta, kellel alati on muud toimetused.
Ja et seda kĂ”ike kiirendada, maksimaalselt automatiseerime juurutamise AWS CloudFormation'i skripti kaudu, vĂ”imaldades juurutamist ĂŒhe nupuvajutusega otse VS-st. LĂ”puks, 200 rea koodi fail vĂ”imaldab vĂ€lja anda valmis lahenduse, kuigi CloudFormation'i sĂŒntaks vĂ”ib harjumatus olukorras ĆĄokeerida.

Kokku

Serverless — ei ole paanitse. Kuid see lihtsustab elu olukordades, kus on kolm limiiti: «piiratud ressursid — lĂŒhike tĂ€htaeg — vĂ€he raha».

Rakenduste omadused, millele Serverless sobib.

  • ilma Long-Running protsessidest. API Gateway'i karm piir on 29 sekundit, lambdade karm piir on 5 minutit;
  • kirjeldatakse Event-Driven arhitektuuriga;
  • jagatakse madala seotuse komponentideks, nagu SOA;
  • ei nĂ”ua suurt tööd oma olekuga;
  • kirjutatud .NET Core'is. .NET Framework'i jaoks on endiselt vajalik vĂ€hemalt Docker koos vastava jooksukeskkonnaga.

Serverless lÀhenemise eelised

  • vĂ€hendab infrastruktuuri kulusid;
  • vĂ€hendab lahenduse tarnimise kulusid;
  • automaatne skaaleerimine;
  • arendus tehnoloogia tipptasemel.

Puudused, konkreetse nÀite pÔhjal

  • Jaotatud jĂ€lgimine ja logimine - osaliselt lahendatav AWS X-Ray ja AWS CloudWatch kaudu;
  • ebamugav silumine;
  • Cold Start ilma koormuseta;
  • Kasutajale ebasĂ”bralik AWS liides - universaalne probleem 🙂

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster