{"id":32196,"date":"2019-10-31T21:45:37","date_gmt":"2019-10-31T18:45:37","guid":{"rendered":"https:\/\/prohoster.info\/blog\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa\/"},"modified":"2019-10-31T21:45:37","modified_gmt":"2019-10-31T18:45:37","slug":"serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa","title":{"rendered":"Serverless l\u00e4henemine kiire video teenuse arendamiseks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Serverless l\u00e4henemine kiire video teenuse arendamiseks\" src=\"\/wp-content\/uploads\/2019\/04\/8920670de611e8f2d237e0b4eef532f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa t\u00f6\u00f6tan outsourcena, kus peamine p\u00f5him\u00f5te on \u00abm\u00fc\u00fc palju, tee kiiresti\u00bb. Mida kiiremini suudame teha, seda rohkem teenime. Ja soovitavalt peaks k\u00f5ik toimima mitte kergelt, vaid vastuv\u00f5tlikul kvaliteeditasemel. R\u00e4\u00e4gin oma kogemusest, mil tuli l\u00fchikese aja jooksul arendada promoteenus.<\/p>\n<p><b>Antud:<\/b> root-konto AWS-is, tehnolooge valides pole piiranguid, \u00fcks backend arendaja ja kuu arendamiseks.<\/p>\n<p><b>\u00dclesanne:<\/b> rakendada promoteenus, kus kasutajad saavad \u00fcles laadida \u00fche kuni neli videot, mille kestus on \u00fchest nelja sekundini, mis seej\u00e4rel integreeritakse originaalsesse videovoogu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Lahendus<\/h2>\n<p>\nOma teenuse kirjutamine selliste l\u00fchikeste t\u00e4htaegadega \u2014 pole just parim plaan. Lisaks peab teenus taluma koormust ja k\u00f5ik soovijad saama oma soovitud video, seet\u00f5ttu on vajalik infrastruktuur. Soovitavalt mitte liiga kallis. Seet\u00f5ttu keskendume kohe valmislahendusele minimaalse kohandamisega. <\/p>\n<p>Standardne lahendus videoga t\u00f6\u00f6tamiseks on FFmpeg, platvormidevaheline konsoolirakendus, mis v\u00f5imaldab argumentide kaudu nii l\u00f5igata kui ka heli lisada. J\u00e4\u00e4b vaid kirjutada wrapper ja viia see ellu. Kirjutame protot\u00fc\u00fcbi, mis toob kokku kaks videot, ja... algab k\u00f5ige huvitavam osa. Raamatukogu .NET Core 2, peab t\u00f6\u00f6tama igas virtuaalmasinas, seega v\u00f5tame AWS EC2 instantsi ja k\u00f5ik t\u00f6\u00f6tab. <\/p>\n<p><b class=\"spoiler_title\">Peidetud tekst<\/b>ei, see ei t\u00f6\u00f6ta.<br \/>\n.<br \/>\nFFmpeg, kuigi lihtsustab \u00fclesannet, vajab t\u00f5eliselt toimiva lahenduse jaoks EC2 instantsi loomist ja selle v\u00f5rguinfrastruktuuri projekteerimist, sealhulgas koormuse jagajat. Lihtne \u00fclesande juurutamine nullist on \u00abveidi\u00bb keerulisem, ning infrastruktuur hakkab kohe n\u00f5udma raha \u2014 iga tund eemaldatakse klientide kontolt summa jooksutamise eest.<\/p>\n<p>Meie teenus ei eelda pikaajalisi protsesse, ei vaja suurt ja mahukat relatsioonilist andmebaasi ning mahub suurep\u00e4raselt s\u00fcndmuste arhitektuuri, kus on mikroteenuste kutsumise ahel. Lahendus tuleb iseenesest \u2014 saame loobuda EC2-st ja rakendada t\u00f5eliselt serverivaba rakendust, sarnast standardset Image Resizer AWS Lambda baasil. <\/p>\n<p>Muide, kuigi AWS arendajatel on selge antipaatia .NETi vastu, toetavad nad .NET Core 2.1 jooksutajana, mis annab k\u00f5ik arendamise v\u00f5imalused.<\/p>\n<p>Ja l\u00f5petuseks \u2014 AWS pakub eraldi teenust videofailidega t\u00f6\u00f6tamiseks \u2014 AWS Elemental MediaConvert. <\/p>\n<p>T\u00f6\u00f6 olemus on uskumatult lihtne: v\u00f5tame S3 lingi l\u00e4htevideole, kirjutame AWS Console'i, .NET SDK-s v\u00f5i lihtsalt JSON-is, mida soovime videoga teha, ja kutsume teenuse. See ise haldab sisendk\u00fcsimuste t\u00f6\u00f6tlemiseks j\u00e4rjekordi, laadib tulemuse automaatselt S3 ja, mis k\u00f5ige t\u00e4htsam, genereerib iga staatuse muutuse jaoks CloudWatch Event. See v\u00f5imaldab meil rakendada lambdate trikke video t\u00f6\u00f6tlemise l\u00f5petamiseks.<\/p>\n<p><img decoding=\"async\" alt=\"Serverless l\u00e4henemine kiire video teenuse arendamiseks\" src=\"\/wp-content\/uploads\/2019\/04\/4237992584ca25c45f77fdc8a37f899d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nii n\u00e4eb v\u00e4lja l\u00f5plik arhitektuuri variant. <\/i><\/p>\n<p>Kogu backend on paigutatud kahte lambdasse. Veel \u00fcks on vertikaalsete videote p\u00f6\u00f6ramiseks, kuna sellist t\u00f6\u00f6d ei saa teostada \u00fche k\u00e4iguga.<\/p>\n<p>Front-end SPA-rakenduse kujul, kirjutatud JS-is ja kompileeritud l\u00e4bi pug, paneme avalikku S3 korvi. Videote \u00fcleslaadimiseks ei vaja me mingit serveripoolset koodi \u2014 piisab, kui avada S3 poolt pakutavad REST-l\u00f5pp-punktid. Ainus punkt \u2014 \u00e4rge unustage seadistada poliitikaid ja CORS-i. <\/p>\n<h2>Peidetud probleemid<\/h2>\n<p><\/p>\n<ul>\n<li>AWS MediaConvert, mingil tunmatu p\u00f5hjusel, lisab heli ainult iga videol\u00f5igu peale eraldi, kuigi vajalik on l\u00f5bus laul, mis k\u00e4ivitub koos sissejuhatusega.<\/li>\n<li>Vertikaalid videod tuleb t\u00f6\u00f6delda eraldi. AWS ei v\u00e4rava mustade ribade ja paneb videod 90\u00b0. <\/li>\n<\/ul>\n<h2>Lihtne mure.<\/h2>\n<p>\nHoolimata kogu Statelessi ilust, on vajalik j\u00e4lgida, mida video tegemiseks teha: kas liita v\u00f5i lisada heli juba valmis videopildile. \u00d5nneks toetab MediaConvert metainformatsiooni edastamist oma T\u00f6\u00f6de kaudu, ja me saame alati rakendada lihtsa lipu, n\u00e4iteks \u201cisMasterSoundJob\u201d, need metainformatsioonid eristades igal etapil.<\/p>\n<p>Serverless v\u00f5imaldab suurep\u00e4raselt t\u00f6\u00f6tada NoOps'i l\u00e4henemisviisiga \u2014 meetod, mis v\u00e4listab eraldi meeskonna vajaduse, kes vastutab projekti infrastruktuuri eest. Nii et asi oli kerge \u2014 juurutame lahenduse AWS-is ilma s\u00fcsteemiadminnide osaluseta, kellel alati on muud toimetused. <br \/>\nJa et seda k\u00f5ike kiirendada, maksimaalselt automatiseerime juurutamise AWS CloudFormation'i skripti kaudu, v\u00f5imaldades juurutamist \u00fche nupuvajutusega otse VS-st. L\u00f5puks, 200 rea koodi fail v\u00f5imaldab v\u00e4lja anda valmis lahenduse, kuigi CloudFormation'i s\u00fcntaks v\u00f5ib harjumatus olukorras \u0161okeerida.<\/p>\n<h2>Kokku<\/h2>\n<p>\nServerless \u2014 ei ole paanitse. Kuid see lihtsustab elu olukordades, kus on kolm limiiti: \u00abpiiratud ressursid \u2014 l\u00fchike t\u00e4htaeg \u2014 v\u00e4he raha\u00bb.<\/p>\n<p><b>Rakenduste omadused, millele Serverless sobib.<\/b><\/p>\n<ul>\n<li>ilma Long-Running protsessidest. API Gateway'i karm piir on 29 sekundit, lambdade karm piir on 5 minutit;<\/li>\n<li>kirjeldatakse Event-Driven arhitektuuriga;<\/li>\n<li>jagatakse madala seotuse komponentideks, nagu SOA;<\/li>\n<li>ei n\u00f5ua suurt t\u00f6\u00f6d oma olekuga;<\/li>\n<li>kirjutatud .NET Core'is. .NET Framework'i jaoks on endiselt vajalik v\u00e4hemalt Docker koos vastava jooksukeskkonnaga.<\/li>\n<\/ul>\n<p>\n<b>Serverless l\u00e4henemise eelised<\/b><\/p>\n<ul>\n<li>v\u00e4hendab infrastruktuuri kulusid;<\/li>\n<li>v\u00e4hendab lahenduse tarnimise kulusid;<\/li>\n<li>automaatne skaaleerimine;<\/li>\n<li>arendus tehnoloogia tipptasemel. <\/li>\n<\/ul>\n<p>\n<b>Puudused, konkreetse n\u00e4ite p\u00f5hjal<\/b><\/p>\n<ul>\n<li>Jaotatud j\u00e4lgimine ja logimine - osaliselt lahendatav AWS X-Ray ja AWS CloudWatch kaudu;<\/li>\n<li>ebamugav silumine;<\/li>\n<li>Cold Start ilma koormuseta;<\/li>\n<li>Kasutajale ebas\u00f5bralik AWS liides - universaalne probleem \ud83d\ude42<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/448974\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0435, \u0433\u0434\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0440\u0430\u0437\u043e\u0439 \u00ab\u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0439 \u043c\u043d\u043e\u0433\u043e, \u0434\u0435\u043b\u0430\u0439 \u0431\u044b\u0441\u0442\u0440\u043e\u00bb. \u0427\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c. \u0418, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0435 \u043d\u0430 \u043a\u043e\u0441\u0442\u044b\u043b\u044f\u0445 \u0438 \u0441\u043e\u043f\u043b\u044f\u0445, \u0430 \u0441 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0441\u0440\u043e\u043a \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u043e-\u0441\u0435\u0440\u0432\u0438\u0441. \u0414\u0430\u043d\u043e: root-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430 AWS, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24024,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32196","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0435, \u0433\u0434\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Serverless-\u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043e-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0435, \u0433\u0434\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:45:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:45:37+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Serverless-lahendus kiire video teenuse arendamiseks | ProHoster","description":"Ma t\u00f6\u00f6tan allhankes, kus.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Serverless-\u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0432\u0438\u0434\u0435\u043e-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 | ProHoster","og:description":"\u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0435, \u0433\u0434\u0435.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/serverless-podhod-dlya-bystroj-razrabotki-rabochego-video-servisa","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:45:37+00:00","article:modified_time":"2019-10-31T18:45:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32196","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 09:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:03:23","updated":"2026-01-21 09:44:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=32196"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32196\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24024"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}