Serverlaus nálgun fyrir hraða þróun á starfandi myndbandsþjónustu

Serverlaus nálgun fyrir hraða þróun á starfandi myndbandsþjónustu

Ég vinn við útvistun, þar sem meginreglunni má lýsa með orðasambandinu „selja mikið, gera það fljótt“. Því hraðar sem við gerum það, því meira munum við græða. Og það er æskilegt að allt virki ekki á hækjum og snót, heldur með viðunandi gæðastigi. Ég mun segja þér frá reynslu minni þegar nauðsynlegt var að þróa kynningarþjónustu á stuttum tíma.

Gefið: rótarreikningur á AWS, engar takmarkanir á vali á tæknistafla, einn bakendi og einn mánuður fyrir þróun.

Verkefni: innleiða kynningarþjónustu þar sem notendur hlaða upp frá einu til fjórum myndskeiðum sem standa yfir í eina til fjórar sekúndur, sem síðan eru felld inn í upprunalegu myndbandsseríuna.

ákvörðun

Að skrifa sína eigin reiðhjólaþjónustu á svo stuttum tíma er ekki góð hugmynd. Auk þess þarf innviði til að þjónustan þoli álagið og allir fái hið eftirsótta myndband. Og helst ekki með verðmiðanum úr flugvélinni. Þess vegna leggjum við strax áherslu á tilbúnar lausnir með lágmarks aðlögun.

Staðallausnin til að vinna með myndbönd er FFmpeg, þvert á palla vélbúnaðartæki sem, með rökræðum, gerir þér kleift að klippa og ofdubba hljóð. Allt sem er eftir að gera er að skrifa umbúðir og sleppa því út í lífið. Við skrifum frumgerð sem saumar tvö myndbönd saman og... gamanið byrjar. Bókasafnið er byggt á .NET Core 2, það ætti að keyra á hvaða sýndarvél sem er, svo við tökum AWS EC2 dæmi og allt mun virka

Falinn textinei, það mun ekki virka
.
Þó að FFmpeg einfaldar verkefnið, fyrir raunverulega virka lausn þarftu að búa til EC2 tilvik og hanna netkerfi fyrir það, þar á meðal álagsjafnara. Einfalda verkefnið að dreifa frá grunni verður „örlítið“ flóknara og innviðirnir byrja að krefjast peninga strax - á klukkutíma fresti er upphæðin fyrir keyrslutíma tekin af reikningi viðskiptavinarins.

Þjónustan okkar felur ekki í sér langvarandi ferla, krefst ekki stórs og feits tengslagagnagrunns og passar fullkomlega inn í atburðabyggðan arkitektúr með keðju örþjónustukalla. Lausnin bendir á sjálfa sig - við getum yfirgefið EC2 og innleitt raunverulegt netþjónalaust forrit, eins og venjulegt Image Resizer byggt á AWS Lambda.

Við the vegur, þrátt fyrir augljósa óbeit á AWS forriturum fyrir .NET, styðja þeir .NET Core 2.1 sem keyrslutíma, sem veitir alhliða þróunarmöguleika.

Og kirsuberið á kökunni - AWS veitir sérstaka þjónustu til að vinna með myndbandsskrár - AWS Elemental MediaConvert.

Kjarni verksins er ótrúlega einfaldur: við tökum S3 tengil á myndbandið sem er á útleið, skrifum í gegnum AWS Console, .NET SDK eða einfaldlega JSON hvað við viljum gera við myndbandið og köllum þjónustuna. Það sjálft útfærir biðraðir til að vinna úr beiðnum sem berast, hleður niður niðurstöðunni á S3 sjálft og, síðast en ekki síst, býr til CloudWatch Event fyrir hverja stöðubreytingu. Þetta gerir okkur kleift að innleiða lambda triggera til að ljúka myndbandsvinnslu.

Serverlaus nálgun fyrir hraða þróun á starfandi myndbandsþjónustu
Svona lítur endanlegur arkitektúr út:

Allur bakhliðin er til húsa í tveimur lambdum. Annað er til að snúa lóðréttum myndböndum, þar sem slík vinna er ekki hægt að gera í einni umferð.

Við munum setja framhliðina í formi SPA umsókn skrifuð í JS og sett saman með pug í opinberri S3 fötu. Til að hlaða niður myndböndunum sjálfum þurfum við engan netþjónskóða - við þurfum bara að opna REST endapunktana sem S3 gefur okkur. Það eina er ekki gleyma að stilla stefnur og CORS.

Gildra

  • AWS MediaConvert, af einhverjum óþekktum ástæðum, notar aðeins hljóð á hvert myndbandsbrot fyrir sig, en við þurfum glaðlegt lag úr öllum skjáhvílunni.
  • Lóðrétt myndbönd þarf að vinna sérstaklega. AWS er ​​ekki hrifin af svörtum stöngum og setur rúllurnar í 90°.

Auðvelt skautasvell

Þrátt fyrir alla fegurð Stateless þarftu að fylgjast með því sem þarf að gera við myndbandið: líma eða bæta hljóði við fullunna myndbandsröðina. Sem betur fer styður MediaConvert að senda lýsigögn í gegnum störf sín og við getum alltaf notað einfaldan fána á forminu „isMasterSoundJob“ og flokkað þessi lýsigögn á hvaða stigi sem er.

Serverless gerir fullkomlega kleift að vinna með NoOps - nálgun sem gerir ráð fyrir óþarfa sérstaks liðs sem ber ábyrgð á innviðum verkefnisins. Þess vegna var það lítið mál - við sendum lausnina á AWS án þátttöku kerfisstjóra, sem hafa alltaf eitthvað að gera hvort sem er.
Og til að flýta fyrir þessu öllu, gerum við sjálfvirkan dreifingarforskrift eins mikið og mögulegt er á AWS CloudFormation, sem gerir þér kleift að dreifa með einum hnappi beint frá VS. Fyrir vikið gerir skrá með 200 línum af kóða þér kleift að rúlla út tilbúinni lausn, þó að CloudFormation setningafræðin geti verið átakanleg ef þú ert óvön því.

Alls

Serverless er ekki töfralausn. En það mun gera lífið miklu auðveldara í aðstæðum með þrjú takmörk: „takmarkað fjármagn – til skamms tíma – lítið fé.

Einkenni forrita sem henta fyrir netþjónalausa

  • án langvarandi ferla. API Gateway harður mörk er 29 sekúndur, Lambda hard takmörk er 5 mínútur;
  • lýst af Event-Driven arkitektúr;
  • brotnar niður í lauslega tengda íhluti eins og SOA;
  • krefst ekki mikillar vinnu með ástand þitt;
  • skrifað í .NET Core. Til að vinna með .NET Framework þarftu samt að minnsta kosti Docker með viðeigandi keyrslutíma.

Kostir Serverless nálgunarinnar

  • dregur úr kostnaði við innviði;
  • dregur úr kostnaði við afhendingu lausnarinnar;
  • sjálfvirkur sveigjanleiki;
  • þróun í fremstu röð tækniframfara.

Ókostir, með ákveðnu dæmi

  • Dreifð rakning og skógarhögg - leyst að hluta með AWS X-Ray og AWS CloudWatch;
  • óþægileg kembiforrit;
  • Cold Start þegar ekkert álag er;
  • AWS notendafjandsamlegt viðmót er alhliða vandamál :)

Heimild: www.habr.com

Bæta við athugasemd