Чому люди використовують Heroku, коли AWS присутній? Що відрізняє Heroku від AWS? [зачинено]


1101

Я початківець програміст RoR, який планує розгорнути свій додаток за допомогою Heroku. Слово інших моїх друзів-консультантів говорить, що Heroku справді простий, хороший у використанні. Єдина проблема полягає в тому, що я досі не маю уявлення, що робить Хероку ...

Я переглянув їхній веб-сайт і в двох словах, що Heroku допомагає в масштабуванні, але ... чому це навіть має значення? Як допомагає Хероку:

  1. Швидкість - моє дослідження передбачало, що розгортання AWS на Східному узбережжі США буде найшвидшим, якщо я націлююсь на аудиторію, яка базується на США та Азії.

  2. Безпека - Наскільки вони безпечні?

  3. Масштабування - як це насправді працює?

  4. Ефективність витрат - Існує щось на зразок дино, яке полегшує масштабування.

  5. Як вони виступають проти своїх конкурентів? Наприклад, Engine Yard та bluebox ?

Будь ласка, використовуйте англійські терміни миряни для пояснення ... Я початківець програміст.


267
Я фактично використовую його через вільний план;).
весільні торти

56
Ви мали б запитати, в чому різниця між Heroku та AWS пружною основою. Інакше ви отримаєте звичайні відповіді "PaaS vs IaaS", а не те, що ви, мабуть, шукаєте.
Jus12

38
розвивайтеся на heroku, масштабуйте її на heroku, розробляйте інновації на heroku ... тоді колись ідея - це бізнес-хіт, потім переведіть на aws ... як, коли ви наймаєте на роботу.
Мухаммед Умер

10
Мігнути це може бути важко, коли ви користуєтесь кількома послугами і вам потрібно перенести, налаштувати, протестувати все ... Це, безумовно, матиме вартість
Paolo

37
Одна з моїх улюблених речей про Heroku - це автоматичне розгортання з Github, тому я можу мати productionвідділення на своєму репо. Кожного разу, коли новий реміт буде натиснутий на цей репо, Героку автоматично хапає його, будує та розгортає. Мені взагалі не потрібно турбуватися ні про що на сервері!
Разі Шабан

Відповіді:


245

AWS / Heroku обидва безкоштовно для невеликих хобі-проектів (для початку).

Якщо ви хочете запустити додаток відразу, без особливих налаштувань архітектури, виберіть Heroku .

Якщо ви хочете зосередитись на архітектурі та мати можливість використовувати різні веб-сервери, тоді виберіть AWS . AWS забирає більше часу, залежно від того, яку послугу / продукт ви виберете, але може бути вартим того. AWS також постачається з багатьма послугами та продуктами плагінів.


Хероку

  • Платформа як послуга (PAAS)
  • Хороша документація
  • Має вбудовані інструменти та архітектуру.
  • Обмежений контроль над архітектурою при розробці програми.
  • Застосовується розгортання (автоматично через GitHub або вручну через команди git або CLI).
  • Не вимагає багато часу.

AWS

  • Інфраструктура як послуга (IAAS)
  • Універсальний - має багато продуктів, таких як EC2, LAMBDA, EMR тощо.
  • Можна використовувати виділений екземпляр для більшого контролю над архітектурою, наприклад, вибору ОС, версії програмного забезпечення тощо. Існує більше одного шару резервного копіювання.
  • Elastic Beanstalk - це функція, схожа на PAAS Heroku.
  • Можна використовувати автоматичне розгортання або прокручувати свій власний.

7
ElasticBeanstalk набагато економічніше, ніж Heroku, оскільки немає розмітки для сервісу поза серверами, якими ви користуєтесь. Ви також можете використовувати ElasticBeanstalk з безкоштовним рівнем AWS aws.amazon.com/elasticbeanstalk/pricing
Zags

25
@Zags "економічно ефективний" - це питання думки. Якщо я можу створити та розгорнути додаток Heroku менше ніж за хвилину, і це потребує години, щоб налаштувати Beanstalk - це не рентабельно, враховуючи, що кілька годин часу розробника знищує будь-які «заощадження», які могли б мати Beanstalk. Це дійсно залежить від пріоритетів - важливіші функції доставки чи важливіше налаштування та підтримка інфраструктури?
Брайан Шановний

5
@BrianDear простота налаштування залежить від вашого ознайомлення з різними системами. Навіть якщо ElasticBeanstalk займає більше часу для налаштування з рівним ознайомленням, AWS, як правило, становить 60% вартості Heroku (порівняйте продуктивність Heruku-m з AWS m4.xlarge). Якщо рахунок на сервер становить лише 100 доларів США на місяць, 40-відсоткова економія допоможе відновити витрати на “кілька годин інженерії” протягом року. Чим вище рахунок сервера, тим сильніше аргумент для AWS.
Загс

