Dull di-weinydd ar gyfer datblygiad cyflym gwasanaeth fideo gweithredol

Dull di-weinydd ar gyfer datblygiad cyflym gwasanaeth fideo gweithredol

Rwy'n gweithio ar gontract allanol, lle gellir disgrifio'r brif egwyddor gan yr ymadrodd “gwerthu llawer, gwnewch yn gyflym.” Po gyflymaf y byddwn yn ei wneud, y mwyaf y byddwn yn ei ennill. Ac, mae'n ddymunol bod popeth yn gweithio nid ar faglau a snot, ond gyda lefel dderbyniol o ansawdd. Dywedaf wrthych am fy mhrofiad pan oedd angen datblygu gwasanaeth hyrwyddo mewn cyfnod byr o amser.

Wedi'i roi: cyfrif gwraidd ar AWS, dim cyfyngiadau ar y dewis o stac technoleg, un backend, ac un mis i'w ddatblygu.

Tasg: gweithredu gwasanaeth hyrwyddo lle mae defnyddwyr yn uwchlwytho o un i bedwar fideo sy'n para o un i bedair eiliad, sydd wedyn yn cael eu hymgorffori yn y gyfres fideo wreiddiol.

penderfyniad

Nid yw ysgrifennu eich gwasanaeth beic eich hun mewn amser mor fyr yn syniad da. Yn ogystal, er mwyn i'r gwasanaeth ymdopi â'r llwyth ac i bawb dderbyn y fideo dymunol, bydd angen seilwaith. Ac yn ddelfrydol nid gyda'r tag pris o'r awyren. Felly, rydym yn canolbwyntio ar unwaith ar atebion parod heb fawr o addasu.

Yr ateb safonol ar gyfer gweithio gyda fideo yw FFmpeg, cyfleustodau consol traws-lwyfan sydd, trwy ddadleuon, yn caniatáu ichi dorri a gor-ddweud sain. Y cyfan sydd ar ôl i'w wneud yw ysgrifennu papur lapio a'i ryddhau i fywyd. Rydyn ni'n ysgrifennu prototeip sy'n pwytho dau fideo gyda'i gilydd, ac... mae'r hwyl yn dechrau. Mae'r llyfrgell yn seiliedig ar .NET Core 2, dylai redeg ar unrhyw beiriant rhithwir, felly rydym yn cymryd enghraifft AWS EC2 a bydd popeth yn gweithio

Testun cuddna, ni fydd yn gweithio
.
Er bod FFmpeg yn symleiddio'r dasg, ar gyfer datrysiad sy'n gweithio'n iawn mae angen i chi greu enghraifft EC2 a dylunio seilwaith rhwydwaith ar ei gyfer, gan gynnwys Cydbwysedd Llwyth. Mae'r dasg syml o ddefnyddio o'r dechrau yn dod yn "ychydig" yn fwy cymhleth, ac mae'r seilwaith yn dechrau mynnu arian ar unwaith - bob awr mae'r swm ar gyfer amser rhedeg yn cael ei dynnu'n ôl o gyfrif y cleient.

Nid yw ein gwasanaeth yn cynnwys prosesau Rhedeg Hir, nid oes angen cronfa ddata berthynol fawr a braster arno, ac mae'n cyd-fynd yn berffaith â phensaernïaeth sy'n seiliedig ar ddigwyddiadau gyda chadwyn o alwadau microwasanaeth. Mae'r datrysiad yn awgrymu ei hun - gallwn roi'r gorau i EC2 a gweithredu cymhwysiad di-weinydd go iawn, fel y Resizer Delwedd safonol yn seiliedig ar AWS Lambda.

Gyda llaw, er gwaethaf atgasedd amlwg datblygwyr AWS ar gyfer .NET, maent yn cefnogi .NET Core 2.1 fel runtime, sy'n darparu ystod lawn o gyfleoedd datblygu.

A'r ceirios ar y gacen - mae AWS yn darparu gwasanaeth ar wahân ar gyfer gweithio gyda ffeiliau fideo - AWS Elemental MediaConvert.

Mae hanfod y gwaith yn anhygoel o syml: rydym yn cymryd dolen S3 i'r fideo sy'n mynd allan, yn ysgrifennu trwy AWS Console, .NET SDK neu yn syml JSON yr hyn yr ydym am ei wneud gyda'r fideo a ffoniwch y gwasanaeth. Mae ei hun yn gweithredu ciwiau ar gyfer prosesu ceisiadau sy'n dod i mewn, yn uwchlwytho'r canlyniad i S3 ei hun ac, yn bwysicaf oll, yn cynhyrchu Digwyddiad CloudWatch ar gyfer pob newid statws. Mae hyn yn ein galluogi i weithredu sbardunau lambda i gwblhau prosesu fideo.

