Почему люди используют Heroku, когда присутствует AWS? Что отличает Heroku от AWS? [закрыто]

1102

Я начинающий программист RoR, который планирует развернуть мое приложение с помощью Heroku. По словам моих друзей-консультантов, Heroku очень прост в использовании. Единственная проблема в том, что я до сих пор не знаю, что делает Heroku ...

Я посмотрел на их веб-сайт и вкратце, что Heroku помогает с масштабированием, но ... почему это вообще имеет значение? Как Heroku помогает с:

  1. Скорость - мое исследование показало, что развертывание AWS на восточном побережье США будет самым быстрым, если я буду ориентироваться на аудиторию из США / Азии.

  2. Безопасность - Насколько они безопасны?

  3. Масштабирование - как это на самом деле работает?

  4. Экономическая эффективность - есть что-то вроде dyno, которое позволяет легко масштабировать.

  5. Как они живут против своих конкурентов? Например, Engine Yard и Bluebox ?

Пожалуйста, используйте английские термины для объяснения ... Я начинающий программист.

Bryan
источник
267
Я фактически использую это из-за свободного плана;).
свадебные торты
56
Вы должны были спросить, в чем разница между Heroku и эластичным бобом AWS. В противном случае вы получите обычные ответы «PaaS vs IaaS», а не то, что вы, вероятно, ищете.
Jus12
38
развивайся на героку, масштабируйся на героку, вводи инновации на героку ... потом, когда идея станет хитом бизнеса, переходи на aws ... как при найме на работу.
Мухаммед Умер
10
Миграция может быть затруднена, если вы используете несколько сервисов и вам нужно все перенести, настроить, протестировать ... Это определенно будет стоить
Paolo
37
Одна из моих любимых вещей в Heroku - это автоматическое развертывание из Github, так что я могу иметь productionветку в своем репо. Всякий раз, когда к этому репо добавляется новый коммит, Heroku автоматически захватывает его, создает его и развертывает. Мне вообще не нужно ни о чем беспокоиться на стороне сервера!
Рази Шабан

Ответы:

245

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

Если вы хотите запустить приложение сразу, без особой настройки архитектуры, выберите Heroku .

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


Heroku

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

AWS

  • Инфраструктура как услуга (IAAS)
  • Универсальный - имеет много продуктов, таких как EC2, LAMBDA, EMR и т. Д.
  • Может использовать выделенный экземпляр для большего контроля над архитектурой, такой как выбор ОС, версии программного обеспечения и т. Д. Существует более одного внутреннего уровня.
  • Elastic Beanstalk - это функция, похожая на PAAS Heroku.
  • Можно использовать автоматическое развертывание или свернуть свое собственное.
SuperNova
источник
7
ElasticBeanstalk гораздо более экономически эффективен, чем Heroku, поскольку нет никакой разметки для сервиса, кроме используемых вами серверов. Вы также можете использовать ElasticBeanstalk с бесплатным уровнем AWS aws.amazon.com/elasticbeanstalk/pricing
Zags
25
@ Загс "экономически эффективным" является вопросом мнения. Если я смогу создать и развернуть приложение Heroku менее чем за минуту, а на настройку Beanstalk уйдет несколько часов - это неэффективно, учитывая, что несколько часов времени на разработку разрушают любую «экономию», которую можно получить от Beanstalk. Это действительно зависит от приоритетов - важны ли функции доставки или важнее настройка и поддержка инфраструктуры?
Брайан Дорогой
5
@BrianDear простота установки зависит от вашего знакомства с различными системами. Даже если ElasticBeanstalk требуется больше времени для настройки при одинаковом знакомстве, AWS обычно составляет 60% стоимости Heroku (сравните производительность Heruku-m с AWS m4.xlarge). С учетом того, что счет за сервер составляет всего 100 долларов в месяц, экономия в 40% окупит затраты на «несколько часов проектирования» в течение года. Чем выше счет сервера, тем сильнее аргумент в пользу AWS.
Загс
4
Для развертывания на Beanstalk требуется ~ 5 минут. Выберите платформу -> Загрузить zip -> Радоваться. Хотите развернуть, нажав на мастера? Потратьте еще 5 минут на настройку CodePipeline. Оба эти рабочих процесса могут быть выполнены с использованием только консоли графического интерфейса, если 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.

