Равиши бе сервер барои рушди босуръати хидмати видеоии корӣ

Равиши бе сервер барои рушди босуръати хидмати видеоии корӣ

Ман дар аутсорсинг кор мекунам, ки дар он принсипи асосиро метавон бо ибораи “бисёр бифурӯш, зуд иҷро кун” тавсиф кард. Хар кадар тезтар ба чо оварем, хамон кадар бештар даромад мегирем. Ва, матлуб аст, ки ҳама чиз на дар асобагон ва snot, балки бо сатҳи қобили қабул кор мекунад. Ман ба шумо дар бораи таҷрибаи худ нақл мекунам, вақте ки лозим буд, ки дар як муддати кӯтоҳ хидмати таблиғотиро таҳия кунед.

дода шудааст: ҳисоби решавӣ дар AWS, ҳеҷ гуна маҳдудият дар интихоби стеки технологӣ, як пуштибонӣ ва як моҳ барои рушд.

Вазифа: як хидмати таблиғотиро амалӣ кунед, ки дар он корбарон аз як то чаҳор видеои давомдори аз як то чаҳор сония бор мекунанд, ки баъдан дар силсилаи видеоҳои аслӣ ҷойгир карда мешаванд.

ҳалли

Навиштани хидмати велосипедронии худ дар ин муддати кӯтоҳ фикри хуб нест. Илова бар ин, барои он ки хидмат бо сарборӣ тоб оварад ва ҳама видеои дилхоҳро гиранд, инфрасохтор талаб карда мешавад. Ва беҳтараш на бо теги нарх аз ҳавопаймо. Аз ин рӯ, мо фавран ба ҳалли омода бо мутобиқсозии ҳадди аққал тамаркуз мекунем.

Ҳалли стандартӣ барои кор бо видео FFmpeg, як утилитаи консолҳои байниплатформавӣ мебошад, ки тавассути далелҳо ба шумо имкон медиҳад, ки аудиоро бурида ва такрор кунед. Ҳама чизеро, ки бояд анҷом дод, навиштан ва ба ҳаёт раҳо кардан аст. Мо як прототипе менависем, ки ду видеоро бо ҳам мепайвандад ва... шавқовар оғоз мешавад. Китобхона ба .NET Core 2 асос ёфтааст, он бояд дар ҳама гуна мошини виртуалӣ кор кунад, аз ин рӯ мо намунаи AWS EC2-ро мегирем ва ҳама чиз кор хоҳад кард

Матни пинҳоншудане, он кор намекунад
.
Гарчанде ки FFmpeg вазифаро содда мекунад, барои ҳалли воқеан коркунанда шумо бояд як намунаи EC2 эҷод кунед ва инфрасохтори шабакаро барои он тарҳрезӣ кунед, аз ҷумла Load Balancer. Вазифаи оддии ҷойгиркунӣ аз сифр "каме" мушкилтар мешавад ва инфрасохтор фавран пул талаб мекунад - ҳар соат маблағ барои вақти корӣ аз ҳисоби муштарӣ гирифта мешавад.

Хидмати мо равандҳои дарозмуддатро дар бар намегирад, пойгоҳи додаҳои калон ва фарбеҳро талаб намекунад ва ба меъмории рӯйдодҳо асосёфта бо занҷири зангҳои микросервис комилан мувофиқат мекунад. Ҳалли худро пешниҳод мекунад - мо метавонем аз EC2 даст кашем ва як барномаи воқеии бесерверро татбиқ кунем, ба монанди Image Resizer стандартӣ дар асоси AWS Lambda.

Дар омади гап, сарфи назар аз нописандии ошкори таҳиягарони AWS барои .NET, онҳо .NET Core 2.1-ро ҳамчун вақти корӣ дастгирӣ мекунанд, ки маҷмӯи пурраи имкониятҳои рушдро фароҳам меорад.

Ва гелос дар торт - AWS хидмати алоҳида барои кор бо файлҳои видеоиро пешкаш мекунад - AWS Elemental MediaConvert.

Моҳияти кор бениҳоят оддӣ аст: мо истиноди S3-ро ба видеои содиротӣ мегирем, тавассути AWS Console, .NET SDK ё танҳо JSON менависем, ки мо бо видео чӣ кор кардан мехоҳем ва ба хидмат занг занем. Худи он навбатҳоро барои коркарди дархостҳои воридотӣ амалӣ мекунад, натиҷаро ба худи S3 бор мекунад ва муҳимтар аз ҳама, барои ҳар як тағирёбии вазъ чорабинии CloudWatch эҷод мекунад. Ин ба мо имкон медиҳад, ки триггерҳои ламбдаро барои анҷом додани коркарди видео амалӣ кунем.