Dull di-weinydd ar gyfer datblygiad cyflym gwasanaeth fideo gweithredol
Dyma sut olwg sydd ar y bensaernïaeth derfynol:

Mae'r cefn cyfan wedi'i gadw mewn dau lambda. Mae un arall ar gyfer cylchdroi fideos fertigol, gan na ellir gwneud gwaith o'r fath mewn un tocyn.

Byddwn yn gosod y blaen ar ffurf cais SPA wedi'i ysgrifennu yn JS ac wedi'i lunio trwy bug mewn bwced S3 cyhoeddus. I lawrlwytho'r fideos eu hunain, nid oes angen unrhyw god gweinydd arnom - mae angen i ni agor y pwyntiau terfyn REST y mae S3 yn eu darparu i ni. Yr unig beth yw peidiwch ag anghofio ffurfweddu polisïau a CORS.

Camgymeriadau

  • Mae AWS MediaConvert, am ryw reswm anhysbys, dim ond yn berthnasol sain i bob darn fideo ar wahân, ond mae angen cân siriol o'r arbedwr sgrin gyfan.
  • Mae angen prosesu fideos fertigol ar wahân. Nid yw AWS yn hoffi bariau du ac mae'n rhoi'r rholeri ar 90 °.

llawr sglefrio hawdd

Er gwaethaf holl harddwch di-wladwriaeth, mae angen i chi gadw golwg ar yr hyn sydd angen ei wneud gyda'r fideo: gludo neu ychwanegu sain i'r dilyniant fideo gorffenedig. Yn ffodus, mae MediaConvert yn cefnogi pasio metadata trwy ei Swyddi, a gallwn bob amser ddefnyddio baner syml o'r ffurf “isMasterSoundJob”, gan ddosrannu'r metadata hwn ar unrhyw adeg.

Mae Serverless yn berffaith yn caniatáu gweithio gyda NoOps - dull sy'n rhagdybio diangenrwydd tîm ar wahân sy'n gyfrifol am seilwaith y prosiect. Felly, mater bach ydoedd - rydym yn defnyddio'r ateb ar AWS heb gyfranogiad gweinyddwyr system, sydd bob amser â rhywbeth i'w wneud beth bynnag.
Ac i gyflymu hyn i gyd, rydym yn awtomeiddio'r sgript defnyddio cymaint â phosibl ar AWS CloudFormation, sy'n eich galluogi i ddefnyddio un botwm yn uniongyrchol o VS. O ganlyniad, mae ffeil o 200 llinell o god yn caniatáu ichi gyflwyno datrysiad parod, er y gall cystrawen CloudFormation fod yn syfrdanol os nad ydych chi'n gyfarwydd ag ef.

Yn gyfan gwbl

Nid yw Serverless yn ateb pob problem. Ond bydd yn gwneud bywyd yn llawer haws mewn sefyllfaoedd gyda thri therfyn: “adnoddau cyfyngedig - tymor byr - ychydig o arian.”

Nodweddion Cymwysiadau Addas ar gyfer Gweinyddwr

  • heb brosesau Rhedeg Hir. Terfyn caled Porth API yw 29 eiliad, terfyn caled lambda yw 5 munud;
  • a ddisgrifiwyd gan bensaernïaeth a yrrir gan Event;
  • yn torri i lawr yn gydrannau sydd wedi'u cyplysu'n llac fel SOA;
  • nid oes angen llawer o waith ar eich cyflwr;
  • wedi'i ysgrifennu yn .NET Core. I weithio gyda'r Fframwaith .NET, bydd angen o leiaf Docker arnoch gyda'r amser rhedeg priodol.

Manteision y dull Serverless

  • yn lleihau costau seilwaith;
  • yn lleihau cost cyflwyno'r ateb;
  • scalability awtomatig;
  • datblygiad sydd ar flaen y gad o ran cynnydd technolegol.

Anfanteision, gydag enghraifft benodol

  • Olrhain a logio wedi'u dosbarthu - wedi'u datrys yn rhannol trwy AWS X-Ray ac AWS CloudWatch;
  • dadfygio anghyfleus;
  • Cychwyn Oer pan nad oes llwyth;
  • Mae rhyngwyneb defnyddiwr-elyniaethus AWS yn broblem gyffredinol :)

Ffynhonnell: hab.com

Ychwanegu sylw