Serverless nga pamaagi alang sa paspas nga pag-uswag sa usa ka nagtrabaho nga serbisyo sa video

Serverless nga pamaagi alang sa paspas nga pag-uswag sa usa ka nagtrabaho nga serbisyo sa video

Nagtrabaho ko sa outsourcing, diin ang nag-unang prinsipyo mahimong mahulagway sa hugpong sa mga pulong nga "ibaligya og daghan, buhata kini sa madali." Kon mas paspas nato kining buhaton, mas dako ang atong kita. Ug, kini mao ang tilinguhaon nga ang tanan nga mga buhat dili sa crutches ug snot, apan uban sa usa ka madawat nga lebel sa kalidad. Isulti ko kanimo ang bahin sa akong kasinatian kung gikinahanglan ang paghimo og serbisyo nga pang-promosyon sa mubo nga panahon.

Gihatag: root account sa AWS, walay mga pagdili sa pagpili sa teknolohiya stack, usa ka backend, ug usa ka bulan alang sa kalamboan.

Usa ka buluhaton: ipatuman ang usa ka serbisyong pang-promosyon diin ang mga tiggamit mag-upload gikan sa usa ngadto sa upat ka mga video nga molungtad gikan sa usa ngadto sa upat ka segundos, nga unya gilakip sa orihinal nga serye sa video.

desisyon

Ang pagsulat sa imong kaugalingon nga serbisyo sa bisikleta sa ingon ka mubo nga panahon dili maayong ideya. Dugang pa, aron ang serbisyo makasagubang sa karga ug aron ang tanan makadawat sa gitinguha nga video, gikinahanglan ang imprastraktura. Ug labing maayo nga dili sa tag sa presyo gikan sa eroplano. Busa, nagpunting dayon kami sa mga andam nga solusyon nga adunay gamay nga pag-customize.

Ang standard nga solusyon sa pagtrabaho sa video mao ang FFmpeg, usa ka cross-platform console utility nga, pinaagi sa mga argumento, nagtugot kanimo sa pagputol ug pag-overdub sa audio. Ang nahabilin nga buhaton mao ang pagsulat sa usa ka wrapper ug buhian kini sa kinabuhi. Nagsulat kami og usa ka prototype nga nagtahi sa duha ka mga video, ug ... nagsugod ang kalingawan. Ang librarya gibase sa .NET Core 2, kinahanglan nga modagan kini sa bisan unsang virtual machine, mao nga magkuha kami usa ka pananglitan sa AWS EC2 ug ang tanan molihok

Gitago nga tekstodili, dili kini molihok
.
Bisan kung gipasimple sa FFmpeg ang buluhaton, alang sa usa ka tinuud nga solusyon nga nagtrabaho kinahanglan nimo nga maghimo usa ka pananglitan sa EC2 ug magdisenyo usa ka imprastraktura sa network alang niini, lakip ang usa ka Balancer sa Load. Ang yano nga tahas sa pag-deploy gikan sa wala nahimong "gamay" nga labi ka komplikado, ug ang imprastraktura nagsugod sa pagpangayo dayon og salapi - matag oras ang kantidad alang sa runtime gikuha gikan sa account sa kliyente.

Ang among serbisyo wala maglakip sa Long-Running nga mga proseso, wala magkinahanglan og dako ug tambok nga relational database, ug mohaum sa hingpit ngadto sa usa ka event-based nga arkitektura nga adunay kadena sa microservice nga mga tawag. Ang solusyon nagsugyot sa iyang kaugalingon - mahimo natong biyaan ang EC2 ug ipatuman ang usa ka tinuod nga walay server nga aplikasyon, sama sa standard Image Resizer base sa AWS Lambda.

Pinaagi sa dalan, bisan pa sa dayag nga dili gusto sa mga developer sa AWS alang sa .NET, gisuportahan nila ang .NET Core 2.1 isip runtime, nga naghatag sa usa ka bug-os nga han-ay sa mga oportunidad sa pagpalambo.

Ug ang cherry sa cake - Ang AWS naghatag usa ka lahi nga serbisyo alang sa pagtrabaho sa mga file sa video - AWS Elemental MediaConvert.

Ang esensya sa trabaho hilabihan ka yano: nagkuha kami og link sa S3 sa outgoing video, isulat pinaagi sa AWS Console, .NET SDK o yanong JSON kung unsa ang gusto namong buhaton sa video ug tawagan ang serbisyo. Kini mismo ang nagpatuman sa mga pila para sa pagproseso sa umaabot nga mga hangyo, nag-upload sa resulta sa S3 mismo ug, labaw sa tanan, nagmugna og CloudWatch Event alang sa matag pagbag-o sa status. Kini nagtugot kanamo sa pagpatuman sa lambda triggers aron makompleto ang pagproseso sa video.

