Ishchi video xizmatini jadal rivojlantirish uchun serversiz yondashuv

Ishchi video xizmatini jadal rivojlantirish uchun serversiz yondashuv

Men autsorsingda ishlayman, bu erda asosiy tamoyilni "ko'p soting, tezda bajaring" iborasi bilan ta'riflash mumkin. Biz buni qanchalik tez bajarsak, shuncha ko'p pul topamiz. Va hamma narsa qo'ltiq va snotda emas, balki maqbul sifat darajasida ishlashi ma'qul. Qisqa vaqt ichida reklama xizmatini rivojlantirish kerak bo'lganda, men o'z tajribam haqida aytib beraman.

May: AWS da ildiz hisobi, texnologiya stekini tanlashda hech qanday cheklovlar, bitta backend va ishlab chiqish uchun bir oy.

Vazifa: foydalanuvchilar birdan to'rt soniyagacha davom etadigan birdan to'rttagacha videolarni yuklaydigan, keyinchalik asl video seriyasiga kiritilgan reklama xizmatini amalga oshirish.

qaror

Bunday qisqa vaqt ichida o'z velosiped xizmatini yozish yaxshi fikr emas. Bundan tashqari, xizmat yukni engib o'tishi va hamma orzu qilingan videoni olishi uchun infratuzilma kerak bo'ladi. Va tercihen samolyotdan narx yorlig'i bilan emas. Shuning uchun, biz darhol minimal moslashtirish bilan tayyor echimlarga e'tibor qaratamiz.

Video bilan ishlashning standart yechimi FFmpeg bo'lib, o'zaro platformali konsol yordam dasturi bo'lib, u argumentlar orqali audioni kesish va takrorlash imkonini beradi. Qolgan narsa - o'ramni yozish va uni hayotga chiqarish. Biz ikkita videoni birlashtiradigan prototip yozamiz va ... qiziqarli boshlanadi. Kutubxona .NET Core 2-ga asoslangan, u har qanday virtual mashinada ishlashi kerak, shuning uchun biz AWS EC2 misolini olamiz va hamma narsa ishlaydi

Yashirin matnyo'q, ishlamaydi
.
FFmpeg vazifani soddalashtirgan bo'lsa-da, haqiqatan ham ishlaydigan yechim uchun siz EC2 nusxasini yaratishingiz va u uchun tarmoq infratuzilmasini, shu jumladan Load Balancerni loyihalashingiz kerak. Noldan joylashtirishning oddiy vazifasi "bir oz" murakkablashadi va infratuzilma darhol pul talab qila boshlaydi - har soatda mijoz hisobidan ish vaqti uchun pul yechib olinadi.

Bizning xizmatimiz uzoq muddatli jarayonlarni o'z ichiga olmaydi, katta va qalin relyatsion ma'lumotlar bazasini talab qilmaydi va mikroservis qo'ng'iroqlari zanjiri bilan voqealarga asoslangan arxitekturaga juda mos keladi. Yechim o‘zini ko‘rsatadi – biz EC2 dan voz kechib, AWS Lambda asosidagi standart Image Resizer kabi haqiqiy serversiz dasturni amalga oshirishimiz mumkin.

Aytgancha, AWS ishlab chiquvchilari .NET uchun ochiq-oydin yoqtirmasliklariga qaramay, ular .NET Core 2.1 ni ish vaqti sifatida qo‘llab-quvvatlaydi, bu esa to‘liq rivojlanish imkoniyatlarini ta’minlaydi.

Tortdagi olcha - AWS videofayllar bilan ishlash uchun alohida xizmatni taqdim etadi - AWS Elemental MediaConvert.

Ishning mohiyati nihoyatda sodda: biz chiquvchi videoga S3 havolasini olamiz, AWS Console, .NET SDK yoki oddiygina JSON orqali video bilan nima qilishni xohlayotganimizni yozamiz va xizmatga qo'ng'iroq qilamiz. Uning o'zi kiruvchi so'rovlarni qayta ishlash uchun navbatlarni amalga oshiradi, natijani S3-ning o'ziga yuklaydi va eng muhimi, har bir holat o'zgarishi uchun CloudWatch hodisasini yaratadi. Bu bizga videoni qayta ishlashni yakunlash uchun lambda triggerlarini amalga oshirish imkonini beradi.