Так что вы так далеко, и вы хотите увеличить. Отлично. Вы используете Puppet для своего развертывания EC2, верно? Итак, теперь вы настраиваете ваши файлы Capistrano так, чтобы они вращались вверх / вниз по мере необходимости; Вы повторно настраиваете свою конфигурацию Puppet, чтобы Varnish знал об экземплярах веб-работника и автоматически объединял их между собой. Или ты heroku scale web:+5.

Надеюсь, это даст вам представление о сравнении между ними. Теперь рассмотрим ваши конкретные вопросы:

скорость

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

Безопасность

Я видел много производственных серверов с внутренним обслуживанием, которые сильно отстают в обновлениях безопасности или просто плохо собраны. С Heroku у вас есть кто-то еще, кто управляет такими вещами, которые являются благословением или проклятием в зависимости от того, как вы на это смотрите!

При развертывании вы фактически передаёте свой код Heroku. Это может быть проблемой для вас. В их статье о изоляции динамометрических элементов подробно описываются технологии изоляции (кажется, что на отдельных экземплярах EC2 работают несколько динамометров). Несколько коллег выразили проблемы с этими технологиями и силой их изоляции; У меня, к сожалению, недостаточно знаний / опыта, чтобы действительно комментировать, но мои нынешние развертывания Heroku считают это «достаточно хорошим». Это может быть проблемой для вас, я не знаю.

пересчет

Я коснулся того, как можно реализовать это в моем сравнении 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дина и 10 workerдин. Красиво, просто, легко. Обратите внимание, что webэто особый тип dyno, который имеет доступ к внешнему миру и находится за красивым мультиплексором веб-трафика (вероятно, какой-то комбинацией Varnish / nginx), который будет соответствующим образом маршрутизировать трафик. Ваши сотрудники, вероятно, взаимодействуют с очередью сообщений для аналогичной маршрутизации, из которой они получают местоположение через URL-адрес в среде.

Эффективность затрат

Многие люди имеют много разных мнений по этому поводу. В настоящее время он составляет 0,05 долл. США в час в течение динамо-часа, по сравнению с 0,025 долл. США в час для микроэкземпляра AWS или 0,09 долл. США в час для небольшого экземпляра AWS.

В документации Heroku по динамометрии говорится, что у вас есть около 512 МБ ОЗУ, поэтому, вероятно, не слишком разумно рассматривать динамографию как микро-экземпляр EC2. Стоит ли удваивать цену? Сколько вы цените свое время? Количество времени и усилий, необходимых для создания IaaS-предложения, обеспечивающего его соответствие этому стандарту, определенно недешево. Я не могу ответить на этот вопрос для вас, но не стоит недооценивать «скрытые затраты» на установку и обслуживание.

(Немного в стороне, но если я подключусь к dyno отсюда ( heroku run bash), беглый взгляд показывает 4 ядра /proc/cpuinfoи 36 ГБ ОЗУ - это наводит меня на мысль, что я нахожусь на «Двойной очень большой экземпляр с высокой памятью» « В документации Heroku dyno говорится, что каждый dyno получает 512 МБ ОЗУ, поэтому я потенциально могу поделиться с 71 другими dyno. (У меня недостаточно данных об однородности экземпляров Heroku AWS, поэтому ваш пробег может отличаться)

Как они живут против своих конкурентов?

Я боюсь, что не могу вам с этим помочь. Единственным конкурентом, на которого я когда-либо обращал внимание, был Google App Engine - в то время, когда я искал развертывание приложений Java, и количество ограничений на используемые платформы и технологии было невероятно отталкивающим. Это больше, чем «просто Java» - количество общих ограничений и необходимых соображений ( часто задаваемые вопросы часто задаваемые вопросы ) казалось менее чем удобным. Напротив, развертывание на Heroku было мечтой.

Вывод

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

В конечном счете, это о том, что работает лучше для вас. Вы говорите, что вы «начинающий программист» - возможно, просто использование Heroku позволит вам сосредоточиться на написании Ruby, и вам не придется тратить время на сборку всей другой инфраструктуры вокруг вашего кода. Я бы определенно попробовал.


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

Кристиан Гласс
источник
33
Обратите внимание, что теперь эластичный бобовый стебель полностью поддерживает приложения ruby ​​позади пассажира.
переписано
4
Heroku теперь также поддерживает серверы в ЕС, а не только в регионе США.
Томас Уэлтон
7
Учитывая AWS BeanStalk, разве не полностью обсуждается, как Heroku является PaaS-решением, в то время как AWS «просто» является предложением IaaS, признанным недействительным?
Гму,
6
@KristianGlass Было бы здорово, если бы мы могли получить обновленный ответ, который действительно рассматривает два предложения PaaS (Beanstalk и Heroku)
Alex Chumbley
3
Рад, что это было полезно для людей :) @Gmu На момент ответа EB был достаточно ограничен, поэтому предположить, что «AWS» означало «EC2», казалось вполне разумным, но, как подсказывает Алекс, я посмотрю на повторный ответ, теперь у EB есть значительно улучшилось.
Кристиан Гласс
68

