当 AWS 存在时,为什么人们会使用 Heroku?Heroku 与 AWS 的区别是什么?[关闭]

Why do people use Heroku when AWS is present? What distinguishes Heroku from AWS? [closed]

提问人:Bryan 提问时间:3/21/2012 最后编辑:Anna SBryan 更新时间:1/11/2023 访问量:243806

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

4年前关闭。

我是一名初学者 RoR 程序员,计划使用 Heroku 部署我的应用程序。我的其他顾问朋友说 Heroku 真的很容易,很好用。唯一的问题是我仍然不知道 Heroku 是做什么的......

我看过他们的网站,简而言之,Heroku 所做的是帮助扩展,但是......为什么这很重要?Heroku 如何帮助:

  1. 速度 - 我的研究表明,如果我的目标是美国/亚洲的受众,那么在美国东海岸部署 AWS 将是最快的。

  2. 安全性 - 它们的安全性如何?

  3. 扩展 - 它实际上是如何工作的?

  4. 成本效益 - 有一种类似测功机的东西可以很容易地扩展。

  5. 他们如何与竞争对手抗衡?例如,Engine Yardbluebox

请使用通俗易懂的英语术语来解释...我是一个初学者程序员。

Ruby-on-Rails Heroku 亚马逊网络服务

评论

63赞 Jus12 10/4/2013
你应该问过 Heroku 和 AWS elastic beanstalk 有什么区别。否则,你会得到通常的“PaaS vs IaaS”答案,而不是你可能想要的答案。
44赞 Muhammad Umer 7/18/2014
在 Heroku 上开发,在 Heroku 上扩展,在 Heroku 上创新......然后,一旦想法成为业务成功,然后转移到 AWS......就像你招聘的时候一样。
12赞 Paolo 3/30/2015
一旦您使用一些服务并且需要传输、配置、测试所有内容,可能很难迁移......它肯定会有成本
42赞 Razi Shaban 5/2/2015
我最喜欢 Heroku 的一点是它可以从 Github 自动部署,所以我可以在我的 repo 上有一个分支。每当新的提交被推送到该存储库时,Heroku 都会自动抓取它、构建它并部署它。我根本不需要担心服务器端的任何事情!production
4赞 Razi Shaban 3/31/2018
@ShivangAgarwal Heroku 部署我写的任何内容。质量控制是用户的责任。

答:

2149赞 Kristian Glass 3/21/2012 #1

首先,AWS 和 Heroku 是不同的东西。AWS 提供基础设施即服务 (IaaS),而 Heroku 提供平台即服务 (PaaS)。

有什么区别?非常近似地,IaaS 为您提供了在其上构建内容所需的组件;PaaS 为您提供了一个环境,您只需推送代码和一些基本配置,即可获得正在运行的应用程序。IaaS 可以为您提供更强大的功能和灵活性,但代价是必须自己构建和维护更多功能。

为了让您的代码在 AWS 上运行并看起来有点像 Heroku 部署,您需要一些 EC2 实例 - 您需要在其上安装负载均衡器/缓存层(例如 Varnish),您需要运行 Passengernginx 之类的实例来提供您的代码,您需要部署和配置类似 PostgreSQL 的集群数据库实例。您需要一个具有 Capistrano 之类的部署系统,以及执行日志聚合的功能。

设置和维护的工作量并非微不足道。使用 Heroku,达到这种阶段所需的工作可能是几行应用程序代码和一个 .git push

所以你已经走到了这一步,你想扩大规模。伟大。您正在使用 Puppet 进行 EC2 部署,对吗?因此,现在您将 Capistrano 文件配置为根据需要启动/关闭实例;您重新调整 Puppet 配置,以便 Varnish 知道 web-worker 实例,并自动在它们之间池化。或者你.heroku scale web:+5

希望这能让您了解两者之间的比较。现在解决您的具体问题:

速度

