Apwòch san sèvè pou devlopman rapid nan yon sèvis videyo k ap travay

Apwòch san sèvè pou devlopman rapid nan yon sèvis videyo k ap travay

Mwen travay nan externalisation, kote prensip prensipal la ka dekri nan fraz "vann anpil, fè li byen vit." Plis nou fè li vit, plis n ap touche. Epi, li se dezirab ke tout bagay travay pa sou beki ak snot, men ak yon nivo akseptab nan bon jan kalite. Mwen pral di w sou eksperyans mwen lè li te nesesè yo devlope yon sèvis pwomosyon nan yon peryòd tan kout.

Etandone: kont rasin sou AWS, pa gen okenn restriksyon sou chwa nan pile teknoloji, yon backend, ak yon mwa pou devlopman.

Yon travay: aplike yon sèvis pwomosyon kote itilizatè yo telechaje soti nan youn a kat videyo ki dire ant youn ak kat segonn, ki fè yo entegre nan seri videyo orijinal la.

desizyon

Ekri pwòp sèvis bisiklèt ou a nan yon ti tan konsa se pa yon bon lide. Anplis de sa, nan lòd pou sèvis la fè fas ak chaj la ak pou tout moun resevwa videyo a te sitèlman anvi, enfrastrikti yo pral nesesè. Epi de preferans pa ak pri tag nan avyon an. Se poutèt sa, nou imedyatman konsantre sou solisyon pare-fè ak personnalisation minim.

Solisyon estanda pou travay ak videyo se FFmpeg, yon sèvis piblik konsole kwa-platfòm ki, atravè agiman, pèmèt ou koupe ak overdub odyo. Tout sa ki rete pou fè se ekri yon wrapper epi lage li nan lavi. Nou ekri yon pwototip ki koud de videyo ansanm, epi... plezi a kòmanse. Bibliyotèk la baze sou .NET Core 2, li ta dwe kouri sou nenpòt machin vityèl, kidonk nou pran yon egzanp AWS EC2 ak tout bagay pral travay.

Tèks kachenon, li pap travay
.
Malgre ke FFmpeg senplifye travay la, pou yon solisyon vrèman travay ou bezwen kreye yon egzanp EC2 ak konsepsyon yon enfrastrikti rezo pou li, ki gen ladan yon balanse chaj. Travay la senp nan deplwaye nan grafouyen vin "yon ti kras" pi konplike, ak enfrastrikti a kòmanse mande lajan imedyatman - chak èdtan yo retire kantite lajan an pou ègzekutabl nan kont kliyan an.

Sèvis nou an pa enplike pwosesis ki dire lontan, li pa mande pou yon baz done relasyon gwo ak gra, epi li anfòm parfe nan yon achitekti ki baze sou evènman ak yon chèn nan apèl mikwosèvis. Solisyon an sijere tèt li - nou ka abandone EC2 epi aplike yon aplikasyon vre-sèvè, tankou estanda Image Resizer ki baze sou AWS Lambda.

By wout la, malgre evidan pa renmen devlopè AWS pou .NET, yo sipòte .NET Core 2.1 kòm ègzekutabl, ki bay yon seri konplè opòtinite devlopman.

Epi seriz la sou gato a - AWS bay yon sèvis separe pou travay ak dosye videyo - AWS Elemental MediaConvert.

Sans nan travay la se ekstrèmman senp: nou pran yon lyen S3 nan videyo sortan an, ekri nan AWS Console, .NET SDK oswa tou senpleman JSON sa nou vle fè ak videyo a epi rele sèvis la. Li menm li aplike ke moun kap kriye pou trete demann ki fèk ap rantre, telechaje rezilta a nan S3 tèt li epi, sa ki pi enpòtan, jenere yon Evènman CloudWatch pou chak chanjman estati. Sa pèmèt nou aplike deklanche lambda pou konplete pwosesis videyo.

Apwòch san sèvè pou devlopman rapid nan yon sèvis videyo k ap travay
Men sa achitekti final la sanble:

Se backend a tout antye loje nan de lambda. Yon lòt se pou wotasyon videyo vètikal, depi travay sa yo pa ka fè nan yon sèl pas.

Nou pral mete devan an nan fòm lan nan yon aplikasyon SPA ekri nan JS ak konpile atravè pug nan yon bokit piblik S3. Pou telechaje videyo yo tèt yo, nou pa bezwen okenn kòd sèvè - nou jis bezwen louvri pwen final REST ke S3 bay nou. Bagay la sèlman se pa bliye konfigirasyon politik ak CORS.

Enkonvenyans

  • AWS MediaConvert, pou kèk rezon enkoni, sèlman aplike son nan chak fragman videyo separeman, men nou bezwen yon chante kè kontan soti nan tout ekran an.
  • Videyo vètikal yo bezwen trete separeman. AWS pa renmen ba nwa epi li mete woulèt yo nan 90 °.

Pist artistik fasil

Malgre tout bèlte Apatrid, ou bezwen kenbe tras de sa ki bezwen fè ak videyo a: kole oswa ajoute odyo nan sekans videyo a fini. Erezman, MediaConvert sipòte pase metadata nan Travay li yo, epi nou ka toujou itilize yon drapo senp nan fòm "isMasterSoundJob", analize metadata sa a nan nenpòt etap.

Sansève pafètman pèmèt travay ak NoOps - yon apwòch ki sipoze pa nesesè nan yon ekip separe responsab pou enfrastrikti pwojè a. Se poutèt sa, se te yon ti pwoblèm - nou deplwaye solisyon an sou AWS san patisipasyon administratè sistèm yo, ki toujou gen yon bagay yo fè de tout fason.
Epi pou akselere tout bagay sa yo, nou otomatize script deplwaman sou AWS CloudFormation otank posib, sa ki pèmèt ou deplwaye ak yon sèl bouton dirèkteman nan VS. Kòm yon rezilta, yon dosye ki gen 200 liy kòd pèmèt ou woule yon solisyon pare, byenke sentaks CloudFormation ka chokan si ou pa abitye avèk li.

Nan total

San sèvè se pa yon mirak. Men, li pral rann lavi anpil pi fasil nan sitiyasyon ki gen twa limit: "resous limite - kout tèm - ti lajan."

Karakteristik aplikasyon yo apwopriye pou san sèvè

  • san yo pa pwosesis ki dire lontan. Limit API Gateway difisil se 29 segonn, limit lambda difisil se 5 minit;
  • dekri pa Evènman-Kondwi achitekti;
  • kraze nan eleman ki lach makonnen tankou SOA;
  • pa mande anpil travay ak kondisyon ou;
  • ekri nan .NET Core. Pou travay ak .NET Framework, w ap toujou bezwen omwen Docker ak ègzekutabl ki apwopriye a.

Benefis apwòch la Serverless

  • diminye depans enfrastrikti;
  • diminye pri a nan livrezon solisyon an;
  • otomatik évolutivité;
  • devlopman nan dènye kri pwogrè teknolojik.

Dezavantaj, ak yon egzanp espesifik

  • Distribiye trase ak anrejistreman - pasyèlman rezoud atravè AWS X-Ray ak AWS CloudWatch;
  • debogaj enkonvenyan;
  • Kòmanse frèt lè pa gen okenn chaj;
  • Koòdone itilizatè-ostil AWS se yon pwoblèm inivèsèl :)

Sous: www.habr.com

Add nouvo kòmantè