4
Для розгортання на Beanstalk потрібно ~ 5 хвилин. Виберіть платформу -> Завантажити поштовий індекс -> Радійте. Хочете розгорнути, натиснувши на майстер? Витратьте ще 5 хвилин на налаштування CodePipeline. Обидва ці робочі процеси можна виконати за допомогою лише консолі GUI, якщо CLI залякує вас.
Ентоні Меннінг-Франклін

1
На жаль, документація не занесена до AWS. AWS має одну з найкращих документацій будь-якої технології / платформи. Я використовував його ще до того, як ця відповідь була опублікована, близько 2013.
lupchiazoem

2055

По-перше, AWS та Heroku - це різні речі. AWS пропонує інфраструктуру як послугу ( IaaS ), тоді як Heroku пропонує платформу як послугу ( PaaS ).

Яка різниця? Приблизно приблизно, IaaS надає вам необхідні компоненти для того, щоб будувати речі над ним; PaaS надає вам середовище, де ви просто натискаєте код та якусь основну конфігурацію та отримуєте запущену програму. IaaS може дати вам більше енергії та гнучкості, ціною того, що потрібно будувати і підтримувати більше.

Щоб ваш код працював на AWS і був схожий на розгортання Heroku, вам знадобиться кілька екземплярів EC2 - вам буде потрібно встановити на них балансир завантаження / кешуючий шар (наприклад, Varnish ), ви хочете, щоб екземпляри виконували щось на зразок Пасажиру та nginx для обслуговування вашого коду, ви хочете розгорнути та налаштувати кластерний екземпляр бази даних щось на зразок PostgreSQL . Вам потрібна система розгортання з чимось на зразок Capistrano і чимось роблячим агрегацією журналів.

Це не незначний об'єм роботи для створення та обслуговування. З Heroku зусилля, необхідні для того, щоб дійти до такого етапу, - це, мабуть, кілька рядків коду програми та git push.

Отже, ти так далеко, і хочеш масштабувати. Чудово. Ви використовуєте Лялечку для розгортання EC2, правда? Отже, тепер ви налаштовуєте ваші файли Capistrano так, щоб вони обробляли копії вгору / вниз; ви повторно підключите конфігурацію ляльок, щоб Varnish знав про випадки роботи веб-службовців і автоматично об'єднав їх між собою. Або ти heroku scale web:+5.

Сподіваємось, це дає вам уявлення про порівняння між ними. Тепер, щоб вирішити ваші конкретні моменти:

Швидкість

В даний час Heroku працює лише в екземплярах AWS в us-eastі eu-west. Для вас це все одно схоже на те, що ви хочете. Для інших це потенційно більше уваги.

Безпека

Я бачив дуже багато виробничих серверів з внутрішнім обслуговуванням, які відстають від оновлень безпеки, або просто взагалі погано складаються. З Heroku у вас є хтось інший, який керує цією справою, що є або благом, або прокляттям, залежно від того, як ви на це дивитесь!

Під час розгортання ви ефективно передаєте код Heroku. Це може бути проблемою для вас. У статті про Dyno Isolation детально описані технології їх ізоляції (здається, що на окремих екземплярах EC2 працює декілька диносів). Кілька колег висловили проблеми з цими технологіями та силою їх ізоляції; Я, на жаль, не в змозі достатньо знань / досвіду, щоб дійсно коментувати, але мої нинішні розгортання Heroku вважають це "досить хорошим". Це може бути проблемою для вас, я не знаю.

Масштабування

