
StrÄdÄju Ärpakalpojumos, kur galveno principu var raksturot ar frÄzi āpÄrdod daudz, dari Ätriā. Jo ÄtrÄk mÄs to izdarÄ«sim, jo āāvairÄk nopelnÄ«sim. Un, vÄlams, lai viss darbotos nevis uz kruÄ·iem un puÅÄ·iem, bet gan ar pieÅemamu kvalitÄtes lÄ«meni. PastÄstīŔu par savu pieredzi, kad bija nepiecieÅ”ams Ä«sÄ laika periodÄ izstrÄdÄt akcijas servisu.
Å emot vÄrÄ: saknes konts AWS, bez ierobežojumiem tehnoloÄ£iju steka izvÄlei, viena aizmugursistÄma un viens mÄnesis izstrÄdei.
Uzdevums: ieviest reklÄmas pakalpojumu, kurÄ lietotÄji augÅ”upielÄdÄ no viena lÄ«dz Äetriem videoklipiem, kuru ilgums ir no vienas lÄ«dz ÄetrÄm sekundÄm, kas pÄc tam tiek iegulti oriÄ£inÄlajÄ video sÄrijÄ.
Šķīdums
UzrakstÄ«t savu velosipÄdu servisu tik Ä«sÄ laikÄ nav laba ideja. TurklÄt, lai dienests tiktu galÄ ar slodzi un ikviens saÅemtu kÄroto video, bÅ«s nepiecieÅ”ama infrastruktÅ«ra. Un vÄlams ne ar cenu zÄ«mi no lidmaŔīnas. TÄpÄc mÄs nekavÄjoties koncentrÄjamies uz gataviem risinÄjumiem ar minimÄlu pielÄgoÅ”anu.
Standarta risinÄjums darbam ar video ir FFmpeg, starpplatformu konsoles utilÄ«ta, kas, izmantojot argumentus, ļauj izgriezt un pÄrdublÄt audio. Atliek tikai uzrakstÄ«t iesaiÅojumu un atbrÄ«vot to dzÄ«vÄ. MÄs uzrakstÄm prototipu, kas savieno divus videoklipus, un... jautrÄ«ba sÄkas. BibliotÄkas pamatÄ ir .NET Core 2, tai vajadzÄtu darboties jebkurÄ virtuÄlajÄ maŔīnÄ, tÄpÄc mÄs Åemam AWS EC2 gadÄ«jumu un viss darbosies.
SlÄpts tekstsnÄ, tas nedarbosies
.
Lai gan FFmpeg vienkÄrÅ”o uzdevumu, patiesi strÄdÄjoÅ”am risinÄjumam ir jÄizveido EC2 instance un jÄizveido tam tÄ«kla infrastruktÅ«ra, tostarp Load Balancer. VienkÄrÅ”ais izvietoÅ”anas uzdevums no nulles kļūst ānedaudzā sarežģītÄks, un infrastruktÅ«ra nekavÄjoties sÄk pieprasÄ«t naudu - katru stundu no klienta konta tiek izÅemta summa par izpildes laiku.
MÅ«su pakalpojums neietver ilgstoÅ”us procesus, tam nav nepiecieÅ”ama liela un apjomÄ«ga relÄciju datu bÄze, un tas lieliski iekļaujas uz notikumiem balstÄ«tÄ arhitektÅ«rÄ ar mikropakalpojumu zvanu Ä·Ädi. RisinÄjums liecina par sevi ā mÄs varam atteikties no EC2 un ieviest Ä«stu bezservera lietojumprogrammu, piemÄram, standarta Image Resizer, kura pamatÄ ir AWS Lambda.
Starp citu, neskatoties uz acÄ«mredzamo AWS izstrÄdÄtÄju nepatiku pret .NET, viÅi atbalsta .NET Core 2.1 kÄ izpildlaiku, kas nodroÅ”ina pilnu attÄ«stÄ«bas iespÄju klÄstu.
Un ķirsis uz kūkas - AWS nodroŔina atseviŔķu pakalpojumu darbam ar video failiem - AWS Elemental MediaConvert.
Darba bÅ«tÄ«ba ir neticami vienkÄrÅ”a: mÄs paÅemam S3 saiti uz izejoÅ”o video, ierakstÄm caur AWS konsoli, .NET SDK vai vienkÄrÅ”i JSON, ko vÄlamies darÄ«t ar video, un izsaucam pakalpojumu. Tas pats ievieÅ” rindas ienÄkoÅ”o pieprasÄ«jumu apstrÄdei, augÅ”upielÄdÄ rezultÄtu paÅ”Ä S3 un, pats galvenais, Ä£enerÄ CloudWatch notikumu katrai statusa maiÅai. Tas ļauj mums ieviest lambda trigerus, lai pabeigtu video apstrÄdi.

