වැඩ කරන වීඩියෝ සේවාවක වේගවත් සංවර්ධනය සඳහා සර්වර් රහිත ප්රවේශය

වැඩ කරන වීඩියෝ සේවාවක වේගවත් සංවර්ධනය සඳහා සර්වර් රහිත ප්රවේශය

මම වැඩ කරන්නේ බාහිරින් ලබා ගැනීමේදී, එහි ප්‍රධාන මූලධර්මය “බොහෝ දේ විකුණන්න, එය ඉක්මනින් කරන්න” යන වාක්‍ය ඛණ්ඩයෙන් විස්තර කළ හැකිය. අපි එය වේගයෙන් කරන තරමට, අපට වැඩි ආදායමක් ලැබෙනු ඇත. තවද, සෑම දෙයක්ම කිහිලිකරු සහ snot මත නොව, නමුත් පිළිගත හැකි ගුණාත්මක මට්ටමකින් ක්රියා කිරීම යෝග්ය වේ. කෙටි කාලයක් තුළ ප්‍රවර්ධන සේවාවක් සංවර්ධනය කිරීමට අවශ්‍ය වූ විට මගේ අත්දැකීම් ගැන මම ඔබට කියමි.

ලබා දී ඇත්තේ: AWS හි root ගිණුම, තාක්‍ෂණ තොගය තේරීමට සීමාවන් නොමැත, එක් පසුබිමක් සහ සංවර්ධනය සඳහා මාසයක්.

අභියෝගය: ප්‍රවර්ධන සේවාවක් ක්‍රියාත්මක කරන්න පරිශීලකයින් තත්පර 1 සිට 4 දක්වා කාලයක් පවතින වීඩියෝ එක සිට හතර දක්වා උඩුගත කරන අතර ඒවා මුල් වීඩියෝ මාලාවේ අන්තර්ගත වේ.

තීරණය

එවැනි කෙටි කාලයක් තුළ ඔබේම බයිසිකල් සේවාව ලිවීම හොඳ අදහසක් නොවේ. ඊට අමතරව, සේවාව බර සමඟ සාර්ථකව කටයුතු කිරීම සඳහා සහ සෑම කෙනෙකුටම කැමති වීඩියෝව ලබා ගැනීම සඳහා යටිතල පහසුකම් අවශ්‍ය වේ. සහ වඩාත් සුදුසු වන්නේ ගුවන් යානයෙන් මිල ටැගය සමඟ නොවේ. එමනිසා, අපි වහාම අවම අභිරුචිකරණයක් සහිත සූදානම් කළ විසඳුම් කෙරෙහි අවධානය යොමු කරමු.

වීඩියෝ සමඟ වැඩ කිරීම සඳහා සම්මත විසඳුම FFmpeg, හරස් වේදිකා කොන්සෝල උපයෝගිතා වන අතර, තර්ක හරහා, ඔබට ශ්‍රව්‍ය කපා හැරීමට සහ වැඩි කිරීමට ඉඩ සලසයි. කිරීමට ඉතිරිව ඇත්තේ දවටනයක් ලියා එය ජීවිතයට මුදා හැරීමයි. අපි වීඩියෝ දෙකක් එකට මැහුම් කරන මූලාකෘතියක් ලියන්නෙමු, සහ ... විනෝදය ආරම්භ වේ. පුස්තකාලය .NET Core 2 මත පදනම් වේ, එය ඕනෑම අතථ්‍ය යන්ත්‍රයක් මත ක්‍රියාත්මක විය යුතුය, එබැවින් අපි AWS EC2 උදාහරණයක් ගන්නා අතර සියල්ල ක්‍රියාත්මක වනු ඇත.

සැඟවුනු පෙළනැහැ, එය ක්රියා නොකරනු ඇත
.
FFmpeg කාර්යය සරල කළද, සැබවින්ම ක්‍රියාත්මක වන විසඳුමක් සඳහා, ඔබ EC2 අවස්ථාවක් නිර්මාණය කළ යුතු අතර ඒ සඳහා Load Balancer ඇතුළුව ජාල යටිතල පහසුකම් සැලසුම් කළ යුතුය. මුල සිටම යෙදවීමේ සරල කාර්යය “ටිකක්” වඩාත් සංකීර්ණ වන අතර යටිතල පහසුකම් වහාම මුදල් ඉල්ලා සිටීමට පටන් ගනී - සෑම පැයකටම ධාවන කාලය සඳහා වන මුදල සේවාදායක ගිණුමෙන් ඉවත් වේ.