Я торкнувся того, як можна реалізувати це в моєму порівнянні IaaS проти PaaS. Приблизно у вашій програмі є лінійка Procfile, у якій є рядки форми dyno_type: command_to_run, наприклад (cribbed від 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диноса та 10 workerдинозів. Приємно, просто, легко. Зауважте, що webце спеціальний тип dyno, який має доступ до зовнішнього світу і стоїть за їх приємним мультиплексором веб-трафіку (можливо, певною комбінацією лаків / nginx), який відповідно спрямовуватиме трафік. Ваші працівники, ймовірно, взаємодіють із чергою повідомлень щодо подібної маршрутизації, з якої вони отримають місцезнаходження за допомогою URL-адреси в оточенні.

Ефективність витрат

Багато людей мають багато різних думок з цього приводу. Наразі це $ 0,05 / год за дино-годину, порівняно з 0,025 дол. / Год. Для мікроекземпляра AWS або 0,09 дол. / Год. Для невеликого екземпляра AWS.

Дино- документація Heroku говорить про те, що у вас є близько 512 Мб оперативної пам’яті, тому, мабуть, не надто необґрунтовано вважати dyno трохи схожим на мікропримірник EC2. Чи варто подвоїти ціну? Скільки ви цінуєте свій час? Кількість часу та зусиль, необхідних для того, щоб доповнити пропозицію IaaS, щоб досягти цього стандарту, безумовно, недешево. Я не можу відповісти на це питання для вас, але не варто недооцінювати "приховані витрати" на налаштування та обслуговування.

(Трохи вбік, але якщо я звідси підключусь до дина ( heroku run bash), побіжний погляд показує 4 ядра /proc/cpuinfoта 36 ГБ оперативної пам’яті - це приводить мене до думки, що я перебуваю на «подвійному високопомітному пам’яті, надзвичайно великому екземплярі» " . У документації Heroku dyno сказано, що кожне dyno отримує 512 Мб оперативної пам'яті, тому я, можливо, ділюся з до 71 іншими динами. (У мене недостатньо даних про однорідність випадків AWS Heroku, тому ваш пробіг може змінюватися)"

Як вони виступають проти своїх конкурентів?

Боюсь, я не можу тобі реально допомогти. Єдиним конкурентом, якого я коли-небудь реально дивився, був Google App Engine - на той час я шукав розгортання Java-програм, і кількість обмежень на зручні рамки та технології була неймовірно непомітна. Це більше, ніж "лише справа Java" - кількість загальних обмежень та необхідних міркувань ( підказки FAQ на декілька) здавалися менш ніж зручними. Навпаки, розміщення в Героку було мрією.

Висновок

Я сподіваюся, що це відповість на ваші запитання (будь ласка, коментуйте, якщо є прогалини / інші сфери, які ви хочете вирішити). Я відчуваю, що повинен запропонувати своє особисте становище. Я люблю Heroku за "швидкі розгортання". Коли я запускаю програму, і хочу отримати дешевий хостинг (безкоштовний ярус Heroku є приголомшливим - по суті, якщо вам потрібно лише одне веб-дино і 5 Мб PostgreSQL, це безкоштовно для розміщення програми), Heroku - це моя позиція . Для "Серйозного розгортання виробництва" з декількома платними клієнтами, з домовленістю про рівень обслуговування, з виділеним часом, щоб витратити на ops та ін., Я не можу повністю змусити себе зняти такий контроль над Heroku, а потім або AWS або наші власні сервери були хостинговою платформою на вибір.

Зрештою, мова йде про те, що найкраще працює для вас. Ви кажете, що ви "початківець програміст" - можливо, просто використання Heroku дозволить вам зосередитись на написанні Ruby, а не доведеться витрачати час на створення іншої інфраструктури навколо вашого коду. Я б точно спробував.


Зауважте, AWS насправді має пропозицію PaaS, Elastic Beanstalk , яка підтримує Ruby, Node.js, PHP, Python, .NET та Java. Я думаю, що більшість людей, коли вони бачать "AWS", переходять до таких речей, як EC2 і S3 та EBS, які, безумовно, пропонують IaaS


33
Зауважте, що тепер еластична бобова кістка повністю підтримує рубінові програми за пасажирами.
переписано

4
Зараз Heroku також підтримує сервери в ЄС не лише в регіоні США.
Томас Уелтон

7
Враховуючи AWS BeanStalk, хіба не вся дискусія про те, як Heroku є рішенням PaaS, тоді як AWS є "просто" пропозицією IaaS, яка є недійсною?
Гму

6
@KristianGlass Було б приголомшливо, якби ми змогли отримати оновлену відповідь, яка насправді розглядає дві пропозиції PaaS (Beanstalk та Heroku)
Alex Chumbley

3
Радий, що це було корисно людям :) @ Gmu На момент відповіді ЕБ був достатньо обмеженим, що припускати, що "AWS" означало "EC2", здавалося цілком обґрунтованим, але, як пропонує Алекс, я перегляну відповіді, що зараз відповів EB значно покращився.
Крістіан Гласс

68

Як сказав Крістіан Скло Саїд, порівняння між IaaS ( AWS ) і PaaS ( Heroku , EngineYard ) не існує.

PaaS в основному допомагає розробникам пришвидшити розробку додатків, тим самим заощаджуючи гроші та головне інновації своїх додатків та бізнесу замість налаштування конфігурацій та керування такими речами, як сервери та бази даних. Інші функції покупки для використання PaaS - це процес розгортання додатків, такий як спритність, висока доступність, моніторинг, масштаб / масштаб масштабів, обмежена потреба в досвіді, простота розгортання та скорочення витрат і час розробки.

Але все ж є темна сторона для PaaS, яка призводить до перешкод для прийняття PaaS:

  • Менший контроль над сервером та базами даних
  • Витрати будуть дуже високими, якщо не керуватися належним чином
  • Передчасні та сумнівні в поточному дні та віці

Окрім вище, у вас повинен бути достатньо навичок, щоб керувати вами IaaS:

  • Придбання обладнання
  • Операційна система
  • Серверне програмне забезпечення
  • Середовище сценаріїв на стороні сервера
  • Веб-сервер
  • Система управління базами даних (Mysql, Redis тощо)
  • Налаштування сервера виробництва
  • Інструмент для тестування та розгортання
  • Додаток для моніторингу
  • Висока доступність
  • Навантаження балансування / маршрутизація HTTP
  • Політика резервного копіювання послуг
  • Співпраця в команді
  • Відновити виробництво

Якщо у вас є малий бізнес, PaaS стане найкращим варіантом для вас:

  • Заплати, якщо ти йдеш
  • Низька вартість запуску
  • Залиште сантехніку експерту
  • PaaS обробляє автоматичне масштабування / зменшення накипу, балансування навантаження, відновлення після аварій
  • PaaS керує всіма вимогами безпеки
  • PaaS управляє надійністю, високою доступністю
  • Paas управляє багатьма сторонніми додатками для вас

Це буде абсолютно індивідуальний вибір залежно від вимог. Ви можете отримати детальну інформацію про мої програми PPT для хостингу .


3
Я бачу EngineYard та Heroku, і звичайно ElasticBeanstalk ... всі працюють на AWS під ним. Насправді, чи є якісь основні PaaS, які НЕ працюють на авах під ними? Будь-які ідеї? Ура
Фетті

5
Джо, я знаю, що це пізно, але щоб відповісти на ваше запитання, IBM Bluemix працює на SoftLayer.
Антоніо Канджіано

PaaS керує всіма вимогами безпеки Захист сервера, можливо, але дуже вводить в оману (особливо в світі, де розробники, здається, вважають, що їх система за замовчуванням захищена). Це, звичайно, не захистить вас від XSS, CSRF і, ймовірно, не буде встановлювати для вас жодних важливих заголовків HTTP. Я просто бачу це зараз: Thank you for your concerns. We assure you that we take security very seriously and run or systems on secure servers. There is no need to worry about [insert security issue here] as all that is handled by.... -1, але я змінив би його, якщо це редагувати правильно.
Натеовамі

4
Все частіше з’являється категорія рішень PaaS (DIY PaaS), які працюють на вашій власній інфраструктурі, таким чином вирішуючи деякі проблеми щодо гнучкості / контролю PaaS. Деякі приклади: openhift , cloudfoundry , Hasura . Відмова: Я працюю в Hasura.
iamnat

35

Насправді ви можете використовувати обидва - ви можете розробити додаток з амазонськими серверами ec2. Потім натисніть його (з git) на heroku на деякий час (використовуйте heroku вільний ярус, щоб служити його публіці) і тестуйте його так. У порівнянні з орендою сервера це дуже економічно, але вам доведеться поговорити з більш обмежувальною героїнською api, що є те, про що варто подумати. Джерело: цей метод був прийнятий для одного з моїх онлайн-класів "Запуск інженерії з Coursera / Stanford" Баладжи С. Шрінівасан та Віджай С. Панде

Додано схему, щоб моє пояснення було легше зрозуміти


15
Яка користь від використання мікроприкладу як машини для розробки, а не використання локального комп'ютера? Я не бачу додаткової переваги додавання AWS у цьому конкретному випадку. Дякую!
Матео

5
Мабуть тому, що в академічній обстановці це зробить так, щоб інструкції щодо налаштування середовища для розробників були більш послідовними, і їм не доведеться турбуватися, щоб змусити його працювати на Windows
Джефф Дікі

2
Така архітектура допомагає уникнути великої кількості невідповідностей ОС Windows / Linux. А також вивчіть ОС Linux, не встановлюючи її на локальній машині. Якщо у вас Mac, це менше питання, але багато людей використовують Windows.
sivi

13
Це називається віртуальною машиною, я все ще не бачу великого сенсу в цьому.
Abe Petrillo

2
Мати окрему платформу для постановки та виробництва - це надзвичайно жахлива ідея; основні версії програмного забезпечення будуть відрізнятися несумісними способами. Ви повинні мати змогу запускати свій код локально для розробки, навіть якщо вбудована ОС відрізняється від виробничої ОС (в гіршому випадку з чимось на зразок VMware або бродячого або з емулятором, якщо створюється для вбудованої платформи; але, як правило, це легше працювати з). Лише коли-небудь можливість віддаленого розгортання коду до хмари - це жахливе перешкода для швидкої розробки додатків, яка робить тестування та налагодження зайвим часом.
Ієн Коллінз

34

Існує багато різних способів поглянути на це рішення з метою розвитку, ІТ та бізнес-задач, тому не відчувайте себе погано, якщо це здається непосильним. Але також - не передумуйте масштабованість.

Подумайте про свої вимоги .

Я розробив веб-сайти, які щодня обслуговували понад 8 мільйонів унікальних матеріалів і постачали терабайти відео на тиждень, побудовані на інфраструктурах, починаючи з $ 250 тис. Капітальних апаратних засобів, величезними працівниками ІТ-служб в ММ.

Але у мене також були менші веб-сайти, які були призначені для отримання $ 10 - 20 тис. Доларів на рік, не мали дуже високих вимог щодо трафіку, db або обробки, і я без компромісів запускав загальний хостинг-акаунт на $ 10 / місяць.

Надалі розгортання буде більше схожим на Heroku, ніж AWS, лише завдяки прогресу. У ІТ-повороті масштабування Інтернет-інфраструктури немає нульового значення, яке не стає все більш автоматизованим, і жодна з них не має нічого спільного зі значенням пропонованого вами товару чи послуги.

Крім того, пам’ятайте про комерційний веб-сайт - масштабованість - це те, що ми часто називаємо «хорошою проблемою», - хоча проблеми масштабованості на таких сайтах, як Facebook та Twitter, були дуже густими, вони негативно впливали на їхній успіх - новини можливо, навіть сприяло б більше реєстрацій (вся преса - це хороша преса).

Якщо у вас є сервіс, який генерує 100k + унікальних матеріалів на день і має проблеми зі масштабуванням, я би радий взяти його з рук, незалежно від мови, db, платформи чи інфраструктури, на якій ви працюєте!

Масштабованість є вирішуваною проблемою впровадження - відсутність клієнтів - екзистенційна проблема.


28

Ну, а люди зазвичай задають це питання: Heroku чи AWS, коли починають щось розгортати.

Мій експеримент із використанням обох Heroku та AWS, ось мій швидкий огляд та порівняння:

Хероку

  • Одна команда для розгортання будь-яких типів вашого проекту: Ruby on Rails, Nodejs
  • Стільки 1-клацання для інтеграції плагінів та третіх сторін: Починати з чогось дуже просто.
  • Не мати автоматичного масштабування; це означає, що потрібно масштабувати вгору / вниз вручну
  • Вартість дорога, особливо, коли системі потрібно більше ресурсів
  • Безкоштовний екземпляр доступний
  • Вільний екземпляр переходить у режим сну, якщо він неактивний.
  • Центр обробки даних: лише США та ЄС
  • МОЖУТЬ зануритися в / до доступу до машинного рівня за допомогою Heroku run bash(спасибі, MJafar Mash за пораду), але це обмежено! Ви не маєте повного доступу!
  • Не потрібно занадто багато знати про DevOps

AWS - EC2

  • Це так само, як машина з попередньо налаштованою ОС (чи ні), тому вам потрібно встановити програмне забезпечення, бібліотеку, щоб ваш веб-сайт / служба перейшли в Інтернет.
  • Плагіни та бібліотеку потрібно інтегрувати вручну або сценарій автоматизації (публічний сценарій та написаний вами)
  • Автоматичне масштабування та балансування навантаження - це підтримувані послуги, просто дізнайтеся, як налаштувати та інтегруватись у вашу систему
  • Вартість досить дешева, залежить від того, якими послугами та кількістю годин ви користуєтесь
  • Для екземплярів T2.micro є кілька безкоштовних годин, але зазвичай ви будете платити кілька доларів щомісяця (якщо ви все ще використовуєте T2.micro)
  • Ваш безкоштовний екземпляр не буде спати, цілодобово (тому що ви можете заплатити за це :))
  • Центр обробки даних: по всьому світу. Виберіть регіон, який найкраще підходить вам.
  • Зануріться в машинний рівень. Так ви можете насолоджуватися цим
  • Деякі знання про DevOps, але це добре, Stackoverflow корисний там!