Serverless nga pamaagi alang sa paspas nga pag-uswag sa usa ka nagtrabaho nga serbisyo sa video
Mao kini ang hitsura sa katapusang arkitektura:

Ang tibuok backend gibutang sa duha ka lambdas. Ang lain mao ang pag-rotate sa mga bertikal nga video, tungod kay ang ingon nga trabaho dili mahimo sa usa ka pass.

Atong ibutang ang atubangan sa porma sa aplikasyon sa SPA nga gisulat sa JS ug gihugpong pinaagi sa pug sa usa ka pampublikong balde nga S3. Aron ma-download ang mga video sa ilang kaugalingon, wala kami magkinahanglan og bisan unsang server code - kinahanglan lang namo nga ablihan ang REST endpoints nga gihatag kanamo sa S3. Ang bugtong butang mao ang ayaw kalimti ang pag-configure sa mga palisiya ug CORS.

Lit-ag

  • Ang AWS MediaConvert, alang sa pipila nga wala mahibal-an nga hinungdan, magamit ra ang tunog sa matag tipik sa video nga gilain, apan kinahanglan namon ang usa ka malipayon nga kanta gikan sa tibuuk nga screensaver.
  • Ang mga bertikal nga video kinahanglan nga iproseso nga gilain. Dili gusto sa AWS ang mga itom nga bar ug gibutang ang mga roller sa 90 °.

Sayon nga skating rink

Bisan pa sa tanan nga katahum sa Stateless, kinahanglan nimo nga bantayan kung unsa ang kinahanglan buhaton sa video: papilit o pagdugang audio sa nahuman nga pagkasunod-sunod sa video. Maayo na lang, gisuportahan sa MediaConvert ang pagpasa sa metadata pinaagi sa mga Trabaho niini, ug kanunay namong magamit ang usa ka yano nga bandila sa porma nga "isMasterSoundJob", pag-parse niini nga metadata sa bisan unsang yugto.

Ang Serverless hingpit nga nagtugot sa pagtrabaho kauban ang NoOps - usa ka pamaagi nga nag-angkon nga wala kinahanglana ang usa ka bulag nga team nga responsable sa imprastraktura sa proyekto. Busa, kini usa ka gamay nga butang - among gi-deploy ang solusyon sa AWS nga wala’y pag-apil sa mga administrador sa sistema, nga kanunay adunay buhaton.
Ug aron mapadali kining tanan, among gi-automate ang script sa pag-deploy kutob sa mahimo sa AWS CloudFormation, nga nagtugot kanimo sa pag-deploy gamit ang usa ka buton direkta gikan sa VS. Ingon usa ka sangputanan, ang usa ka file sa 200 nga linya sa code nagtugot kanimo sa paglansad sa usa ka andam nga solusyon, bisan kung ang CloudFormation syntax mahimong makapakurat kung wala ka naanad niini.

Total

Ang walay server dili usa ka panacea. Apan kini makapasayon ​​sa kinabuhi sa mga sitwasyon nga adunay tulo ka limitasyon: “limitado nga mga kahinguhaan—mubo nga termino—gamay nga kuwarta.”

Mga Kinaiya sa mga Aplikasyon nga Angay alang sa Walay Server

  • walay Long-Running nga mga proseso. API Gateway lisud nga limitasyon mao ang 29 segundos, lambda lisud nga limitasyon mao ang 5 minutos;
  • gihulagway pinaagi sa Event-Driven architecture;
  • nabungkag ngadto sa loosely coupled components sama sa SOA;
  • wala magkinahanglan og daghang trabaho sa imong kondisyon;
  • gisulat sa .NET Core. Aron makatrabaho uban sa .NET Framework, magkinahanglan gihapon ka ug Docker nga adunay tukma nga runtime.

Mga kaayohan sa walay server nga pamaagi

  • makapamenos sa gasto sa imprastraktura;
  • makapamenos sa gasto sa paghatod sa solusyon;
  • awtomatikong scalability;
  • pag-uswag sa tumoy sa pag-uswag sa teknolohiya.

Mga disbentaha, nga adunay usa ka piho nga pananglitan

  • Giapod-apod nga pagsubay ug pag-log - partially nasulbad pinaagi sa AWS X-Ray ug AWS CloudWatch;
  • dili kombenyente nga pag-debug;
  • Cold Start kung walay load;
  • Ang AWS user-hostile interface usa ka universal nga problema :)

Source: www.habr.com

Idugang sa usa ka comment