අපගේ සේවාවට දිගුකාලීන ක්‍රියාවලි ඇතුළත් නොවේ, විශාල සහ මහත සම්බන්ධතා දත්ත සමුදායක් අවශ්‍ය නොවේ, සහ ක්ෂුද්‍ර සේවා ඇමතුම් දාමයක් සහිත සිදුවීම් මත පදනම් වූ ගෘහ නිර්මාණ ශිල්පයකට හොඳින් ගැලපේ. විසඳුම ම යෝජනා කරයි - අපට EC2 අතහැර දමා AWS Lambda මත පදනම් වූ සම්මත Image Resizer වැනි සත්‍ය-සේවාදායක රහිත යෙදුමක් ක්‍රියාත්මක කළ හැකිය.

මාර්ගය වන විට, .NET සඳහා AWS සංවර්ධකයින්ගේ පැහැදිලි අකමැත්ත තිබියදීත්, ඔවුන් .NET Core 2.1 ධාවන කාලය ලෙස සහාය දක්වයි, එමඟින් සම්පූර්ණ සංවර්ධන අවස්ථා සපයයි.

සහ කේක් මත චෙරි - AWS වීඩියෝ ගොනු සමඟ වැඩ කිරීම සඳහා වෙනම සේවාවක් සපයයි - AWS Elemental MediaConvert.

කාර්යයේ සාරය ඇදහිය නොහැකි තරම් සරල ය: අපි පිටතට යන වීඩියෝවට S3 සබැඳියක් ගෙන, AWS කොන්සෝලය, .NET SDK හෝ සරලව JSON හරහා අපට වීඩියෝව සමඟ කළ යුතු දේ ලියන්න සහ සේවාව අමතන්න. එය විසින්ම ලැබෙන ඉල්ලීම් සැකසීම සඳහා පෝලිම් ක්‍රියාත්මක කරයි, ප්‍රතිඵලය S3 වෙත උඩුගත කරයි සහ වඩාත්ම වැදගත් ලෙස, එක් එක් තත්ව වෙනස් කිරීම සඳහා CloudWatch Event උත්පාදනය කරයි. වීඩියෝ සැකසුම් සම්පූර්ණ කිරීමට lambda triggers ක්‍රියාත්මක කිරීමට මෙය අපට ඉඩ සලසයි.

වැඩ කරන වීඩියෝ සේවාවක වේගවත් සංවර්ධනය සඳහා සර්වර් රහිත ප්රවේශය
අවසාන ගෘහ නිර්මාණ ශිල්පය පෙනෙන්නේ මෙයයි:

මුළු පසුබිමම ලැම්ඩා දෙකක් තුළ තබා ඇත. තවත් එකක් නම් සිරස් වීඩියෝ භ්‍රමණය කිරීම සඳහා ය, මන්ද එවැනි වැඩ එක පාස් එකකින් කළ නොහැකි බැවිනි.

අපි ඉදිරිපස JS වලින් ලියා Pug හරහා සම්පාදනය කරන ලද SPA යෙදුමක ස්වරූපයෙන් පොදු S3 බාල්දියක තබමු. වීඩියෝ බාගත කිරීම සඳහා, අපට සේවාදායක කේතයක් අවශ්‍ය නොවේ - අපට අවශ්‍ය වන්නේ S3 අපට සපයන REST අන්ත ලක්ෂ්‍ය විවෘත කිරීමයි. එකම දෙය නම් ප්‍රතිපත්ති සහ CORS වින්‍යාස කිරීමට අමතක නොකරන්න.

උගුල්

  • AWS MediaConvert, කිසියම් නොදන්නා හේතුවක් නිසා, එක් එක් වීඩියෝ ඛණ්ඩයකට වෙන වෙනම ශබ්දය පමණක් අදාළ වේ, නමුත් අපට සම්පූර්ණ තිර සුරැකුමෙන් ප්‍රීතිමත් ගීතයක් අවශ්‍ය වේ.
  • සිරස් වීඩියෝ වෙන වෙනම සැකසිය යුතුය. AWS කළු තීරු වලට කැමති නැති අතර රෝලර් 90 ° දී තබයි.