AWS Elastic Beanstalk - альтернатива Heroku, але дешевша

  • Elastic Beanstalk було оголошено як публічну бета-версію з 2010 року; це допомагає нам легше працювати з розгортанням. Детальніше просимо сюди

  • Beanstalk безкоштовний, вартість, яку ви заплатите, буде за послуги, якими ви користуєтесь, і кількість годин користування.

  • Я використовую Elastic Beanstalk давно, і я думаю, що це може бути заміною Heroku і дешевше!

Підсумок

  • Heroku: Легкий на початку, БЕЗКОШТОВНИЙ примірник, але пізніше дорогий
  • AWS: Непрості, доступні безкоштовні години, дешевші , Beanstalk слід потурбуватися про використання

Тож у моїй нинішній системі я використовую Heroku для постановки та Beanstalk для виробництва!


3
Мені подобається, як ти відповідаєш на питання. Я спробував Heroku та AWS. Я згоден з вами рекомендувати:Use Heroku for staging, and Beanstalk for production!
Chetabahana

1
heroku run bashі ви маєте доступ до свого дино
Мохаммед Джафар Машхаді

Чи можете ви дати деяку оцінку цін? мені доведеться публікувати Java Web App на Tomcat (Spring Framework, angularJS тощо), давайте подумаємо про 1000 користувачів на місяць, кожен з яких використовує додаток протягом 5 хвилин. Яка орієнтовна ціна? (як дуже низьке використання, але доступність на повний місяць)
бритвою