Равиши бе сервер барои рушди босуръати хидмати видеоии корӣ
Меъмории ниҳоӣ чунин аст:

Тамоми пушти сар дар ду ламбда ҷойгир аст. Дигаре барои гардиши видеоҳои амудӣ аст, зеро ин корро дар як гузариш иҷро кардан мумкин нест.

Мо пешро дар шакли як барномаи SPA ҷойгир мекунем, ки дар JS навишта шудааст ва тавассути pug дар сатили ҷамъиятӣ S3 тартиб дода шудааст. Барои зеркашии худи видеоҳо ба мо ягон коди сервер лозим нест - мо танҳо бояд нуқтаҳои ниҳоии REST-ро кушоем, ки S3 ба мо медиҳад. Ягона чизе, ки танзим кардани сиёсатҳо ва CORS -ро фаромӯш накунед.

домҳо

  • AWS MediaConvert, бо сабабҳои номаълум, танҳо ба ҳар як фрагменти видео садоро алоҳида татбиқ мекунад, аммо ба мо як суруди шодмон аз тамоми экрани экран лозим аст.
  • Видеоҳои амудӣ бояд алоҳида коркард карда шаванд. AWS панҷараҳои сиёҳро дӯст намедорад ва роликҳоро дар 90 ° мегузорад.

Майдони яхмолакбозии осон

Сарфи назар аз ҳама зебогии Бедавлатӣ, шумо бояд пайгирӣ кунед, ки бо видео чӣ кор кардан лозим аст: ширеш кунед ё ба пайдарпаии видеои тайёр аудио илова кунед. Хушбахтона, MediaConvert интиқоли метамаълумотҳоро тавассути Ҷойҳои худ дастгирӣ мекунад ва мо ҳамеша метавонем парчами оддии шакли "isMasterSoundJob"-ро истифода бурда, ин метамаълумотро дар ҳама марҳила таҳлил кунем.

Serverless комилан имкон медиҳад, ки кор бо NoOps - равише, ки нолозим будани як гурӯҳи алоҳидаи масъули инфрасохтори лоиҳаро дар назар дорад. Аз ин рӯ, ин як масъалаи хурд буд - мо ҳалли худро дар AWS бе иштироки маъмурони система истифода мебарем, ки ҳамеша ба ҳар ҳол коре доранд.
Ва барои суръат бахшидан ба ин ҳама, мо скрипти густаришро то ҳадди имкон дар AWS CloudFormation автоматӣ мекунем, ки ба шумо имкон медиҳад, ки бо як тугма мустақиман аз VS ҷойгир кунед. Дар натиҷа, файли 200 сатри код ба шумо имкон медиҳад, ки ҳалли тайёрро паҳн кунед, гарчанде ки синтаксиси CloudFormation метавонад ҳайратовар бошад, агар шумо ба он одат накарда бошед.

Ҳамагӣ

Бе сервер як панацея нест. Аммо он ҳаётро дар ҳолатҳои дорои се маҳдудият осонтар мекунад: "захираҳои маҳдуд - кӯтоҳмуддат - пули кам".

Хусусиятҳои барномаҳое, ки барои бе сервер мувофиқанд

  • бе равандҳои дарозмуддат. Лимити сахти API Gateway 29 сония, маҳдудияти сахти lambda 5 дақиқа аст;
  • аз ҷониби меъмории рӯйдодҳо тавсиф карда шудааст;
  • ба ҷузъҳои бо ҳам пайвастшуда ба монанди SOA тақсим мешавад;
  • бо ҳолати шумо кори зиёдро талаб намекунад;
  • дар .NET Core навишта шудааст. Барои кор бо .NET Framework, шумо ба ҳар ҳол ҳадди аққал Docker бо вақти мувофиқ ниёз доред.

Манфиатҳои равиши бе сервер

  • хароҷоти инфрасохторро коҳиш медиҳад;
  • харочоти фиристодани махлулро кам мекунад;
  • миқёспазирии автоматӣ;
  • тараккиёт дар мархалаи прогресси техникй.

Камбудиҳо, бо мисоли мушаххас

  • Пайгирӣ ва сабти тақсимшуда - қисман тавассути AWS X-Ray ва AWS CloudWatch ҳал карда мешавад;
  • ислоҳи номувофиқ;
  • Сард оғоз вақте ки бор нест;
  • Интерфейси душманонаи корбар AWS як мушкилоти универсалӣ аст :)

Манбаъ: will.com

Илова Эзоҳ