目前,Heroku 仅在 和 中的 AWS 实例上运行。对你来说,这听起来像是你想要的。对于其他人来说,这可能更像是一个考虑因素。us-easteu-west

安全

我见过很多内部维护的生产服务器在安全更新方面远远落后,或者通常组合得很差。有了 Heroku,你就让其他人来管理这种事情,这要么是祝福,要么是诅咒,这取决于你如何看待它!

当你部署时,你实际上是在将你的代码直接交给 Heroku。这对您来说可能是一个问题。他们关于测功机隔离的文章详细介绍了他们的隔离技术(似乎在单个 EC2 实例上运行多个测功机)。几位同事对这些技术及其隔离强度表示了问题;唉,我没有足够的知识/经验来真正发表评论,但我目前的 Heroku 部署认为这“足够好”。这对你来说可能是个问题,我不知道。

缩放

我在上面的 IaaS 与 PaaS 比较中谈到了如何实现这一点。大约,您的应用程序有一个 ,它包含格式为 的行,例如(摘自 Heroku Architecture - The Process Model):Procfiledyno_type: command_to_run

web:    bundle exec rails server
worker: bundle exec rake jobs:work

这,带有:

heroku scale web:2 worker:10

将导致您有 2 个测功机和 10 个测功机运行。很好,简单,容易。请注意,这是一种特殊的测功机类型,可以访问外部世界,并且位于其漂亮的网络流量多路复用器(可能是某种 Varnish / nginx 组合)后面,该多路复用器将相应地路由流量。您的工作人员可能会与消息队列进行类似的路由交互,他们将通过环境中的 URL 从中获取位置。webworkerweb

成本效益

很多人对此有很多不同的看法。目前,测功机小时为 0.05 USD/小时,而 AWS 微型实例为 0.025 USD/小时,AWS 小型实例为 0.09 USD/小时。

Heroku 的 dyno 文档说你有大约 512MB 的 RAM,所以将 dyno 视为有点像 EC2 微型实例可能不是不合理。它值得双倍的价格吗?你有多珍惜你的时间?在 IaaS 产品之上构建以使其达到此标准所需的时间和精力绝对不便宜。我真的无法为您回答这个问题,但不要低估设置和维护的“隐性成本”。

(有点题外话,但如果我从这里连接到测功机(),粗略地看一下就会显示 4 个内核和 36GB 的 RAM - 这让我相信我使用的是“高内存双超大型实例”。Heroku 测功机文档说每个测功机接收 512MB 的 RAM,因此我可能会与多达 71 个其他测功机共享。(我没有足够的关于 Heroku 的 AWS 实例同质性的数据,因此您的里程可能会有所不同))heroku run bash/proc/cpuinfo

他们如何与竞争对手抗衡?

这个,恐怕我真的帮不了你。我唯一真正关注过的竞争对手是 Google App Engine——当时我正在寻求部署 Java 应用程序,对可用框架和技术的限制数量令人难以置信地令人反感。这不仅仅是“Java 的事情”——一般限制和必要的考虑因素(FAQ 暗示了几个)似乎不太方便。相比之下,部署到 Heroku 一直是一个梦想。

结论

如果存在差距/您想要解决的其他领域,请发表评论。我觉得我应该提出我的个人立场。我喜欢 Heroku 的“快速部署”。当我启动一个应用程序时,我想要一些便宜的托管(Heroku 免费层很棒 - 基本上如果你只需要一个 Web dyno 和 5MB 的 PostgreSQL,就可以免费托管一个应用程序),Heroku 是我的首选职位。对于“严肃的生产部署”,有几个付费客户,有服务水平协议,有专门的时间花在运营上,等等,我不能完全让自己把那么多的控制权交给 Heroku,然后 AWS 或我们自己的服务器一直是首选的托管平台。

归根结底,这是关于什么最适合你。你说你是“一个初学者程序员”——可能只是使用 Heroku 可以让你专注于编写 Ruby,而不必花时间围绕你的代码构建所有其他基础设施。我肯定会试一试。