1
@razor, якщо ви використовуєте мікро2 екземпляр t2 (добре для попереднього виробництва або невеликого проекту), ціна така дешева, що становить приблизно від 5 до 10 $ на місяць, як моя пам'ять у попередньому проекті. Докладно тут aws.amazon.com/ec2/pricing
Hieu Pham

а Хероку буде набагато дорожче? (У 2 рази?) З використанням simiar? Я знаю сторінки ціноутворення, але важко підрахувати / уявити, скільки потужності процесора займе такий простий додаток або що буде використання БД через кілька місяців (БД буде зовсім невеликим),
бритва

27

Існуючі відповіді широко точні:

  • Heroku дуже простий у використанні та розгортанні, може бути легко налаштований для автоматичного розгортання сховища (наприклад, GitHub), має безліч сторонніх додатків і більше за інший примірник.

  • AWS має більш широкий спектр послуг, що випускаються за найвищими цінами, включаючи DNS, балансування завантаження, дешеве зберігання файлів і має такі особливості підприємства, як можливість визначення політики безпеки.

Для tl; dr пропустіть до кінця цієї посади.

AWS ElasticBeanstalk - це спроба створити подібну до Heroku платформу для автоматичного масштабування та просту розгортання. Оскільки він використовує екземпляри EC2 (які він створює автоматично) EB-сервери можуть робити все, що може зробити будь-який інший екземпляр EC2, і це запустити дешево.