Как сказал Кристиан Гласс, нет сравнения между IaaS ( AWS ) и PaaS ( Heroku , EngineYard ).

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

Но все же есть и темная сторона в PaaS, которая является препятствием для принятия PaaS:

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

Кроме того, у вас должно быть достаточно навыков для управления IaaS:

  • Приобретение оборудования
  • Операционная система
  • Серверное программное обеспечение
  • Среда сценариев на стороне сервера
  • веб сервер
  • Система управления базами данных (Mysql, Redis и т. Д.)
  • Настроить производственный сервер
  • Инструмент для тестирования и развертывания
  • Приложение для мониторинга
  • Высокая доступность
  • Load Blancing / Http Routing
  • Политика резервного копирования службы
  • Коллективное сотрудничество
  • Восстановить производство

Если у вас небольшой бизнес, PaaS будет лучшим вариантом для вас:

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

Это будет полностью индивидуальный выбор, основанный на требовании. Вы можете получить подробную информацию о моих приложениях PPT Hosting Rails .

Правин Мишра
источник
3
Я вижу EngineYard и Heroku, и, конечно, ElasticBeanstalk ... все работают на AWS внизу. На самом деле, есть ли какие-либо основные PaaS, которые НЕ работают под aws? Любые идеи? Приветствия
Толстяк
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 но я бы поменял его если правильно отредактировал.
Nateowami
4
Все чаще появляется категория PaaS-решений (DIY PaaS), которые работают на вашей собственной инфраструктуре, решая, таким образом, некоторые проблемы с гибкостью / контролем PaaS. Некоторые примеры: openshift , cloudfoundry , Hasura . Отказ от ответственности: я работаю в Хасуре.
iamnat
35

Есть много разных способов взглянуть на это решение с точки зрения развития, ИТ и бизнес-целей, поэтому не расстраивайтесь, если оно кажется ошеломляющим. Но также - не думайте о масштабируемости.

Подумайте о своих требованиях .

Я разработал веб-сайты, которые обслуживали более 8 миллионов уникальных устройств в день и поставляли терабайты видео в неделю, построенные на инфраструктурах, начиная с 250 тысяч долларов США на капитальном оборудовании, управляемом огромным штатом ИТ-специалистов за $ миллионов.

Но у меня также были небольшие веб-сайты, которые были рассчитаны на получение 10–20 тыс. Долларов в год, не имели очень высоких требований к трафику, дБ или обработке, и я без компромиссов запустил их с общей учетной записи хостинга по 10 долларов в месяц.

В будущем развертывание будет больше похоже на Heroku, чем на AWS, просто благодаря прогрессу. В повороте регулятора ИТ масштабирования интернет-инфраструктур нет нужды, который становится все более автоматизируемым, и ни один из них не имеет никакого отношения к ценности предлагаемого вами продукта или услуги.

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

Если у вас есть сервис, который генерирует 100 000+ уникальных сообщений в день и имеет проблемы с масштабированием, я был бы рад взять его у вас, независимо от того, на каком языке, БД, платформе или инфраструктуре вы работаете!

Масштабируемость - это исправимая проблема реализации - отсутствие клиентов - это существенная проблема.

BricoleurDev
источник
35

На самом деле вы можете использовать и то и другое - вы можете разработать приложение с amazon Servers ec2. Затем нажмите его (с помощью git) бесплатно на heroku на некоторое время (используйте бесплатный уровень heroku, чтобы предоставить его публике) и протестируйте его следующим образом. По сравнению с арендой сервера это очень экономически выгодно, но вам придется поговорить с более ограниченным api heroku, о чем вам следует подумать. Источник: этот метод был принят для одного из моих онлайн-классов "Startup engineering" от Coursera / Stanford Баладжи С. Шринивасан и Виджей С. Панде