请注意,AWS 实际上有一个 PaaS 产品 Elastic Beanstalk,它支持 Ruby、Node.js、PHP、Python、.NET 和 Java。我认为通常大多数人在看到“AWS”时都会跳转到 EC2、S3 和 EBS 之类的东西,它们绝对是 IaaS 产品

评论

37赞 rewritten 11/27/2012
请注意,现在 Elastic Beanstalk 完全支持 passenger 后面的 ruby 应用程序。
5赞 Thomas Welton 7/1/2013
Heroku 现在还支持欧盟的服务器,而不仅仅是美国地区。
8赞 Gmu 1/4/2014
鉴于 AWS BeanStalk,关于 Heroku 如何成为 PaaS 解决方案而 AWS“只是”IaaS产品的整个讨论难道不是无效的吗?
6赞 1/6/2014
@KristianGlass 如果我们能得到一个真正关注两个 PaaS 产品(Beanstalk 和 Heroku)的更新答案,那就太棒了
3赞 Kristian Glass 1/6/2014
很高兴这对人们有用:) @Gmu 在回答时,EB 受到足够的限制,假设“AWS”意味着“EC2”似乎非常合理,但正如 Alex 所建议的那样,我现在将考虑重新回答 EB 已经有了显着改进。
76赞 Pravin Mishra 2/4/2014 #2

正如克里斯蒂安·格拉斯(Kristian Glass)所说,IaaS(AWS)和PaaS(Heroku,EngineYard)之间没有可比性。

PaaS 基本上可以帮助开发人员加快应用程序的开发速度,从而节省资金,最重要的是创新他们的应用程序和业务,而不是设置配置和管理服务器和数据库等东西。使用 PaaS 购买的其他功能是应用程序部署过程,例如敏捷性、高可用性、监控、扩展/除垢、对专业知识的有限需求、易于部署以及降低成本和开发时间。

但是,PaaS 仍然存在阴暗面,这导致了 PaaS 采用的障碍:

  • 减少对服务器和数据库的控制
  • 如果管理不当,成本将非常高
  • 在当今时代过早和可疑

除上述内容外,您还应该具备足够的技能来管理 IaaS:

  • 硬件购置
  • 操作系统
  • 服务器软件
  • 服务器端脚本环境
  • 网页服务器
  • 数据库管理系统(Mysql、Redis等)
  • 配置生产服务器
  • 用于测试和部署的工具
  • 监控应用程序
  • 高可用性
  • 负载白化/Http 路由
  • 服务备份策略
  • 团队协作
  • 重建生产

如果您的企业规模较小,PaaS 将是您的最佳选择:

  • 现收现付
  • 启动成本低
  • 将管道交给专家
  • PaaS 可处理自动缩放/除鳞、负载均衡、灾难恢复
  • PaaS 管理所有安全要求
  • PaaS 管理可靠性、高可用性
  • Paas 为您管理许多第三方插件

这将完全是根据要求进行个人选择。您可以在我的 PPT Hosting Rails Apps 上获得详细信息。

评论

3赞 Fattie 6/22/2014
我看到了 EngineYard 和 Heroku,当然还有 ElasticBeanstalk ......所有这些都在下面的 AWS 上运行。事实上,是否有任何主要的 PaaS 不在 aws 上运行?有什么想法吗?干杯
5赞 Antonio Cangiano 11/21/2014
Joe,我知道这已经晚了,但要回答您的问题,IBM Bluemix 在 SoftLayer 上运行。
0赞 Nateowami 10/7/2016
PaaS 管理所有安全要求也许是保护服务器,但具有很强的误导性(尤其是在开发人员似乎认为他们的系统默认是安全的世界中)。它肯定不会保护你免受 XSS、CSRF 的侵害,并且可能不会为你设置任何重要的 HTTP 标头。我现在可以看到它:.-1,但如果编辑得当,我会反转它。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...
4赞 iamnat 3/16/2017
越来越多的 PaaS 解决方案 (DIY PaaS) 可以在您自己的基础架构上运行,从而解决 PaaS 灵活性/控制方面的一些问题。一些例子:openshiftcloudfoundryHasura。免责声明:我在哈苏拉工作。
37赞 BricoleurDev 2/17/2014 #3

