පළමු දේ පළමුව, AWS සහ Heroku වෙනස් දේවල්. AWS යටිතල පහසුකම් සේවාවක් ලෙස ( IaaS ) ලබා දෙන අතර හෙරොකු විසින් සේවාවක් ලෙස වේදිකාවක් ඉදිරිපත් කරයි ( PaaS ).
මොකක්ද වෙනස? ඉතා ආසන්න වශයෙන්, IaaS ඔබට ඉහළින් ඇති දේවල් තැනීම සඳහා ඔබට අවශ්ය සංරචක ලබා දෙයි; PaaS මඟින් ඔබට කේතය සහ මූලික වින්යාසය තල්ලු කර ධාවනය වන යෙදුමක් ලබා ගත හැකි පරිසරයක් ලබා දේ. IaaS මඟින් ඔබට වැඩි ශක්තියක් සහ නම්යතාවයක් ලබා දිය හැකිය.
ඔබේ කේතය AWS මත ධාවනය කර හෙරොකු යෙදවීමක් මෙන් පෙනෙන්නට නම්, ඔබට EC2 අවස්ථා කිහිපයක් අවශ්ය වනු ඇත - ඔබට ඒවා මත පැටවුම් ශේෂයක් / හැඹිලි ස්ථරයක් ස්ථාපනය කිරීමට අවශ්ය වනු ඇත (උදා: වාර්නිෂ් ), ඔබට වැනි දෙයක් ක්රියාත්මක වන අවස්ථා අවශ්ය වේ ඔබේ කේතයට සේවය කිරීම සඳහා මගීන් සහ එන්ජින්එක්ස් , ඔබට PostgreSQL වැනි දෙයක පොකුරු දත්ත සමුදායක් යෙදවීමට සහ වින්යාස කිරීමට අවශ්ය වනු ඇත . ඔබට කැපිස්ට්රානෝ වැනි දෙයක් යෙදවීමේ පද්ධතියක් අවශ්ය වේ .
එය සැකසීමට හා නඩත්තු කිරීමට සුළු කාර්යයක් නොවේ. හෙරොකු සමඟ, එවැනි වේදිකාවක් කරා යාමට අවශ්ය උත්සාහය සමහර විට යෙදුම් කේත පේළි කිහිපයක් සහ අgit push
.
ඉතින් ඔබ මේ තරම් දුරයි, ඔබට පරිමාණය කිරීමට අවශ්යයි. මහා. ඔබේ EC2 යෙදවීම සඳහා ඔබ රූකඩ භාවිතා කරනවා නේද? එබැවින් දැන් ඔබ ඔබේ කැපිස්ට්රානෝ ලිපිගොනු අවශ්ය පරිදි ඉහළට / පහළට ගෙනයාමට වින්යාස කරයි; ඔබ ඔබේ රූකඩ වින්යාසය නැවත විහිළුවට ලක් කරන අතර එමඟින් වෙබ් සේවක අවස්ථා පිළිබඳව වාර්නිෂ් දැනුවත්ව සිටින අතර ඒවා ස්වයංක්රීයව ඔවුන් අතර එකතු වේ. නැත්නම් ඔබ heroku scale web:+5
.
මේ දෙක අතර සංසන්දනය පිළිබඳ අදහසක් ඔබට ලබා දෙනු ඇතැයි අපේක්ෂා කරමු. දැන් ඔබේ විශේෂිත කරුණු ආමන්ත්රණය කිරීමට:
වේගය
දැනට Heroku පමණක් AWS අවස්ථා මත ධාවනය us-east
හා eu-west
. ඔබ වෙනුවෙන්, මෙය ඔබට කෙසේ හෝ අවශ්ය දේ මෙන් පෙනේ. අනෙක් අය සඳහා, එය සලකා බැලිය හැකි වැඩි ය.
ආරක්ෂාව
ආරක්ෂක යාවත්කාලීනයන් පසුපසින් සිටින හෝ සාමාන්යයෙන් දුර්වල ලෙස එකට තබා ඇති අභ්යන්තරව නඩත්තු කරන නිෂ්පාදන සේවාදායකයන් මම දැක ඇත්තෙමි. හෙරොකු සමඟ, ඔබට වෙනත් අයෙකු එවැනි දෙයක් කළමනාකරණය කරයි, එය ඔබ දෙස බලන ආකාරය අනුව ආශීර්වාදයක් හෝ ශාපයක් වේ!
ඔබ යෙදවූ විට, ඔබ ඔබේ කේතය effectively ලදායී ලෙස හෙරොකු වෙත භාර දෙයි. මෙය ඔබට ප්රශ්නයක් විය හැකිය. ඩයිනෝ හුදකලාව පිළිබඳ ඔවුන්ගේ ලිපියේ ඔවුන්ගේ හුදකලා තාක්ෂණයන් විස්තර කරයි (තනි ඩයිනෝ තනි තනි EC2 අවස්ථා මත ක්රියාත්මක වන බවක් පෙනේ). සගයන් කිහිප දෙනෙකු මෙම තාක්ෂණයන් හා ඔවුන්ගේ හුදකලා වීමේ ශක්තිය පිළිබඳ ගැටළු ප්රකාශ කර ඇත; මම අහෝ, ඇත්ත වශයෙන්ම අදහස් දැක්වීමට ප්රමාණවත් දැනුමක් / පළපුරුද්දක් නොමැත, නමුත් මගේ වර්තමාන හෙරොකු යෙදවීම සලකන්නේ “ප්රමාණවත්” බවයි. එය ඔබට ප්රශ්නයක් විය හැකිය, මම නොදනිමි.
පරිමාණය
ඉහත සඳහන් කළ මගේ IaaS එදිරිව PaaS සංසන්දනය තුළ යමෙකු මෙය ක්රියාත්මක කරන්නේ කෙසේදැයි මම ස්පර්ශ කළෙමි. ආසන්න වශයෙන්, ඔබගේ යෙදුමට Procfile
පෝරමයේ රේඛා ඇත dyno_type: command_to_run
, එබැවින් උදාහරණයක් ලෙස ( http://devcenter.heroku.com/articles/process-model වෙතින් තොටිල්ල ):
web: bundle exec rails server
worker: bundle exec rake jobs:work
මෙය, සමඟ:
heroku scale web:2 worker:10
එහි web
ප්රති result ලය වනුයේ ඔබට ඩයිනෝ 2 ක් සහ worker
ඩයිනෝ 10 ක් ධාවනය වීමයි. ලස්සන, සරල, පහසුයි. බව සටහන web
පිටත ලෝකයට ප්රවේශ ඇති විශේෂ dyno වර්ගය, වන අතර, ඒ අනුව ඒ කැමැත්ත මාර්ගයේ රථවාහන ඔවුන්ගේ ලස්සන වෙබ් රථවාහන multiplexer (වානිෂ් / විකිපීඩියා එකතුවක් බොහෝ විට, යම් ආකාරයක) පිටුපස වේ. ඔබේ සේවකයින් බොහෝ විට සමාන මාර්ගගත කිරීම සඳහා පණිවිඩ පෝලිමක් සමඟ අන්තර් ක්රියා කරයි, එමඟින් ඔවුන්ට පරිසරයේ URL එකක් හරහා ස්ථානය ලැබෙනු ඇත.
පිරිවැය කාර්යක්ෂමතාව
බොහෝ දෙනෙකුට මේ පිළිබඳව විවිධ මත තිබේ. වර්තමානයේ එය ඩයිනෝ පැයකට පැයට ඩොලර් 0.05 / පැයක් වන අතර එය AWS මයික්රෝ නිදසුනක් සඳහා පැයට $ 0.025 / h හා AWS කුඩා අවස්ථාවක් සඳහා $ 0.09 / hr හා සසඳන විට.
Heroku ගේ dyno ප්රලේඛනය එය, බොහෝ දුරට එසේ ඔබ, භෞතික RAM ප්රමාණය 512MB ක් පමණ පවසයි ද ක EC2 ක්ෂුද්ර උදාහරණයක් වැනි ටිකක් ලෙස dyno සලකා අසාධාරණ. එය මිල මෙන් දෙගුණයක් වටී ද? ඔබේ කාලය ඔබ කොතරම් වටිනවාද? මෙම ප්රමිතියට ලබා ගැනීම සඳහා IaaS පිරිනැමීමක් මත ගොඩ නැගීමට ගතවන කාලය හා ශ්රමය අනිවාර්යයෙන්ම ලාභදායී නොවේ. මට ඔබ වෙනුවෙන් මෙම ප්රශ්නයට සැබවින්ම පිළිතුරු දිය නොහැක, නමුත් සැකසීමේ සහ නඩත්තු කිරීමේ 'සැඟවුණු පිරිවැය' අවතක්සේරු නොකරන්න.
(ටිකක් පසෙකට, නමුත් මම මෙතැන් සිට ඩයිනෝවකට සම්බන්ධ වුවහොත් ( heroku run bash
), කර්සරී පෙනුමකින් කෝර් 4 ක් /proc/cpuinfo
සහ 36GB RAM ප්රමාණයක් පෙන්වයි - මෙය මා "ඉහළ මතක ද්විත්ව ද්විත්ව අති විශාල අවස්ථාවක " සිටින බව විශ්වාස කිරීමට හේතු වේ. " . මෙම Heroku dyno ප්රලේඛනය එක් එක් dyno ඒ නිසා මම හැකි වෙනත් dynos 71 දක්වා සමඟ බෙදා ගන්නවා, භෞතික RAM ප්රමාණය 512MB ලැබෙන) පවසයි. (මම, Heroku ගේ AWS අවස්ථා homogeny ගැන ප්රමාණවත් දත්ත නොමැති ඔබගේ milage වෙනස් විය හැක එසේ නැහැ)
ඔවුන් ඔවුන්ගේ තරඟකරුවන්ට එරෙහිව සටන් කරන්නේ කෙසේද?
මේ, මට බයයි මට ඇත්තටම ඔබට උදව් කළ නොහැකි බව. මම මෙතෙක් බැලූ එකම තරඟකරුවා වූයේ ගූගල් ඇප් එන්ජිමයි - ඒ වන විට මම ජාවා යෙදුම් යෙදවීමට බලා සිටියෙමි, භාවිතා කළ හැකි රාමු සහ තාක්ෂණයන් සඳහා ඇති සීමාවන් ඇදහිය නොහැකි තරම් කල් දැමීය. මෙය "හුදෙක් ජාවා දෙයක්" ට වඩා වැඩි ය - සාමාන්ය සීමාවන් හා අවශ්ය කරුණු ( නිතර අසන පැන ඉඟි කිහිපයක) පහසුකමට වඩා අඩු බව පෙනේ. ඊට වෙනස්ව, හෙරොකු වෙත යෙදවීම සිහිනයකි.
නිගමනය
මෙය ඔබගේ ප්රශ්න වලට පිළිතුරු සපයනු ඇතැයි මම බලාපොරොත්තු වෙමි (කරුණාකර ඔබ අදහස් කිරීමට කැමති හිඩැස් / වෙනත් ක්ෂේත්ර තිබේ නම් අදහස් දක්වන්න). මගේ පෞද්ගලික තනතුර ඉදිරිපත් කළ යුතු යැයි මට හැඟේ. "ඉක්මන් යෙදවීම" සඳහා මම හෙරොකුට ආදරෙයි. මම යෙදුමක් ආරම්භ කරන විට, මට ලාභදායී සත්කාරකත්වයක් අවශ්ය වේ (හෙරොකු නිදහස් ස්ථරය නියමයි - අත්යවශ්යයෙන්ම ඔබට අවශ්ය වන්නේ එක් වෙබ් ඩයිනෝවක් සහ 5MB PostgreSQL පමණි, යෙදුමක් සත්කාරකත්වය සැපයීම නොමිලේ), හෙරොකු මගේ යන්න ස්ථානයයි . ගෙවන ගනුදෙනුකරුවන් කිහිප දෙනෙකු සමඟ “බරපතල නිෂ්පාදන යෙදවීම” සඳහා, සේවා මට්ටමේ ගිවිසුමක් සහිතව, ඔප්ස් සහ වෙනත් වියදම් සඳහා කැපවූ කාලය සමඟ, මට හෙරොකු වෙත එතරම් පාලනයක් පැටවීමට නොහැකි අතර පසුව AWS හෝ අපගේම සේවාදායකයන් තෝරා ගැනීමේ සත්කාරක වේදිකාව වී ඇත.
අවසානයේදී, එය ඔබට වඩාත්ම සුදුසු දේ ගැන ය. ඔබ "ආරම්භක ක්රමලේඛකයෙක්" යැයි ඔබ කියනු ඇත - සමහර විට හෙරොකු භාවිතා කිරීමෙන් ඔබට රූබි ලිවීම කෙරෙහි අවධානය යොමු කළ හැකි අතර ඔබේ කේතය වටා ඇති අනෙකුත් සියලු යටිතල පහසුකම් ලබා ගැනීමට කාලය ගත කිරීමට අවශ්ය නොවනු ඇත. මම අනිවාර්යයෙන්ම එය උත්සාහ කර බලන්නම්.
සටහන, AWS සතුව ඇත්ත වශයෙන්ම PaaS පිරිනැමීමක් ඇත, ඉලාස්ටික් බීන්ස්ටොක් , එය රූබි, Node.js, PHP, Python, .NET සහ Java සඳහා සහය දක්වයි. මම හිතන්නේ සාමාන්යයෙන් බොහෝ අය "AWS" දකින විට EC2 සහ S3 සහ EBS වැනි දේ වෙත පනින්න, ඒවා අනිවාර්යයෙන්ම IaaS පිරිනැමීම් වේ