Я начинающий программист RoR, который планирует развернуть мое приложение с помощью Heroku. По словам моих друзей-консультантов, Heroku очень прост в использовании. Единственная проблема в том, что я до сих пор не знаю, что делает Heroku ...
Я посмотрел на их веб-сайт и вкратце, что Heroku помогает с масштабированием, но ... почему это вообще имеет значение? Как Heroku помогает с:
Скорость - мое исследование показало, что развертывание AWS на восточном побережье США будет самым быстрым, если я буду ориентироваться на аудиторию из США / Азии.
Безопасность - Насколько они безопасны?
Масштабирование - как это на самом деле работает?
Экономическая эффективность - есть что-то вроде dyno, которое позволяет легко масштабировать.
Как они живут против своих конкурентов? Например, Engine Yard и Bluebox ?
Пожалуйста, используйте английские термины для объяснения ... Я начинающий программист.
production
ветку в своем репо. Всякий раз, когда к этому репо добавляется новый коммит, Heroku автоматически захватывает его, создает его и развертывает. Мне вообще не нужно ни о чем беспокоиться на стороне сервера!Ответы:
AWS / Heroku бесплатны для небольших хобби-проектов (для начала).
Если вы хотите запустить приложение сразу, без особой настройки архитектуры, выберите Heroku .
Если вы хотите сосредоточиться на архитектуре и использовать разные веб-серверы, выберите AWS . AWS занимает больше времени в зависимости от того, какую услугу / продукт вы выберете, но может стоить того. AWS также поставляется со многими сервисами и продуктами для плагинов.
Heroku
AWS
источник
Перво-наперво, 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 ):Это, с:
приведет к тому, что у вас будет 2
web
дина и 10worker
дин. Красиво, просто, легко. Обратите внимание, что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.
источник
Как сказал Кристиан Гласс, нет сравнения между IaaS ( AWS ) и PaaS ( Heroku , EngineYard ).
PaaS в основном помогает разработчикам ускорить разработку приложений, тем самым экономя деньги и, что самое важное, вводя новшества в свои приложения и бизнес вместо настройки конфигураций и управления такими вещами, как серверы и базы данных. Другие функции, приобретаемые для использования PaaS, - это процесс развертывания приложений, такой как гибкость, высокая доступность, мониторинг, масштабирование / удаление масштаба, ограниченная потребность в опыте, простое развертывание, а также снижение затрат и времени на разработку.
Но все же есть и темная сторона в PaaS, которая является препятствием для принятия PaaS:
Кроме того, у вас должно быть достаточно навыков для управления IaaS:
Если у вас небольшой бизнес, PaaS будет лучшим вариантом для вас:
Это будет полностью индивидуальный выбор, основанный на требовании. Вы можете получить подробную информацию о моих приложениях PPT Hosting Rails .
источник
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 но я бы поменял его если правильно отредактировал.Есть много разных способов взглянуть на это решение с точки зрения развития, ИТ и бизнес-целей, поэтому не расстраивайтесь, если оно кажется ошеломляющим. Но также - не думайте о масштабируемости.
Подумайте о своих требованиях .
Я разработал веб-сайты, которые обслуживали более 8 миллионов уникальных устройств в день и поставляли терабайты видео в неделю, построенные на инфраструктурах, начиная с 250 тысяч долларов США на капитальном оборудовании, управляемом огромным штатом ИТ-специалистов за $ миллионов.
Но у меня также были небольшие веб-сайты, которые были рассчитаны на получение 10–20 тыс. Долларов в год, не имели очень высоких требований к трафику, дБ или обработке, и я без компромиссов запустил их с общей учетной записи хостинга по 10 долларов в месяц.
В будущем развертывание будет больше похоже на Heroku, чем на AWS, просто благодаря прогрессу. В повороте регулятора ИТ масштабирования интернет-инфраструктур нет нужды, который становится все более автоматизируемым, и ни один из них не имеет никакого отношения к ценности предлагаемого вами продукта или услуги.
Кроме того, помните о коммерческом веб-сайте - масштабируемость - это то, что мы часто называем «хорошей проблемой», - хотя проблемы с масштабируемостью таких сайтов, как Facebook и Twitter, были очень громкими, они никак не влияли на их успех - новости возможно, даже способствовал увеличению числа подписчиков (вся пресса - хорошая пресса).
Если у вас есть сервис, который генерирует 100 000+ уникальных сообщений в день и имеет проблемы с масштабированием, я был бы рад взять его у вас, независимо от того, на каком языке, БД, платформе или инфраструктуре вы работаете!
Масштабируемость - это исправимая проблема реализации - отсутствие клиентов - это существенная проблема.
источник
На самом деле вы можете использовать и то и другое - вы можете разработать приложение с amazon Servers ec2. Затем нажмите его (с помощью git) бесплатно на heroku на некоторое время (используйте бесплатный уровень heroku, чтобы предоставить его публике) и протестируйте его следующим образом. По сравнению с арендой сервера это очень экономически выгодно, но вам придется поговорить с более ограниченным api heroku, о чем вам следует подумать. Источник: этот метод был принят для одного из моих онлайн-классов "Startup engineering" от Coursera / Stanford Баладжи С. Шринивасан и Виджей С. Панде
источник
Ну, люди обычно задают этот вопрос: Heroku или AWS, когда начинают что-то развертывать.
Мой эксперимент с использованием обоих Heroku и AWS, вот мой быстрый обзор и сравнение:
Heroku
Heroku run bash
(Спасибо, MJafar Mash за совет), но это немного ограничено! У вас нет полного доступа!AWS - EC2
AWS Elastic Beanstalk - альтернатива Heroku, но дешевле
Elastic Beanstalk был объявлен как публичная бета-версия с 2010 года; это помогает нам легче работать с развертыванием. Для подробностей, пожалуйста, перейдите сюда
Beanstalk бесплатен, стоимость, которую вы будете платить, будет зависеть от используемых вами услуг и количества часов использования.
Я использую Elastic Beanstalk в течение длительного времени, и я думаю, что это может быть замена Heroku и дешевле!
Резюме
Поэтому в моей нынешней системе я использую Heroku для постановки и Beanstalk для производства!
источник
Use Heroku for staging, and Beanstalk for production!
heroku run bash
и у вас есть доступ к своей динамииСуществующие ответы в целом точны:
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 (что также можно сделать программно).
Несколько мыслей о сравнении (чтобы попытаться ответить на вопросы, хотя и окольным путем):
Не стоит недооценивать объем работ по администрированию системы, в том числе постоянно обновлять все, что вы установили, с помощью исправлений безопасности (и периодических обновлений ОС).
Не стоит недооценивать преимущества автоматического развертывания, автоматического масштабирования, а также настройки и настройки SSL.
Автоматическое развертывание при обновлении репозитория Git с Heroku не требует усилий. Это почти мгновенно, изящно, поэтому нет никаких отключений для конечных пользователей, и его можно настроить на обновление, только если тесты / Непрерывная интеграция пройдены, поэтому вы не сломаете свой сайт, если развернете неработающий код.
Вы также можете использовать ElasticBeanstalk для автоматического развертывания, но будьте готовы потратить неделю на настройку этого в первый раз - вам, возможно, придется изменить способ развертывания и создания ресурсов (таких как CSS и JS), чтобы работать с тем, как ElasticBeanstalk обрабатывает развертывания или строит логику в ваше приложение для обработки развертываний.
При подсчете затрат учитывайте, что для беспроблемного развертывания без перебоев в работе EB вам необходимо запустить несколько экземпляров - EB развертывает обновления для каждого сервера в отдельности, чтобы ваша служба не деградировала - тогда, когда Heroku раскручивает для вас новый dyno и просто устареет старый сервис, пока все запросы к нему не будут обработаны (затем он удалит его).
Интересно, что стоимость хостинга нескольких серверов с EB может быть дешевле, чем одного экземпляра Heroku, особенно если учесть стоимость надстроек.
Некоторые другие вопросы, которые конкретно не задавались, но были подняты другими ответами:
Использование другого поставщика для производства и разработки - плохая идея.
Я полагаю, что люди предлагают это. Хотя в идеале код должен прекрасно работать на любой разумной платформе, поэтому он должен быть максимально переносимым, версии программного обеспечения на каждом хосте будут сильно различаться, и тот факт, что код запускается поэтапно, не означает, что он будет работать в рабочей среде (например, основной Node.js / Версии Ruby / Python / PHP / Perl могут отличаться способами, которые делают код несовместимым, часто молчаливыми способами, которые не могут быть перехвачены, даже если у вас есть приличное тестовое покрытие).
Хорошая идея - использовать что-то вроде Heroku для создания прототипов, небольших проектов и микросайтов, чтобы вы могли быстро создавать и развертывать объекты, не тратя много времени на настройку и обслуживание.
При принятии этого решения учитывайте стоимость запуска как производственных, так и подготовительных экземпляров, не забывая о затратах на репликацию всей среды (включая сторонние службы, такие как хранилища данных / надстройки, установка и настройка SSL и т. Д.). ,
Если вы используете AWS, будьте осторожны с предварительно сконфигурированными экземплярами AWS от таких поставщиков, как Bitnami - это кошмар безопасности. По умолчанию они могут предоставлять множество общеизвестно уязвимых приложений, не упоминая об этом в описании.
Вместо этого попробуйте использовать хорошо поддерживаемый основной дистрибутив, такой как Ubuntu или Debian (или CentOS, если вам нужна поддержка RPM).
Примечание. У предложения Amazon есть собственный дистрибутив под названием Amazon Linux, в котором используется RPM, но он специфичен для EC2 и менее хорошо поддерживается сторонним программным обеспечением с открытым исходным кодом.
Вы также можете настроить экземпляр 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.
источник
В нашем бизнесе значительный процент людей мигрировал из Heroku в AWS. У обоих есть свои преимущества, но через какое-то время это усложняет Heroku ... как только вам понадобится определенный уровень сложности, его уже не так просто поддерживать с ограничениями Heroku.
Тем не менее, появляется все больше возможностей для простоты Heroku и гибкости AWS, поскольку они работают на AWS с отличными инфраструктурами / инструментами.
источник
Забавно, что Heroku на самом деле использует AWS на бэкэнде. Он снимает все накладные расходы и делает управление архитектурой в EC2 для вас. (Получил эти знания от старшего инженера в большой компании во время интервью)
источник
Хорошо! Я наблюдатель, Heroku известен как начинающим, так и начинающим разработчикам, в то время как в AWS есть опытный разработчик. DigitalOcean также является крупным игроком в этой области. Cloudways значительно упростила создание стека ламп одним нажатием на DigitalOcean и AWS. Наличие всех сервисов и пакетов обновлений в один клик гораздо лучше, чем все вручную.
Вы можете проверить полностью здесь: https://www.cloudways.com/blog/host-php-on-aws-cloud/
источник
Ну, Heroku использует AWS в фоновом режиме, все зависит от типа решения, которое вам нужно. Если вы являетесь пользователем ядра Linux и devops, вы не беспокоитесь о создании vm с нуля, например, о выборе ami, выборе параметров palcement и т. Д., Вы можете использовать AWS. Если вы хотите делать вещи на поверхности, не имея этих нетрижностей, вы можете пойти с герою.
источник
Amazon Web Services (AWS) предлагает множество услуг от IaaS до PaaS с гарантированной надежностью 99,999999% и доступностью данных и инфраструктуры. AWS предлагает автоматизацию инфраструктуры вместе с несколькими инструментами для разработчиков, чтобы упростить процесс развертывания приложений.
С другой стороны, Heroku - это просто PaaS, который предлагает услуги по управлению вашей платформой в их облаке. С AWS это никуда не денется, будь то инфраструктура или безопасность.
источник
Иногда мне интересно, почему люди сравнивают AWS с Heroku. AWS - это IAAS (инфраструктура как услуга), она четко говорит о том, насколько надежной и расчетной является система. Heroku, с другой стороны, это просто SAAS, это всего лишь одна часть сервисов AWS. Так зачем бороться с настройкой AWS, если вы можете доставить свой первый продукт в расцветку, используя Heroku.
Heroku - это бесплатный, простой и удобный способ развертывания практически всех типов стеков в Интернете. Heroku специально создан для того, чтобы обойти все хлопоты по доставке вашего приложения на работающий сервер менее чем за короткое время.
Тем не менее, вы можете развернуть свое приложение, используя любой учебник от обеих сторон, и сравнить
AWS DOCS и Heroku Docs
источник
Хотя AWS и Heroku являются облачными платформами, они различаются, поскольку AWS - это IaaS, а Heroku - это PaaS.
источник
Heroku как подмножество AWS. Это просто платформа как сервис, а AWS может быть реализован как угодно и на любом уровне.
Реализация зависит от того, что бизнес-требования. Если оно подходит, используйте соответственно.
источник