පහසු ස්කේටිං රින්ක්

Stateless හි සියලු අලංකාරය තිබියදීත්, ඔබ වීඩියෝව සමඟ කළ යුතු දේ නිරීක්ෂණය කළ යුතුය: නිමි වීඩියෝ අනුපිළිවෙලට මැලියම් හෝ ශ්රව්ය එකතු කරන්න. වාසනාවකට මෙන්, MediaConvert එහි රැකියා හරහා පාර-දත්ත ගමන් කිරීමට සහාය වන අතර, අපට ඕනෑම අවස්ථාවක මෙම පාර-දත්ත විග්‍රහ කරමින් “isMasterSoundJob” ආකෘතියේ සරල ධජයක් භාවිත කළ හැක.

සර්වර්ලස් පරිපූර්ණ ලෙස NoOps සමඟ වැඩ කිරීමට ඉඩ සලසයි - ව්‍යාපෘති යටිතල පහසුකම් සඳහා වගකිව යුතු වෙනම කණ්ඩායමක අනවශ්‍ය බව උපකල්පනය කරන ප්‍රවේශයකි. එමනිසා, එය කුඩා කාරණයක් විය - කෙසේ වෙතත් සෑම විටම කිරීමට යමක් ඇති පද්ධති පරිපාලකයින්ගේ සහභාගීත්වයෙන් තොරව අපි AWS මත විසඳුම යොදන්නෙමු.
මේ සියල්ල වේගවත් කිරීම සඳහා, අපි AWS CloudFormation මත යෙදවුම් ස්ක්‍රිප්ට් හැකිතාක් ස්වයංක්‍රීය කරන්නෙමු, එමඟින් ඔබට VS වෙතින් කෙලින්ම එක් බොත්තමක් යෙදවීමට ඉඩ සලසයි. එහි ප්‍රතිඵලයක් වශයෙන්, CloudFormation වාක්‍ය ඛණ්ඩය ඔබ පුරුදු වී නොමැති නම් එය කම්පනයට පත් කළ හැකි වුවද, කේත පේළි 200 ක ගොනුවක් ඔබට සූදානම් කළ විසඳුමක් පෙරළීමට ඉඩ සලසයි.

එකතුව

සර්වර්ලස් කෝකටත් තෛලයක් නොවේ. නමුත් එය සීමාවන් තුනක් සහිත තත්වයන් තුළ ජීවිතය වඩාත් පහසු කරනු ඇත: "සීමිත සම්පත් - කෙටි කාලීන - සුළු මුදල්."

Serverless සඳහා සුදුසු යෙදුම්වල ලක්ෂණ

  • දිගුකාලීන ක්රියාවලීන් නොමැතිව. API Gateway දෘඪ සීමාව තත්පර 29, lambda Hard සීමාව විනාඩි 5;
  • සිදුවීම්-ධාවන ගෘහ නිර්මාණ ශිල්පය මගින් විස්තර කර ඇත;
  • SOA වැනි ලිහිල් සම්බන්ධිත සංරචක වලට කැඩී යයි;
  • ඔබගේ තත්වය සමඟ බොහෝ වැඩ අවශ්ය නොවේ;
  • .NET Core හි ලියා ඇත. .NET Framework සමඟ වැඩ කිරීමට, ඔබට තවමත් සුදුසු ධාවන කාලය සමඟ අවම වශයෙන් Docker අවශ්‍ය වේ.

Serverless ප්‍රවේශයේ ප්‍රතිලාභ

  • යටිතල පහසුකම් පිරිවැය අඩු කරයි;
  • විසඳුම ලබා දීමේ පිරිවැය අඩු කරයි;
  • ස්වයංක්රීය පරිමාණය;
  • තාක්‍ෂණික ප්‍රගතියේ කඩිනමින් සංවර්ධනය.

අවාසි, විශේෂිත උදාහරණයක් සමඟ

  • බෙදා හරින ලද ලුහුබැඳීම සහ ලොග් කිරීම - AWS X-Ray සහ AWS CloudWatch හරහා අර්ධ වශයෙන් විසඳනු ලැබේ;
  • අපහසු නිදොස්කරණය;
  • බරක් නොමැති විට සීතල ආරම්භය;
  • AWS පරිශීලක-සතුරු අතුරු මුහුණත විශ්වීය ගැටළුවකි :)

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න