Ishchi video xizmatini jadal rivojlantirish uchun serversiz yondashuv
Yakuniy arxitektura shunday ko'rinadi:

Butun orqa qism ikkita lambdada joylashgan. Yana biri vertikal videolarni aylantirish uchun mo'ljallangan, chunki bunday ishni bir marta bajarish mumkin emas.

Biz old qismini JS-da yozilgan va pug orqali umumiy S3 paqirida tuzilgan SPA ilovasi shaklida joylashtiramiz. Videolarni o'zlari yuklab olish uchun bizga hech qanday server kodi kerak emas - biz faqat S3 taqdim etadigan REST so'nggi nuqtalarini ochishimiz kerak. Bitta narsa - siyosat va CORSni sozlashni unutmang.

makr

  • AWS MediaConvert, noma'lum sabablarga ko'ra, har bir video fragmentiga faqat ovozni alohida qo'llaydi, ammo bizga butun ekran pardasidan quvnoq qo'shiq kerak.
  • Vertikal videolarni alohida qayta ishlash kerak. AWS qora chiziqlarni yoqtirmaydi va roliklarni 90 ° ga qo'yadi.

Oson konkida uchish maydoni

Vatansizlarning barcha go'zalligiga qaramay, siz video bilan nima qilish kerakligini kuzatib borishingiz kerak: elim yoki tayyor video ketma-ketligiga audio qo'shing. Yaxshiyamki, MediaConvert o'zining Jobs orqali metama'lumotlarini uzatishni qo'llab-quvvatlaydi va biz har doim "isMasterSoundJob" shaklidagi oddiy bayroqdan foydalanishimiz mumkin, bu metama'lumotlarni istalgan bosqichda tahlil qilish.

Serversiz NoOps bilan ishlashga mukammal darajada imkon beradi - loyiha infratuzilmasi uchun mas'ul bo'lgan alohida guruhning keraksizligini nazarda tutadigan yondashuv. Shuning uchun, bu kichik masala edi - biz tizim ma'murlari ishtirokisiz AWS-da yechimni joylashtirdik, ular har doim nimadir qilishlari kerak.
Va bularning barchasini tezlashtirish uchun biz AWS CloudFormation-da joylashtirish skriptini iloji boricha avtomatlashtiramiz, bu sizga VS-dan to'g'ridan-to'g'ri bitta tugma bilan joylashtirish imkonini beradi. Natijada, 200 qatorli kod fayli sizga tayyor yechimni chiqarishga imkon beradi, garchi CloudFormation sintaksisi siz bunga o'rganmagan bo'lsangiz ham hayratlanarli bo'lishi mumkin.

jami

Serversiz - bu panatseya emas. Ammo bu uchta cheklovli vaziyatlarda hayotni ancha osonlashtiradi: "cheklangan resurslar - qisqa muddatli - oz pul".

Serversiz uchun mos bo'lgan ilovalarning xususiyatlari

  • Uzoq muddatli jarayonlarsiz. API Gateway qattiq chegarasi 29 soniya, lambda qattiq chegarasi 5 daqiqa;
  • Voqealarga asoslangan arxitektura tomonidan tasvirlangan;
  • SOA kabi erkin bog'langan komponentlarga bo'linadi;
  • sizning ahvolingiz bilan ko'p ishlashni talab qilmaydi;
  • .NET Core da yozilgan. .NET Framework bilan ishlash uchun sizga hech bo'lmaganda tegishli ish vaqtiga ega Docker kerak bo'ladi.

Serversiz yondashuvning afzalliklari

  • infratuzilma xarajatlarini kamaytiradi;
  • yechimni yetkazib berish narxini pasaytiradi;
  • avtomatik o'lchash imkoniyati;
  • texnologik taraqqiyotning eng yuqori cho'qqisida rivojlanish.

Kamchiliklari, aniq bir misol bilan

  • Taqsimlangan kuzatuv va jurnallar - AWS X-Ray va AWS CloudWatch orqali qisman hal qilindi;
  • noqulay disk raskadrovka;
  • Yuk bo'lmaganda sovuq ishga tushirish;
  • AWS foydalanuvchining dushman interfeysi universal muammodir :)

Manba: www.habr.com

a Izoh qo'shish