Добавлена ​​схема, чтобы мое объяснение было легче понять

SiVi
источник
15
В чем преимущество использования экземпляра micro в качестве компьютера для разработки вместо использования локального компьютера? Я не вижу дополнительной выгоды от добавления AWS в данном конкретном случае. Спасибо!
Матео
5
вероятно, потому что в академической среде это сделает инструкции по настройке среды разработки более согласованными, и им не нужно будет беспокоиться о том, чтобы она работала на Windows
Джефф Дики
2
Такая архитектура помогает избежать многих несовместимостей ОС Windows / Linux. А также изучите ОС Linux без необходимости устанавливать ее на свой локальный компьютер. Если у вас Mac, это не проблема, но многие люди используют Windows.
Сиви
13
Это называется виртуальная машина, я до сих пор не вижу особого смысла в этом.
Абе Петрильо
2
Наличие отдельной платформы для постановки и производства - ужасная идея; основные версии программного обеспечения будут различаться несовместимыми способами. Вы должны иметь возможность запускать свой код локально для разработки, даже если нативная ОС отличается от производственной ОС (в худшем случае с чем-то вроде VMware или vagrant или с эмулятором, если вы строите для встроенной платформы; но в основном работать проще с). Только когда-либо иметь возможность удаленного развертывания кода в облаке, это ужасное препятствие для быстрой разработки приложений, что делает излишним время тестирования и отладки.
Иэн Коллинз
28

Ну, люди обычно задают этот вопрос: Heroku или AWS, когда начинают что-то развертывать.

Мой эксперимент с использованием обоих Heroku и AWS, вот мой быстрый обзор и сравнение:

Heroku

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

AWS - EC2

  • Это так же, как машина с предконфигурированной ОС (или нет), поэтому вам нужно установить программное обеспечение, библиотеку, чтобы ваш веб-сайт / служба работали в сети.
  • Плагин и библиотека должны быть интегрированы вручную или скрипт автоматизации (открытый скрипт и написанный вами)
  • Автоматическое масштабирование и балансировка нагрузки - это поддерживаемые сервисы, просто научитесь настраивать и интегрировать в вашу систему
  • Стоимость довольно дешевая, зависит от того, какие услуги вы используете и сколько часов
  • Для экземпляров T2.micro есть несколько бесплатных часов, но обычно вы будете платить несколько долларов каждый месяц (если все еще используете T2.micro)
  • Ваш бесплатный экземпляр не будет спать, доступен 24/7 (потому что вы можете заплатить за него :))
  • Дата-центр: по всему миру. Выберите регион, который лучше всего подходит для вас.
  • Погрузитесь в уровень машины. Так что вы можете наслаждаться этим
  • Некоторые знания о 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, если вы используете t2 micro instance (хорошо для предпроизводственного или небольшого проекта), цена такая дешевая, она составляет от 5 до 10 долларов в месяц, как моя память в предыдущем проекте. Подробности здесь aws.amazon.com/ec2/pricing
Хиеу Фам
а героку будет намного дороже? (2 раза?) С использованием simiar? Я знаю страницы с ценами, но трудно подсчитать / представить, сколько мощности процессора займет такое простое приложение или какова будет нагрузка на БД через несколько месяцев (БД будет довольно маленькой)
бритва
27

Существующие ответы в целом точны:

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

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

Для tl; dr перейдите к концу этого поста.

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

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

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

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

Несколько мыслей о сравнении (чтобы попытаться ответить на вопросы, хотя и окольным путем):

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

  2. Не стоит недооценивать преимущества автоматического развертывания, автоматического масштабирования, а также настройки и настройки SSL.

    Автоматическое развертывание при обновлении репозитория Git с Heroku не требует усилий. Это почти мгновенно, изящно, поэтому нет никаких отключений для конечных пользователей, и его можно настроить на обновление, только если тесты / Непрерывная интеграция пройдены, поэтому вы не сломаете свой сайт, если развернете неработающий код.

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

    При подсчете затрат учитывайте, что для беспроблемного развертывания без перебоев в работе EB вам необходимо запустить несколько экземпляров - EB развертывает обновления для каждого сервера в отдельности, чтобы ваша служба не деградировала - тогда, когда Heroku раскручивает для вас новый dyno и просто устареет старый сервис, пока все запросы к нему не будут обработаны (затем он удалит его).

    Интересно, что стоимость хостинга нескольких серверов с 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 - то есть с более простой конфигурацией и более быстрым и лучшим механизмом развертывания.

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