Розгортання з ЕБ дуже повільне; розгортання оновлення може зайняти 10-15 хвилин на сервері, а розгортання на більшому кластері може зайняти найкращу частину години - порівняно з декількома секундами для розгортання оновлення на Heroku. Розгортання на ЕБ не обробляється особливо легко, що може обмежувати дизайн додатків.

Ви можете скористатись усіма послугами, які ElasticBeanstalk використовує за лаштунками, щоб створити власну систему замовлення (за допомогою CodeDeploy, Elastic Load Balancer, Auto Scaling Groups - і CodeCommit, CodeBuild та CodePipeline, якщо ви хочете все пройти), але ви можете точно витратити хороший через кілька тижнів, коли він налаштовує його вперше, оскільки він досить складний і трохи хитріший, ніж просто налаштування речей в EC2.

AWS Lightsail пропонує хостинг за конкурентними цінами, але не допомагає при розгортанні або масштабуванні - це дійсно просто обгортка для їх EC2 (але коштує набагато більше). Це дозволяє автоматично запускати скрипт bash при початковій налаштуваннях, що приємно на дотик, але це цінно порівняно з вартістю просто налаштування екземпляра EC2 (що ви також можете робити програмно).

Деякі думки щодо порівняння (щоб спробувати відповісти на питання, хоч і в обхідному напрямку):

  1. Не варто недооцінювати кількість адміністративної роботи, включаючи постійне оновлення всього встановленого пристрою за допомогою патчів безпеки (та періодичних оновлень ОС).

  2. Не варто недооцінювати, скільки коштує автоматичне розгортання, автоматичне масштабування та надання та конфігурація SSL.

    Автоматичне розгортання, коли ви оновлюєте свій сховище Git, з Heroku легко. Він майже миттєвий, витончений, тому для кінцевих користувачів немає відключень, і його можна налаштувати на оновлення лише у випадку, якщо тести / Безперервна інтеграція проходять, щоб ви не зламали свій сайт, якщо розгортаєте зламаний код.

    Ви також можете використовувати ElasticBeanstalk для автоматичного розгортання, але будьте готові витратити тиждень, налаштувавши це вперше - можливо, вам доведеться змінити спосіб розгортання та створення активів (наприклад, CSS та JS), щоб працювати з тим, як ElasticBeanstalk обробляє розгортання або будує логіку у ваш додаток для обробки розгортань.

    Будьте в курсі витрат, що для безпроблемного розгортання без відключення в EB вам потрібно запустити кілька примірників - EB розгортає оновлення для кожного сервера окремо, щоб ваша послуга не була деградована - де Heroku створює нове дино для вас і просто застарає стара послуга, поки всі запити до неї не будуть оброблені (потім вона її видаляє).

    Цікаво, що вартість хостингу роботи декількох серверів з EB може бути дешевшою, ніж один екземпляр Heroku, особливо якщо включити вартість додаткових додатків.