从开发、IT 和业务目标的角度来看待这个决定有很多不同的方法,所以如果它看起来势不可挡,不要感到难过。但是,也不要过度考虑可扩展性。

想想你的要求

我设计的网站每天为超过 800 万个唯一用户提供服务,每周提供数 TB 的视频,这些视频建立在基础设施上,起价为 25 万美元,由大量 IT 员工$MM。

但我也有较小的网站,这些网站旨在每年产生 10-20 美元,没有很高的流量、数据库或处理要求,而且我毫不妥协地使用 10 美元/月的通用托管帐户运行这些网站。

在未来,部署看起来将更像 Heroku 而不是 AWS,只是因为进步。扩展互联网基础设施的 IT 旋钮转动价值为零,因为互联网基础设施的自动化程度越来越高,而且与您提供的产品或服务的价值无关。

另外,请记住,对于商业网站 - 可扩展性是我们通常所说的“好问题” - 尽管像Facebook和Twitter这样的网站的可扩展性问题非常引人注目,但它们对他们的成功没有负面影响 - 新闻甚至可能有助于更多的注册(所有媒体都是好新闻)。

如果您的服务每天生成 100k+ 唯一值并遇到扩展问题,无论您运行在哪种语言、数据库、平台或基础设施上,我都很乐意为您解除它!

可伸缩性是一个可以解决的实现问题 - 没有客户是一个存在的问题。

36赞 sivi 2/17/2014 #4

实际上,您可以同时使用两者 - 您可以使用 Amazon 服务器 ec2 开发应用程序。然后(使用 git)免费将其推送到 heroku 一段时间(使用 heroku 免费套餐将其提供给公众)并像这样测试它。与租用服务器相比,它非常划算,但您将不得不与限制性更强的 heroku api 交谈,这是您应该考虑的事情。资料来源:这种方法被用于我的一门在线课程“来自 Coursera/Stanford 的启动工程”,作者是 Balaji S. Srinivasan 和 Vijay S. Pande

添加了一个方案,所以我的解释会更容易理解

评论

19赞 Mateo 2/17/2015
使用微型实例作为开发计算机而不是使用本地计算机有什么好处?我没有看到在这种特殊情况下添加AWS的额外好处。谢谢!
6赞 Jeff Dickey 2/18/2015
可能是因为在学术环境中,这将使设置开发环境的说明更加一致,并且他们不必担心使其在 Windows 上运行
2赞 sivi 2/18/2015
该架构有助于避免许多 Windows/Linux 操作系统不兼容的问题。还可以学习 Linux 操作系统,而无需将其安装在本地计算机上。如果您有 Mac,这不是一个问题,但很多人使用 Windows。
14赞 Abe Petrillo 2/25/2015
它被称为虚拟机,我仍然认为这样做没有多大意义。
3赞 Iain Collins 1/12/2017
拥有一个单独的舞台和制作平台是一个非常糟糕的主意;主要软件版本将以不兼容的方式有所不同。您应该能够在本地运行代码进行开发,即使本机操作系统与生产操作系统不同(在最坏的情况下,使用 VMware 或 vagrant 之类的操作系统,或者在为嵌入式平台构建时使用模拟器;但本机通常更容易使用)。只有能够将代码远程部署到云中,才能实现快速应用程序开发的可怕障碍,这使得测试和调试变得不必要地耗时。
286赞 SuperNova 10/5/2015 #5

AWS / Heroku 对于小型爱好项目都是免费的(首先)。

如果您想立即启动一个应用程序,而无需对架构进行太多自定义,请选择 Heroku