LÅ«k, kÄ izskatÄs galÄ«gÄ arhitektÅ«ra:
Visa aizmugure ir izvietota divÄs lambdas. VÄl viens ir paredzÄts vertikÄlu video pagrieÅ”anai, jo Å”Ädu darbu nevar paveikt vienÄ piegÄjienÄ.
PriekÅ”pusi ievietosim JS valodÄ rakstÄ«tas un ar mopÅ”a starpniecÄ«bu sastÄdÄ«tas SPA pieteikuma formÄ publiskÄ S3 spainÄ«. Lai lejupielÄdÄtu paÅ”us videoklipus, mums nav nepiecieÅ”ams nekÄds servera kods ā mums vienkÄrÅ”i jÄatver REST galapunkti, ko mums nodroÅ”ina S3. VienÄ«gais, neaizmirstiet konfigurÄt politikas un CORS.
Slazdiem
- AWS MediaConvert nezinÄmu iemeslu dÄļ skaÅu piemÄro tikai katram video fragmentam atseviŔķi, taÄu mums ir nepiecieÅ”ama jautra dziesma no visa ekrÄnsaudzÄtÄja.
- VertikÄlie videoklipi ir jÄapstrÄdÄ atseviŔķi. AWS nepatÄ«k melnas joslas un noliek rullīŔus 90° leÅÄ·Ä«.
Viegla slidotava
Neskatoties uz visu bezvalstnieku skaistumu, jums ir jÄseko lÄ«dzi tam, kas jÄdara ar videoklipu: pielÄ«mÄjiet vai pievienojiet audio gatavajai video secÄ«bai. Par laimi, MediaConvert atbalsta metadatu nodoÅ”anu, izmantojot savus darbus, un mÄs vienmÄr varam izmantot vienkÄrÅ”u karogu formÄ āisMasterSoundJobā, analizÄjot Å”os metadatus jebkurÄ posmÄ.
Bez servera lieliski ļauj strÄdÄt ar NoOps ā pieeju, kas paredz atseviŔķas komandas, kas atbildÄ«ga par projekta infrastruktÅ«ru, nevajadzÄ«gumu. TÄpÄc tas bija mazs jautÄjums - mÄs izvietojÄm risinÄjumu AWS bez sistÄmas administratoru lÄ«dzdalÄ«bas, kuriem vienmÄr ir ko darÄ«t.
Un, lai to visu paÄtrinÄtu, mÄs pÄc iespÄjas vairÄk automatizÄjam izvietoÅ”anas skriptu AWS CloudFormation, kas ļauj izvietot ar vienu pogu tieÅ”i no VS. RezultÄtÄ fails ar 200 koda rindiÅÄm ļauj izvÄrst gatavu risinÄjumu, lai gan CloudFormation sintakse var bÅ«t Å”okÄjoÅ”a, ja neesat pie tÄ pieradis.
KopÄ
Bez servera nav panaceja. Bet tas padarÄ«s dzÄ«vi daudz vieglÄku situÄcijÄs ar trim ierobežojumiem: "ierobežoti resursi ā Ä«stermiÅa ā maz naudas."
Bezserveriem piemÄroto lietojumprogrammu raksturojums
- bez ilgstoÅ”iem procesiem. API vÄrtejas cietais ierobežojums ir 29 sekundes, lambda cietais ierobežojums ir 5 minÅ«tes;
- apraksta Event-Driven arhitektūra;
- sadalÄs brÄ«vi savienotos komponentos, piemÄram, SOA;
- neprasa daudz darba ar jÅ«su stÄvokli;
- rakstÄ«ts .NET Core. Lai strÄdÄtu ar .NET Framework, jums joprojÄm bÅ«s nepiecieÅ”ams vismaz Docker ar atbilstoÅ”u izpildlaiku.
Bez servera pieejas priekŔrocības
- samazina infrastruktūras izmaksas;
- samazina risinÄjuma piegÄdes izmaksas;
- automÄtiska mÄrogojamÄ«ba;
- attÄ«stÄ«ba tehnoloÄ£iskÄ progresa lÄ«deriem.
TrÅ«kumi, ar konkrÄtu piemÄru
- IzplatÄ«ta izsekoÅ”ana un reÄ£istrÄÅ”ana ā daļÄji atrisinÄta, izmantojot AWS X-Ray un AWS CloudWatch;
- neÄrta atkļūdoÅ”ana;
- AukstÄ iedarbinÄÅ”ana, kad nav slodzes;
- AWS lietotÄjam naidÄ«gs interfeiss ir universÄla problÄma :)
Avots: www.habr.com