Деякі інші питання, про які конкретно не ставили запитання, але порушені іншими відповідями:

  1. Використання іншого постачальника для виробництва та розробки - погана ідея.

    Я наголошую, що люди це пропонують. Хоча в ідеалі код повинен працювати нормально на будь-якій розумній платформі, щоб він був максимально портативним, версії програмного забезпечення на кожному хості сильно відрізнятимуться, і лише тому, що код працює в режимі постановки, не означає, що він буде працювати у виробництві (наприклад, основні Node.js / Версії Ruby / Python / PHP / Perl можуть відрізнятися способами, які роблять код несумісним, часто безшумними способами, які не можуть бути спіймані, навіть якщо ви маєте гідне покриття тесту).

    Хороша ідея - використовувати щось на зразок Heroku для складання прототипів, менших проектів та мікросайтів - так ви можете швидко створювати та розгортати речі, не вкладаючи багато часу в налаштування та обслуговування.

    Обов'язково враховуйте витрати на запуск як виробничих, так і передвиробничих примірників, приймаючи це рішення, не забуваючи про витрати на реплікацію всього середовища (включаючи сторонні сервіси, такі як сховища даних / додатки, встановлення та налаштування SSL тощо). .

  2. Якщо ви використовуєте AWS, будьте обережні щодо попередньо налаштованих екземплярів AWS від таких постачальників, як Bitnami - вони є кошмаром безпеки. Вони за замовчуванням можуть виставляти безліч відомих вразливих програм, не згадуючи це в описі.

    Розглянемо, замість цього, просто використовувати добре підтримуваний основний розподіл, наприклад Ubuntu або Debian (або CentOS, якщо вам потрібна підтримка RPM).

    Примітка. Пропозиція Amazon має власний дистрибутив під назвою Amazon Linux, який використовує RPM, але це специфічний для EC2 режим і менш добре підтримується програмним забезпеченням сторонніх розробників / з відкритим кодом.

  3. Ви також можете встановити екземпляр EC2 на AWS (або Lightsail) і налаштувати щось на зразок flynn або dokku на ньому - на якому потім ви могли б легко розгорнути кілька сайтів, що може бути вартим, якщо ви підтримуєте багато послуг або хочете бути здатний легко закручувати нові речі. Однак налаштування не є настільки автоматичним, як просто використання Heroku, і ви можете витратити багато часу на його налаштування та підтримку (до того моменту, як я вважав, що розгортання за допомогою кластеризації Amazon та Docker Swarm простіше, ніж їх налаштування; YMMV).

Я використовував екземпляри AWS EC (поодинці та в кластерах), Elastic Beanstalk та Lightsail та Heroku одночасно, залежно від потреб проекту, над яким я працюю.

Я ненавиджу витрачати час на налаштування послуг, але мій рахунок Heroku буде тисячами на рік, якби я використовував його на все, а AWS розраховує частину вартості.

тл; д-р

Якби гроші ніколи не були проблемою, я б користувався Heroku майже для всього, тому що це величезна економія часу - але я все одно хотів би використовувати AWS для складніших проектів, де мені потрібна гнучкість та більш досконалі сервіси, які Heroku не пропонує.

Ідеальним сценарієм для мене був би, якби ElasticBeanstalk просто працював більше, як Heroku - тобто з більш легкою конфігурацією та швидшим та кращим механізмом розгортання.