Я довольно часто использовал его как для развертывания приложений Node.js, так и для развертывания образов Docker, главное предостережение в том, что экземпляры являются общими (что отражается в их более низкой стоимости), и в настоящее время нет возможности купить выделенные экземпляры. Однако их инструмент развертывания с открытым исходным кодом «сейчас» также можно использовать для развертывания в выделенных экземплярах в AWS, а также в Google Cloud и Azure.

Иэн Коллинз
источник
8

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

Тем не менее, появляется все больше возможностей для простоты Heroku и гибкости AWS, поскольку они работают на AWS с отличными инфраструктурами / инструментами.

Кендалл Миллер
источник
Можете ли вы дать оценку некоторых цен? Мне нужно будет опубликовать Java Web App на Tomcat (Spring Framework, AngularJS и т. д.), давайте подумаем о 1000 пользователей в месяц, каждый из которых использует приложение в течение 5 минут. Какая ориентировочная цена? (например, очень низкое использование, но доступность в течение всего месяца)
бритва
3

Забавно, что Heroku на самом деле использует AWS на бэкэнде. Он снимает все накладные расходы и делает управление архитектурой в EC2 для вас. (Получил эти знания от старшего инженера в большой компании во время интервью)

Саурав Пракаш
источник
1

Хорошо! Я наблюдатель, Heroku известен как начинающим, так и начинающим разработчикам, в то время как в AWS есть опытный разработчик. DigitalOcean также является крупным игроком в этой области. Cloudways значительно упростила создание стека ламп одним нажатием на DigitalOcean и AWS. Наличие всех сервисов и пакетов обновлений в один клик гораздо лучше, чем все вручную.

Вы можете проверить полностью здесь: https://www.cloudways.com/blog/host-php-on-aws-cloud/

Шахроз Наваз
источник
1

Ну, Heroku использует AWS в фоновом режиме, все зависит от типа решения, которое вам нужно. Если вы являетесь пользователем ядра Linux и devops, вы не беспокоитесь о создании vm с нуля, например, о выборе ami, выборе параметров palcement и т. Д., Вы можете использовать AWS. Если вы хотите делать вещи на поверхности, не имея этих нетрижностей, вы можете пойти с герою.

prasoon
источник
0

Amazon Web Services (AWS) предлагает множество услуг от IaaS до PaaS с гарантированной надежностью 99,999999% и доступностью данных и инфраструктуры. AWS предлагает автоматизацию инфраструктуры вместе с несколькими инструментами для разработчиков, чтобы упростить процесс развертывания приложений.

С другой стороны, Heroku - это просто PaaS, который предлагает услуги по управлению вашей платформой в их облаке. С AWS это никуда не денется, будь то инфраструктура или безопасность.

Prash
источник
6
Требуется цитата: «С AWS это никуда не денется, будь то инфраструктура или безопасность».
pdoherty926
0

Иногда мне интересно, почему люди сравнивают AWS с Heroku. AWS - это IAAS (инфраструктура как услуга), она четко говорит о том, насколько надежной и расчетной является система. Heroku, с другой стороны, это просто SAAS, это всего лишь одна часть сервисов AWS. Так зачем бороться с настройкой AWS, если вы можете доставить свой первый продукт в расцветку, используя Heroku.

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

Тем не менее, вы можете развернуть свое приложение, используя любой учебник от обеих сторон, и сравнить

AWS DOCS и Heroku Docs

Сэмми Джозеф
источник
0

Хотя AWS и Heroku являются облачными платформами, они различаются, поскольку AWS - это IaaS, а Heroku - это PaaS.

Гопинатх Дж
источник
2
Это не правильно. AWS предлагает как IAAS, так и PAAS.
Гленн Бек
0

Heroku как подмножество AWS. Это просто платформа как сервис, а AWS может быть реализован как угодно и на любом уровне.

Реализация зависит от того, что бизнес-требования. Если оно подходит, используйте соответственно.

Крунал Барот
источник