पहले चीजें पहले, AWS और हरोकू अलग चीजें हैं। AWS एक सेवा ( IaaS ) के रूप में इन्फ्रास्ट्रक्चर प्रदान करता है जबकि हरोकू एक सेवा ( PaaS ) के रूप में एक मंच प्रदान करता है ।
क्या फर्क पड़ता है? बहुत लगभग, IaaS आपको इसके शीर्ष पर चीजों को बनाने के लिए आवश्यक घटक देता है; PaS आपको एक वातावरण देता है जहाँ आप बस कोड और कुछ बुनियादी विन्यास को आगे बढ़ाते हैं और एक रनिंग एप्लिकेशन प्राप्त करते हैं। आईएएएस आपको अधिक शक्ति और लचीलापन प्रदान कर सकता है, और आपको स्वयं को बनाने और बनाए रखने की कीमत पर।
अपने कोड को एडब्ल्यूएस पर चलाने के लिए और एक हेरोकू तैनाती की तरह थोड़ा सा देखने के लिए, आप कुछ ईसी 2 इंस्टेंस चाहते हैं - आप उन पर स्थापित एक लोड बैलेंसर / कैशिंग परत (जैसे वार्निश ) चाहते हैं, आप चाहते हैं इंस्टेंस कुछ चल रहा हो जैसे अपने कोड को परोसने के लिए पैसेंजर और नगनेक्स , आप PostgreSQL जैसी किसी चीज़ का क्लस्टर डेटाबेस उदाहरण को परिनियोजित और कॉन्फ़िगर करना चाहते हैं । आप कैपिस्ट्रानो की तरह कुछ के साथ एक तैनाती प्रणाली चाहते हैं , और कुछ लॉग एकत्रीकरण कर रहे हैं।
यह स्थापित करने और बनाए रखने के लिए काम की एक महत्वहीन राशि नहीं है। हेरोकू के साथ, उस तरह के मंच पर पहुंचने के लिए आवश्यक प्रयास शायद एप्लिकेशन कोड और ए की कुछ लाइनें हैं git push
।
तो तुम यह बहुत दूर हो, और तुम बड़े पैमाने पर होना चाहते हो। महान। आप अपने EC2 परिनियोजन के लिए कठपुतली का उपयोग कर रहे हैं , है ना? तो अब आप अपनी Capistrano फ़ाइलों को जरूरत के अनुसार / नीचे उदाहरणों को कॉन्फ़िगर करने के लिए कॉन्फ़िगर करते हैं; आप अपने कठपुतली विन्यास को फिर से जिग करते हैं, इसलिए वार्निश वेब-वर्कर के उदाहरणों से अवगत है और उनके बीच स्वचालित रूप से पूल करेगा। या आप heroku scale web:+5
।
उम्मीद है कि आप दोनों के बीच तुलना का एक विचार देता है। अब अपने विशिष्ट बिंदुओं को संबोधित करने के लिए:
गति
वर्तमान में Heroku केवल में एडब्ल्यूएस उदाहरणों पर चलता है us-east
और eu-west
। तुम्हारे लिए, यह लगता है जैसे आप क्या चाहते हैं। दूसरों के लिए, यह संभावित रूप से एक विचार के अधिक है।
सुरक्षा
मैंने बहुत सारे आंतरिक रूप से बनाए रखा उत्पादन सर्वरों को देखा है जो सुरक्षा अद्यतन पर पीछे हैं, या बस आम तौर पर खराब रूप से एक साथ रखा गया है। हेरोकू के साथ, आपके पास उस प्रकार की चीज़ों को प्रबंधित करने वाला कोई और है, जो या तो एक आशीर्वाद है या अभिशाप है कि आप इसे कैसे देखते हैं!
जब आप परिनियोजित करते हैं, तो आप प्रभावी रूप से अपना कोड सीधे हर्को पर सौंप रहे हैं। यह आपके लिए एक मुद्दा हो सकता है। डायनो अलगाव पर उनके लेख में उनकी अलगाव प्रौद्योगिकियों का वर्णन है (ऐसा लगता है जैसे कि कई dynos व्यक्तिगत 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
आप में 2 web
dynos और 10 worker
dynos चल रहे होंगे। अच्छा, सरल, आसान। ध्यान दें कि web
एक विशेष डायनो प्रकार है, जिसकी बाहरी दुनिया तक पहुंच है, और उनके अच्छे वेब ट्रैफ़िक मल्टीप्लेक्स (शायद वार्निश / नगनेक्स संयोजन के कुछ प्रकार) के पीछे है जो तदनुसार ट्रैफ़िक को रूट करेगा। आपके कार्यकर्ता संभवतः समान मार्ग के लिए एक संदेश कतार के साथ बातचीत करते हैं, जिससे वे वातावरण में एक URL के माध्यम से स्थान प्राप्त करेंगे।
कीमत का सामर्थ्य
इस बारे में बहुत से लोगों की अलग-अलग राय है। वर्तमान में यह एक dyno घंटे के लिए $ 0.05 / घंटा है, जबकि AWS माइक्रो उदाहरण के लिए $ 0.025 / hr की तुलना में या AWS छोटे उदाहरण के लिए $ 0.09 / hr।
हेरोकू के डायनो डॉक्यूमेंट में लिखा है कि आपके पास लगभग 512MB RAM है, इसलिए शायद एक dyno को EC2 माइक्रो उदाहरण की तरह समझना बहुत अनुचित नहीं है । क्या इसकी कीमत दोगुनी है? आप अपने समय को कितना महत्त्व देते हैं? आईएएएस के शीर्ष पर बनाने के लिए जितना समय और प्रयास की आवश्यकता होती है, वह इस मानक को पाने के लिए निश्चित रूप से सस्ता नहीं है। मैं वास्तव में आपके लिए इस सवाल का जवाब नहीं दे सकता, लेकिन सेटअप और रखरखाव की 'छिपी हुई लागत' को कम मत समझना।
(एक तरफ थोड़ा सा, लेकिन अगर मैं यहाँ से एक डायनो को जोड़ता हूँ heroku run bash
) ( ), एक सरसरी नज़र 4 कोर /proc/cpuinfo
और (36GB RAM ) को दिखाता है - यह मुझे विश्वास दिलाता है कि मैं "हाई-मेमोरी डबल एक्सट्रा लार्ज इंस्टेंस" पर हूँ " । हेरोकू डायनो प्रलेखन का कहना है कि प्रत्येक डायनो 512MB रैम प्राप्त करता है, इसलिए मैं संभावित रूप से 71 dynos के साथ साझा कर रहा हूं (मेरे पास हरोकू के एडब्ल्यूएस उदाहरणों के समरूपता के बारे में पर्याप्त डेटा नहीं है, इसलिए आपके दूध भिन्न हो सकते हैं)
वे अपने प्रतिद्वंद्वियों के खिलाफ कैसे किराया करते हैं?
यह, मुझे डर है कि मैं वास्तव में आपकी मदद नहीं कर सकता। जिस एकमात्र प्रतियोगी को मैंने कभी देखा है वह Google App Engine था - जिस समय मैं जावा अनुप्रयोगों को तैनात करना चाह रहा था, और प्रयोग करने योग्य रूपरेखाओं और तकनीकों पर प्रतिबंधों की मात्रा अविश्वसनीय रूप से बंद थी। यह "सिर्फ एक जावा बात" से अधिक है - सामान्य प्रतिबंध और आवश्यक विचार ( कई बार पूछे जाने वाले प्रश्न ) की मात्रा सुविधाजनक से कम लग रही थी। इसके विपरीत, हरोकू को तैनात करना एक सपना रहा है।
निष्कर्ष
मुझे उम्मीद है कि यह आपके सवालों का जवाब देगा (कृपया टिप्पणी करें कि क्या अंतराल / अन्य क्षेत्र हैं जिन्हें आप संबोधित करेंगे)। मुझे लगता है कि मुझे अपनी व्यक्तिगत स्थिति की पेशकश करनी चाहिए। मैं "त्वरित तैनाती" के लिए हरकू से प्यार करता हूं। जब मैं एक आवेदन शुरू कर रहा हूं, और मैं कुछ सस्ते होस्टिंग चाहता हूं (हरोकू फ्री टियर कमाल का है - अनिवार्य रूप से अगर आपको केवल एक वेब डायनो और 5 एमबी की पोस्टग्रेसीक्यू की आवश्यकता है, तो यह एक एप्लिकेशन को होस्ट करने के लिए स्वतंत्र है), हरोकू मेरी स्थिति है । कई भुगतान करने वाले ग्राहकों के साथ "गंभीर उत्पादन परिनियोजन" के लिए, सेवा-स्तर-समझौते के साथ, ops, et cetera पर खर्च करने के लिए समर्पित समय के साथ, मैं काफी हद तक खुद को हेरोकू पर नियंत्रण करने के लिए नहीं ला सकता, और फिर AWS या हमारे अपने सर्वर पसंद के होस्टिंग प्लेटफ़ॉर्म रहे हैं।
अंततः, यह आपके लिए सबसे अच्छा काम करता है। आप कहते हैं कि आप "एक शुरुआती प्रोग्रामर" हैं - यह सिर्फ यह हो सकता है कि हरोकू का उपयोग करने से आप रूबी लिखने पर ध्यान केंद्रित करेंगे, और अपने कोड के आसपास अन्य सभी बुनियादी ढांचे को प्राप्त करने में समय व्यतीत नहीं करना पड़ेगा। मैं निश्चित रूप से यह कोशिश करूँगा।
ध्यान दें, AWS के पास वास्तव में Paa की पेशकश, इलास्टिक बीनस्टॉक है , जो रूबी, Node.js, PHP, Python, .NET और Java का समर्थन करता है। मुझे लगता है कि आम तौर पर ज्यादातर लोग, जब वे "एडब्ल्यूएस" देखते हैं, तो ईसी 2 और एस 3 और ईबीएस जैसी चीजों पर कूदते हैं, जो निश्चित रूप से आईएएएस प्रसाद हैं