Приклад сервісу, який є майже таким, є зараз.sh , яка фактично використовує AWS за кадром, але робить розгортання та кластеризацію настільки ж простою, як і на Heroku (з автоматичним SSL, DNS, витонченими розгортаннями, надзвичайно простим налаштуванням кластерів та управління).

Я досить багато використовував її як для розгортання додатків Node.js, так і для зображень Docker. Основний застереження - це випадки спільного використання (щось відображається на їх меншій вартості), і наразі немає можливості купувати виділені екземпляри. Однак їх інструмент розгортання з відкритим кодом "зараз" також може використовуватися для розгортання у спеціалізованих екземплярах на AWS, а також у Google Cloud та Azure.


8

Це був значний відсоток нашого бізнесу, який мігрував людей з Heroku до AWS. І для обох є переваги, але через Хероку це стає безладним через деякий час ... раз вам потрібен певний рівень складності, який вже не легко підтримувати з обмеженнями Heroku.

Однак, все частіше з’являється можливість простоти Heroku та гнучкості AWS, будучи на AWS із чудовими рамками / інструментами.


Чи можете ви дати деяку оцінку цін? мені доведеться публікувати Java Web App на Tomcat (Spring Framework, angularJS тощо), давайте подумаємо про 1000 користувачів на місяць, кожен з яких використовує додаток протягом 5 хвилин. Яка орієнтовна ціна? (як дуже низьке використання, але доступність протягом повного місяця)
бритву

3

Смішна річ, що Heroku фактично використовує AWS на бекенді. Це забирає всі накладні витрати та робить управління архітектурою на EC2 для вас. (Отримані знання від старшого інженера у великій компанії під час інтерв'ю)


1

Добре! Я спостерігаю, що Хероку знаменитий розробниками та новоспеченими розробниками, тоді як AWS має розширену персону розробника. DigitalOcean також є головним гравцем у цьому напрямку. Cloudways зробило набагато простіше створити стек ламп одним клацанням на DigitalOcean та AWS. Оновлення всіх служб та пакетів за один клік набагато краще, ніж робити все вручну.

Ви можете повністю ознайомитися тут: https://www.cloudways.com/blog/host-php-on-aws-cloud/


1

Ну Heroku використовує AWS у фоновому режимі, все залежить від типу потрібного рішення. Якщо ви є основним Linux і присвячує себе хлопцем, якого ви не турбуєтеся про створення vm з нуля, як, наприклад, вибір амі, вибір параметрів пальцемента тощо, ви можете піти з AWS. Якщо ви хочете робити речі на поверхневому рівні, не маючи цих мереж, можете піти з героїкою.


0

Веб-сервіси Amazon (AWS) пропонують безліч послуг від IaaS до PaaS із гарантованою міцністю та доступністю даних та інфраструктури на 99,9999999%. AWS пропонує автоматизацію інфраструктури разом з декількома інструментами для розробників, щоб розробити процес розгортання додатків.

З іншого боку, Heroku - це просто PaaS, який пропонує послуги для управління вашою платформою на їх хмарі. З AWS він нікуди не стоїть, будь то інфраструктура чи безпека.


6
Цитування, необхідне для цього, "Це AWS ніде не стоїть, чи це інфраструктура, чи безпека".
pdoherty926

0

Іноді мені цікаво, чому люди порівнюють AWS з Heroku. AWS - це система IAAS (інфраструктура як послуга), яка чітко говорить про те, наскільки надійною та розрахунковою є система. З іншого боку, Heroku - це лише SAAS, це в основному лише одна частка послуг AWS. Тож навіщо боротися з налаштуванням AWS, коли ви можете доставити свій перший продукт у прем’єр за допомогою Heroku.

Heroku - це вільне, просте і просте розгортання майже всіх типів стеків в Інтернеті. Heroku спеціально побудований для того, щоб обійти всі клопоти з доставкою вашої програми на живий сервер за менший час.

Тим не менш, ви можете розгорнути свою програму, використовуючи будь-який підручник від обох сторін і порівняти

Документи AWS DOCS та Heroku


0

Хоча і AWS, і Heroku є хмарними платформами, вони відрізняються, оскільки AWS є IaaS, а Heroku є PaaS


2
Це не правильно. AWS пропонує як IAAS, так і PAAS.
Гленн Бех

0

Heroku - це як підмножина AWS. Це просто платформа як послуга, тоді як AWS можна реалізувати як завгодно і на будь-якому рівні.

Реалізація залежить від того, яка вимога бізнесу. Якщо воно підходить для будь-якого, використовуйте відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.