如果您想专注于架构并能够使用不同的 Web 服务器,请选择 AWS。根据您选择的服务/产品,AWS 会更耗时,但可能是值得的。AWS 还附带了许多插件服务和产品。


希罗库

  • 平台即服务 (PAAS)
  • 良好的文档
  • 具有内置工具和架构。
  • 在设计应用时,对体系结构的控制有限。
  • 负责部署(通过 GitHub 自动部署,或通过 git 命令或 CLI 手动部署)。
  • 不费时。

AWS系统

  • 基础架构即服务 (IAAS)
  • 用途广泛 - 拥有 EC2、LAMBDA、EMR 等多种产品。
  • 可以使用专用实例对架构进行更多控制,例如选择操作系统、软件版本等。有多个后端层。
  • Elastic Beanstalk 是一项类似于 Heroku 的 PAAS 的功能。
  • 可以使用自动部署,也可以自行部署。

评论

11赞 Zags 2/11/2017
ElasticBeanstalk 比 Heroku 更具成本效益,因为除了您使用的服务器之外,没有服务标记。您还可以将 ElasticBeanstalk 与 AWS 免费套餐结合使用 aws.amazon.com/elasticbeanstalk/pricing
33赞 Brian Dear 3/3/2017
@Zags“成本效益”是一个见仁见智的问题。如果我可以在不到一分钟的时间内创建和部署一个 Heroku 应用程序,而设置 Beanstalk 可能需要几个小时——考虑到几个小时的开发人员时间会破坏人们可能从 Beanstalk 获得的任何“节省”,这并不划算。这实际上取决于优先级 - 是发布功能更重要,还是设置和维护基础设施更重要?
6赞 Zags 3/8/2017
设置的难易程度@BrianDear取决于您对各种系统的熟悉程度。即使 ElasticBeanstalk 需要更长的时间来设置,但 AWS 的成本通常只有 Heroku 的 60%(将 Heruku performance-m 与 AWS m4.xlarge 进行比较)。服务器费用低至 100 美元/月,节省 40% 将在一年内收回“几个小时的工程”成本。服务器费用越高,AWS的论据就越强。
4赞 Anthony Manning-Franklin 10/16/2017
在 Beanstalk 上部署需要 ~5 分钟。选择“平台”->“上传zip”->“欢欣鼓舞”。想要通过推送到主节点进行部署?再花 5 分钟设置 CodePipeline。如果 CLI 让您望而生畏,则仅使用 GUI 控制台即可完成这两个工作流。
1赞 lupchiazoem 5/15/2018
很遗憾,文档未列在 AWS 下。AWS 拥有所有技术/平台中最好的文档之一。我甚至在发布这个答案之前就已经使用了它,大约在 2013 年。
8赞 Kendall Miller 1/9/2016 #6

在我们的业务中,将人员从 Heroku 迁移到 AWS 的比例很高。两者都有优势,但过了一会儿 Heroku 就变得一团糟了......一旦您需要一定程度的复杂性,Heroku 的局限性就不再容易维护了。

也就是说,通过在 AWS 上使用出色的框架/工具,有越来越多的选择来获得 Heroku 的易用性和 AWS 的灵活性。

评论

0赞 razor 9/1/2016
你能给出一些价格估算吗?我必须在 Tomcat 上发布 Java Web App(Spring 框架、angularJS 等),让我们考虑每月 1000 个用户,每个用户使用 App 5 分钟。预估价格是多少?(比如使用率非常低,但整月的可用性)
30赞 Hieu Pham 5/23/2016 #7

好吧,人们通常会问这个问题:Heroku 或 AWS 在开始部署某些东西时。

我同时使用 Heroku 和 AWS 的实验,以下是我的快速回顾和比较:

希罗库

  • 一个命令即可部署任何项目类型:Ruby on Rails、Nodejs
  • 如此多的一键式集成插件和第三方:从某件事开始非常容易。
  • 没有自动缩放;这意味着您需要手动扩展/缩减
  • 成本是昂贵的,特别是当系统需要更多资源时
  • 提供免费实例
  • 如果空闲实例处于非活动状态,则该实例将进入睡眠状态。
  • 数据中心:仅限美国和欧盟
  • 可以使用(感谢 MJafar Mash 的建议)潜入/访问机器级别,但它有点有限!您没有完全访问权限!Heroku run bash
  • 不需要对DevOps了解太多

AWS - EC2

  • 这就像一台具有预配置操作系统(或没有)的机器一样,因此您需要安装软件、库才能使您的网站/服务上线。
  • 插件和库需要手动集成,或者自动化脚本(公共脚本和你编写)
  • Auto Scaling 和负载均衡器是受支持的服务,只需了解如何配置和集成到您的系统中即可
  • 成本相当便宜,取决于您使用它的服务和小时数
  • 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赞 eQ19 7/2/2016
我喜欢你回答问题的方式。我尝试过 Heroku 和 AWS。我同意你的建议:Use Heroku for staging, and Beanstalk for production!
1赞 Mohammad Jafar Mashhadi 8/8/2016
heroku run bash并且您可以获得测功机的外壳访问权限
0赞 razor 9/1/2016
你能给出一些价格估算吗?我必须在 Tomcat 上发布 Java Web App(Spring 框架、angularJS 等),让我们考虑每月 1000 个用户,每个用户使用 App 5 分钟。预估价格是多少?(比如使用率非常低,但整月的可用性)
1赞 Hieu Pham 9/1/2016
@razor如果你使用 T2 微型实例(适合前期生产或小型项目),价格非常便宜,每月大约 5 美元到 10 美元,这是我在上一个项目中的记忆。这里的详细信息 aws.amazon.com/ec2/pricing
0赞 razor 9/2/2016
而 Heroku 会贵得多?(2次?用 simiar 用法?我知道定价页面,但很难计算/想象这样一个简单的应用程序会占用多少 CPU 能力,或者几个月后的数据库使用量是多少(数据库将非常小)
29赞 Iain Collins 1/12/2017 #8

现有的答案大致准确:

  • Heroku 非常易于使用和部署,可以轻松配置为自动部署存储库(例如 GitHub),具有许多第三方附加组件,并且每个实例收费更高。

  • AWS 拥有范围更广、价格具有竞争力的第一方服务,包括 DNS、负载均衡、廉价文件存储,并具有能够定义安全策略等企业功能。

对于 tl;博士跳到这篇文章的结尾。

AWS ElasticBeanstalk 尝试提供类似 Heroku 的自动扩展和轻松部署平台。由于它使用 EC2 实例(它自动创建),因此 EB 服务器可以执行任何其他 EC2 实例可以执行的所有操作,而且运行成本低廉。

使用 EB 进行部署非常慢;部署更新可能需要每台服务器 10-15 分钟,部署到更大的集群可能需要一个小时的大部分时间,而在 Heroku 上部署更新只需几秒钟。EB 上的部署也不是特别无缝地处理,这可能会对应用程序设计造成限制。

您可以使用 ElasticBeanstalk 在后台使用的所有服务来构建自己的定制系统(使用 CodeDeploy、Elastic Load Balancer、Auto Scaling 组 - 以及 CodeCommit、CodeBuild 和 CodePipeline,如果您想全力以赴),但您绝对可以在第一次设置它时花几周时间,因为它相当复杂,而且比仅在 EC2 中配置内容稍微棘手。

AWS Lightsail 提供了价格具有竞争力的托管选项,但对部署或扩展没有帮助 - 它实际上只是其 EC2 产品的包装器(但成本要高得多)。它允许您在初始设置时自动运行 bash 脚本,这很好,但与仅设置 EC2 实例的成本相比(您也可以通过编程方式进行),它很昂贵。

关于比较的一些想法(尝试回答问题,尽管是以迂回的方式):

  1. 不要低估系统管理的工作量,包括使用安全补丁(以及偶尔的操作系统更新)使您安装的所有内容保持最新状态。

  2. 不要低估自动部署、自动扩展以及 SSL 预置和配置的好处。

    使用 Heroku 可以毫不费力地更新 Git 存储库时自动部署。它几乎是即时的、优雅的,因此最终用户不会中断,并且可以设置为仅在测试/持续集成通过时更新,这样您就不会在部署损坏的代码时破坏您的站点。

    您也可以使用 ElasticBeanstalk 进行自动部署,但请准备好在第一次设置时花一周时间进行设置 - 您可能需要更改部署和构建资产(如 CSS 和 JS)的方式,以使用 ElasticBeanstalk 处理部署的方式,或者将逻辑构建到您的应用程序中以处理部署。

    在估算成本时请注意,为了在 EB 上不中断的情况下进行无缝部署,您需要运行多个实例 - EB 会单独向每个服务器推出更新,以便您的服务不会降级 - 当 Heroku 为您启动一个新的测功机并弃用旧服务时,直到处理完对它的所有请求(然后它会删除它)。

    有趣的是,使用 EB 运行多台服务器的托管成本可能比单个 Heroku 实例便宜,尤其是在包括附加组件成本的情况下。

其他一些问题没有具体问到,但由其他答案提出:

  1. 使用不同的提供商进行生产和开发是一个坏主意。

    我很害怕人们提出这个建议。虽然理想情况下,代码应该在任何合理的平台上运行良好,因此它尽可能具有可移植性,但每个主机上的软件版本会有很大差异,仅仅因为代码在暂存中运行并不意味着它将在生产中运行(例如,主要的 Node.js/Ruby/Python/PHP/Perl 版本可能会在使代码不兼容的方式上有所不同, 通常以无声的方式,即使你有不错的测试覆盖率,也可能无法被发现)。

    一个好主意是利用像 Heroku 这样的东西进行原型设计、小型项目和微型网站——这样你就可以快速构建和部署东西,而无需在配置和维护上投入大量时间。

    在做出该决定时,请务必考虑运行生产和预生产实例的成本,不要忘记复制整个环境的成本(包括第三方服务,如数据存储/附加组件、安装和配置 SSL 等)。

  2. 如果使用 AWS,请警惕来自 Bitnami 等供应商的 AWS 预配置实例 - 它们是一场安全噩梦。默认情况下,它们可以暴露许多臭名昭著的易受攻击的应用程序,而无需在描述中提及它。

    相反,请考虑只使用一个支持良好的主流发行版,例如 Ubuntu 或 Debian(如果您需要 RPM 支持,则使用 CentOS)。

    注意:Amazon 产品有自己的发行版,称为 Amazon Linux,它使用 RPM,但它是特定于 EC2 的,并且不太受第三方/开源软件的支持。

  3. 您还可以在 AWS(或 Lightsail)上设置一个 EC2 实例,并在其上配置类似 flynndokku 之类的东西 - 然后您可以轻松地在其上部署多个站点,如果您维护大量服务或希望能够轻松启动新事物,这可能是值得的。但是,设置它并不像仅使用 Heroku 那样自动魔术,您最终可能会花费大量时间来配置和维护它(以至于我发现使用 Amazon 集群和 Docker Swarm 进行部署比设置它们更容易;YMMV)。

我同时使用了 AWS EC 实例(单独使用和集群使用)、Elastic Beanstalk、Lightsail 和 Heroku,具体取决于我正在处理的项目的需求。

我讨厌花时间配置服务,但如果我把 Heroku 用于所有事情,我的 Heroku 账单每年将达到数千美元,而 AWS 的成本只是其中的一小部分。

tl;博士

如果钱从来都不是问题,我会将 Heroku 用于几乎所有事情,因为它可以节省大量时间,但我仍然希望将 AWS 用于更复杂的项目,在这些项目中,我需要 Heroku 无法提供的灵活性和更高级的服务。

对我来说,理想的情况是 ElasticBeanstalk 的工作方式更像 Heroku,即配置更简单、部署机制更快、更好。

now.sh 服务几乎就是这样的一个例子,它实际上在后台使用 AWS,但使部署和集群像在 Heroku 上一样简单(具有自动 SSL、DNS、优雅部署、超级简单的集群设置和管理)。

我已经在Node.js应用程序和Docker映像部署中大量使用它,主要警告是实例是共享的(这反映在它们较低的成本上),目前没有购买专用实例的选项。但是,他们的开源部署工具“now”也可用于部署到 AWS 以及 Google Cloud 和 Azure 上的专用实例。

0赞 Prash 6/2/2017 #9

Amazon Web Services (AWS) 提供从 IaaS 到 PaaS 的大量服务,保证 99.9999999% 的数据和基础设施的持久性和可用性。AWS 提供基础设施自动化以及多种工具,供开发人员流水线化其应用程序部署过程。

另一方面,Heroku 只是 PaaS,它提供在其云上管理平台的服务。无论是在基础设施还是安全性方面,它都无法与 AWS 相提并论。

评论

7赞 pdoherty926 12/20/2017
需要引用,“无论是基础设施还是安全性,它都无法与 AWS 相提并论。
1赞 Shahroze Nawaz 8/26/2017 #10

井!我观察到 Heroku 在崭露头角和新生的开发人员中很有名,而 AWS 则拥有高级开发人员角色。DigitalOcean也是这一领域的主要参与者。Cloudways 使只需单击 DigitalOcean 和 AWS 即可轻松创建 Lamp 堆栈。单击一下即可更新所有服务和包,这比手动执行所有操作要好得多。

您可以在此处完整查看: 如何在 Amazon AWS EC2 上托管 PHP

4赞 Saurav Prakash 3/7/2018 #11

有趣的是,Heroku 实际上在后端使用了 AWS。它消除了所有开销,并为您在 EC2 上进行架构管理。(在面试中从一家大公司的高级工程师那里获得了这些知识)

1赞 Sammy Joseph 6/26/2018 #12

有时,我想知道为什么人们会将 AWS 与 Heroku 进行比较。AWS是一个IAAS(基础设施即服务),它清楚地说明了系统的健壮性和计算能力。另一方面,Heroku 只是一个 SAAS,它基本上只是 AWS 服务的一小部分。那么,当您可以使用 Heroku 将您的第一个产品运送到 Prime 时,为什么还要为 AWS 而苦恼呢?

Heroku 是免费、简单且易于将几乎所有类型的堆栈部署到 Web 的。Heroku 专门用于在短时间内绕过将应用程序运送到实时服务器的所有麻烦。

不过,您可能希望使用双方的任何教程来部署应用程序,并进行比较

AWS DOCSHeroku Docs

2赞 prasoon 7/18/2018 #13

好吧,Heroku 在后台使用 AWS,这完全取决于您需要的解决方案类型。如果您是核心 linux 和 devops 人员,您不必担心从头开始创建 vm,例如选择 ami 选择 palcement 选项等,您可以使用 AWS。如果你想在表面上做事而没有那些网络,你可以选择heroku。

评论

0赞 mirik 7/3/2023
实际上,这里的关键部分是 Heroku 不需要受过教育的云管理员。任何开发人员都可以从 Heroku 添加/扩展/删除主机。
1赞 Gopinath J 9/4/2018 #14

尽管 AWS 和 Heroku 都是云平台,但它们是不同的,因为 AWS 是 IaaS,而 Heroku 是 PaaS

评论

5赞 Glenn Bech 12/6/2018
这是不正确的。AWS 同时提供 IAAS 和 PAAS 产品。
0赞 Krunal Barot 2/17/2019 #15

Heroku 就像 AWS 的子集。它只是平台即服务,而 AWS 可以作为任何内容和任何级别实施。

实现取决于业务需求。如果它适合其中任何一个,请相应地使用。