为什么人们在AWS存在的情况下使用Heroku?Heroku和AWS有何区别?

1173

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

我看了他们的 网站,简而言之,Heroku 的作用是帮助扩展应用程序,但是...为什么这很重要?Heroku 如何帮助:

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

  2. 安全性 - 他们有多安全?

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

  4. 成本效益 - 有类似于 dyno 的东西使其容易扩展。

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

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


297
我实际上使用它是因为有免费计划。;) - weddingcakes
63
你应该询问Heroku和AWS Elastic Beanstalk之间的区别。否则,你会得到通常的“PaaS vs IaaS”答案,这可能不是你想要的。 - Jus12
44
在Heroku上开发,使用Heroku进行扩展,利用Heroku进行创新......等到想法成为商业巨头时,再转移到AWS......就像你在招聘时一样。 - Muhammad Umer
12
如果您正在使用多项服务并需要迁移,那么进行迁移可能会很困难,因为需要转移、配置和测试所有内容......这肯定是有成本的。 - Paolo
42
我最喜欢Heroku的一点是它可以从Github自动部署,这样我就可以在仓库上有一个“production”分支。每当向该仓库推送新的提交时,Heroku会自动获取、构建和部署它。我完全不需要担心任何服务器端的事情! - Razi Shaban
显示剩余8条评论
15个回答

2148
首先,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工作实例并自动在它们之间进行池化。或者你可以使用heroku scale web:+5
希望这能让你了解两者之间的比较。现在来回答你的具体问题:

速度

目前Heroku仅在us-easteu-west的AWS实例上运行。对于你来说,这听起来正是你想要的。对于其他人来说,这可能更值得考虑。

安全性

我见过很多内部维护的生产服务器都滞后于安全更新,或者总体上组织不佳。使用Heroku,你有别人管理这样的事情,这既是一种福音也是一种诅咒,取决于你的看法!
当你部署时,实际上是将你的代码直接交给了Heroku。这可能对你有问题。他们关于Dyno隔离的文章详细介绍了他们的隔离技术(似乎多个dyno在独立的EC2实例上运行)。一些同事对这些技术和它们的隔离强度表示担忧;我很遗憾没有足够的知识/经验来真正评论,但我的当前Heroku部署认为“足够好”。这可能是一个问题,我不知道。

扩展

我在上面的IaaS与PaaS比较中提到了如何实现这一点。大致来说,你的应用程序有一个Procfile,其中有形式为dyno_type:command_to_run的行,例如(摘自Heroku架构-过程模型):

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

这个,带有一个:

heroku scale web:2 worker:10

将其设置为2个web dyno和10个worker dyno将会使您的应用程序运行。很好,简单易懂。请注意,web是一种特殊的dyno类型,它可以访问外部世界,并且位于他们美好的Web流量多路复用器(可能是某种Varnish / nginx组合)后面,该多路复用器将相应地路由流量。您的工作者可能会与消息队列进行交互以进行类似的路由,从中他们将通过环境中的URL获取位置。

成本效益

许多人对此有许多不同的意见。目前每小时的dyno费用为$0.05,而AWS微实例的每小时费用为$0.025,AWS小型实例的每小时费用为$0.09。

Heroku的dyno documentation文档称你有大约512MB的RAM,因此将dyno视为类似于EC2微实例可能不是太不合理。它值得加倍的价格吗?你如何评价自己的时间?在IaaS提供商上构建并将其提升到这个标准所需的时间和精力肯定不便宜。我无法真正回答这个问题,但不要低估安装和维护的“隐藏成本”。

(A bit of an aside, but if I connect to a dyno from here (heroku run bash), a cursory look shows 4 cores in /proc/cpuinfo and 36GB of RAM - this leads me to believe that I'm on a "High-Memory Double Extra Large Instance". The Heroku dyno documentation says each dyno receives 512MB of RAM, so I'm potentially sharing with up to 71 other dynos. (I don't have enough data about the homogeny of Heroku's AWS instances, so your milage may vary))

它们与竞争对手相比如何?

抱歉,我无法真正帮助您。我曾经关注的唯一竞争对手是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
请注意,现在弹性 Beanstalk 完全支持使用 Passenger 的 Ruby 应用程序。 - rewritten
5
Heroku现在不仅支持美国地区的服务器,还支持欧洲地区的服务器。 - Thomas Welton
8
鉴于 AWS Beanstalk 存在,Heroku 作为 PaaS 解决方案,而 AWS 只是 "仅仅" 是 IaaS 提供商的讨论是否失效? - Gmu
6
@KristianGlass 如果我们能得到一个真正考虑了两个PaaS提供商(Beanstalk和Heroku)的更新答案,那将是非常棒的。 - user2497586
3
很高兴这对人们有所帮助 :) 在回答时,EB的功能受限,因此假设“AWS”表示“EC2”似乎是相当合理的,但正如Alex所建议的那样,现在EB已经显著改进,我将重新回答。 - Kristian Glass
显示剩余19条评论

286

AWS / Heroku 都适用于小型兴趣项目(最初阶段免费)。

如果您想马上开始一个应用程序,而不需要进行太多架构定制,则选择 Heroku

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


Heroku

  • 平台即服务(PAAS)
  • 文档好
  • 具有内置工具和架构。
  • 在设计应用程序时对架构的控制有限。
  • 部署已经处理好了(通过 GitHub 自动或通过 git 命令或 CLI 手动完成)。
  • 不需要消耗太多时间。

AWS

  • 基础设施即服务(IAAS)
  • 功能丰富,拥有诸如 EC2、LAMBDA、EMR 等多个产品。
  • 可以使用 Dedicated 实例以更多地控制架构,例如选择操作系统、软件版本等。有超过一个后端层。
  • Elastic Beanstalk 是类似于 Heroku 的 PAAS 功能。
  • 可以使用自动化部署,也可以自己实现。

11
相比Heroku,ElasticBeanstalk更具成本效益,因为除了您使用的服务器外,该服务没有任何额外费用。您还可以在AWS免费层中使用ElasticBeanstalk。https://aws.amazon.com/elasticbeanstalk/pricing/ - Zags
33
“成本效益”是一个主观的问题。如果我可以在不到一分钟内创建和部署Heroku应用程序,而设置Beanstalk可能需要数小时 - 考虑到几个小时的开发人员时间会摧毁Beanstalk可能带来的任何“节省”,那么这就不是成本效益高的。这实际上取决于优先事项 - 发布功能是否更重要,还是设置和维护基础设施更重要? - Brian Dear
6
亲爱的Brian,设置的容易程度取决于您对各种系统的熟悉程度。 即使在相同的熟练程度下,即使ElasticBeanstalk需要更长时间来设置,AWS的成本通常是Heroku的60%(将Heruku性能与AWS m4.xlarge进行比较)。 服务器账单低至每月100美元,节约40%的成本将在一年内收回“数小时的工程费用”。 服务器账单越高,AWS的论据就越强。 - Zags
4
在 Beanstalk 上部署大约需要 5 分钟。选择平台 -> 上传压缩包 -> 欢呼。想通过将代码推送到主分支进行部署吗?再花费 5 分钟设置 CodePipeline。如果 CLI 让您感到不适,这两种工作流程都可以仅使用 GUI 控制台完成。 - Anthony Manning-Franklin
1
不幸的是,AWS 的文档未列出。AWS 拥有任何技术/平台中最好的文档之一。我甚至在此答案发布之前就已经使用它了,大约是在2013年左右。 - lupchiazoem

76
正如Kristian Glass所说,IaaS(AWS)和PaaS(HerokuEngineYard)之间没有可比性。
PaaS基本上帮助开发人员加快应用程序的开发速度,从而节省金钱并最重要的是创新他们的应用程序和业务,而不是设置配置和管理服务器和数据库之类的东西。购买使用PaaS的其他特点包括应用部署过程,如敏捷性、高可用性、监控、规模/反规模、有限的专业知识需求、易于部署以及降低成本和开发时间。
但PaaS仍然存在阻碍其采用的黑暗面:
  • 对服务器和数据库的控制较少
  • 如果未受到适当控制,成本将非常高
  • 在当前时代还为时过早且存在疑问
除了以上内容,您应该具备足够的技能来管理您的IaaS:
  • 硬件采购
  • 操作系统
  • 服务器软件
  • 服务器端脚本环境
  • Web服务器
  • 数据库管理系统(Mysql、Redis等)
  • 配置生产服务器
  • 测试和部署工具
  • 监控应用程序
  • 高可用性
  • 负载均衡/ Http路由
  • 服务备份策略
  • 团队协作
  • 重建生产
如果您拥有小规模的业务,PaaS将是您最好的选择:
  • 按需付费
  • 低启动成本
  • 把管道交给专家
  • PaaS处理自动缩放/反缩放、负载平衡、灾难恢复
  • PaaS管理所有安全要求
  • PaaS管理可靠性、高可用性
  • Paas为您管理许多第三方附加组件

这将完全取决于需求而做出个人选择。 您可以在我的 PPT “托管 Rails 应用程序” 中了解更多详细信息。


3
我看到EngineYard和Heroku,当然还有ElasticBeanstalk......它们都在AWS上运行。事实上,有没有一些主要的PaaS不是在AWS上运行的呢?有什么想法吗?谢谢。 - Fattie
5
乔,我知道已经有点晚了,但为了回答你的问题,IBM Bluemix 运行在 SoftLayer 上。 - Antonio Cangiano
PaaS 管理所有的安全需求,也许可以保护服务器,但这种说法非常误导(特别是在开发人员似乎默认其系统默认安全的世界中)。它肯定不能保护您免受 XSS、CSRF 的攻击,并且可能不会为您设置任何重要的 HTTP 标头。我现在就能看到:感谢您的关注。我们向您保证,我们非常重视安全,并在安全的服务器上运行系统。不需要担心 [插入安全问题],因为所有这些都由……处理。 我会给它打负分,但如果经过适当编辑,我会改变我的看法。 - Nateowami
4
越来越多的PaaS解决方案(自助PaaS)在您拥有的基础设施上运行,从而解决了一些关于PaaS灵活性和控制方面的问题。一些例子包括:openshiftcloudfoundryHasura。声明:我在Hasura工作。 - iamnat

37

有很多不同的视角可以从开发、IT和业务目标来看待这个决定,所以如果感到压倒性,请不要感到难过。但也不要过度思考可伸缩性。

考虑你的需求

我曾经设计过一些网站,每天为超过800万个独立访问者提供服务,并且每周传递数千兆字节的视频,这些网站是在一个资本硬件初始投资为25万美元的基础设施上建立的,并由一个庞大的“百万美元级”的IT人员团队管理。

但我也有一些较小的网站,旨在每年产生10-20K美元的收入,流量、数据库或处理需求并不高,我运行这些网站时使用了一个每月只需花费10美元的通用托管账户,没有做出任何妥协。

在未来,部署将更像Heroku而不是AWS,这只是进步的结果。在伸缩互联网基础设施方面的IT旋钮调整中没有任何价值是越来越自动化的,而且与您提供的产品或服务的价值毫无关系。

此外,在商业网站方面要记住的是,可伸缩性往往被称为“好问题”——虽然像Facebook和Twitter这样的网站的可伸缩性问题非常引人注目,但它们对他们的成功没有任何负面影响——新闻甚至可能导致更多的注册(所有媒体都是好媒体)。

如果您的服务每天产生10万个以上的独立访问者并且存在扩展性问题,无论使用什么语言、数据库、平台或基础设施,我都很高兴为您解决!

可扩展性是可以解决的实现问题,而缺乏客户则是一种存在问题。


36

实际上,您可以两者并用-使用亚马逊服务器EC2开发应用程序。然后(使用git)免费将其推送到Heroku一段时间(使用Heroku的免费层向公众提供服务)并进行测试。与租用服务器相比,这是非常具有成本效益的选择,但是您需要考虑更加严格的Heroku API限制。来源:我在线课程“Coursera / Stanford的创业工程”中采用了此方法,由Balaji S. Srinivasan和Vijay S. Pande教授。

添加了一个图示以使解释更容易理解


19
相比于使用本地计算机,使用微型实例作为开发机器的好处是什么?我没有看到在这种情况下添加AWS的额外好处。谢谢! - Mateo
6
可能是因为在学术环境中,这样做可以使搭建开发环境的指令更加一致,并且不必担心在Windows上的运行问题。 - Jeff Dickey
2
那种架构有助于避免许多Windows/Linux操作系统不兼容的问题。而且,您可以在不必在本地机器上安装Linux操作系统的情况下学习它。如果您有Mac,则这不是一个大问题,但许多人使用Windows。 - sivi
14
这被称为虚拟机,但我仍然不认为这样做有太多意义。 - Abe Petrillo
3
将开发和生产分别部署在不同的平台上是一个非常糟糕的想法;主要软件版本可能存在不兼容的差异。即使本地操作系统与生产环境不同(最坏情况下,可以使用类似VMware、vagrant或嵌入式平台仿真器等工具),你也应该能够在本地运行代码进行开发。只能远程部署到云端会给快速应用程序开发带来极大的困难,增加了测试和调试的时间成本。通常情况下,本地部署更易于处理。 - Iain Collins
显示剩余4条评论

30

通常人们在开始部署时会问这个问题:Heroku还是AWS。

我尝试使用了Heroku和AWS,以下是我的快速评论和比较:

Heroku

  • 一条命令即可部署任何项目类型:Ruby on Rails、Nodejs等
  • 有许多一键集成插件和第三方工具:非常容易入门。
  • 没有自动伸缩功能,这意味着您需要手动进行伸缩。
  • 成本高昂,特别是当系统需要更多资源时
  • 提供免费实例
  • 如果实例处于不活动状态,免费实例将进入休眠状态。
  • 数据中心:只有美国和欧洲
  • 可以通过使用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用于staging环境,而将Beanstalk用于production环境!


3
我喜欢你回答问题的方式。我尝试过Heroku和AWS。我同意你的建议:在开发阶段使用Heroku,在生产环境中使用Beanstalk! - eQ19
1
heroku run bash,你可以访问你的 dyno 的 shell。 - Mohammad Jafar Mashhadi
你能给出一些价格估算吗?我需要在Tomcat上发布Java Web应用程序(Spring框架,angularJS等),假设每月有1000个用户,每个用户使用应用程序5分钟。那么预计的价格是多少呢?(像非常低的使用量,但全月可用) - razor
1
如果您使用t2微型实例(适用于预生产或小型项目),价格非常便宜,我记得在之前的项目中大约为每月5美元至10美元。详情请见此处https://aws.amazon.com/ec2/pricing/。 - Hieu Pham
你知道Heroku的定价页面,但很难计算/想象这样一个简单应用需要多少CPU的能力,或者一个月后DB的使用情况如何(当然,数据库会相当小)。如果使用类似的量,那么Heroku会更昂贵吗?(两倍?) - razor
显示剩余2条评论

29
The existing answers are broadly accurate:
  • Heroku很容易使用和部署,可以轻松配置自动部署库(例如GitHub),拥有许多第三方插件并且每个实例收费更高。
  • AWS拥有更广泛的具有竞争力价格的第一方服务,包括DNS、负载均衡、廉价文件存储,并具有企业级功能,如能够定义安全策略。

对于tl;dr,请跳到本帖子的结尾。

AWS ElasticBeanstalk试图提供类似于Heroku的自动扩展和易于部署的平台。由于它使用EC2实例(它会自动创建),EB服务器可以做任何其他EC2实例可以做的事情,而且运行成本低廉。

使用EB进行部署非常慢;更新部署可能需要每个服务器10-15分钟,并且在更大的集群中部署可能需要近一个小时-相比之下,在Heroku上部署更新只需几秒钟。 EB上的部署处理也不是特别无缝,这可能会对应用程序设计施加限制。

您可以使用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则会为你启动一个新的dyno,直到所有对它的请求都被处理完毕(然后删除它)。 有趣的是,在EB上运行多个服务器的托管成本可能比单个Heroku实例更便宜,特别是一旦你包括附加组件的成本。

除了特别询问的问题外,其他答案提出了一些其他问题:

  1. 在生产和开发中使用不同的提供商是一个不好的主意。

    我很难过人们会建议这样做。虽然理想情况下,代码应该在任何合理的平台上运行得很好,以使其尽可能具有可移植性,但每个主机上的软件版本会有很大差异,并不意味着代码在暂存环境中运行就一定能在生产环境中运行(例如,主要的Node.js/Ruby/Python/PHP/Perl版本可能存在使代码不兼容的方式,通常是无声的,即使你有相当不错的测试覆盖率也可能无法捕捉到)。

    一个好主意是利用像Heroku这样的东西来进行原型制作、小型项目和微网站 - 这样你可以快速构建和部署事物,而不需要花费大量时间进行配置和维护。

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

  2. 如果使用AWS,请注意来自Bitnami等供应商的AWS预配置实例 - 它们是安全的噩梦。它们可以默认公开许多臭名昭著的易受攻击的应用程序,而不在描述中提及。

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

    注意:亚马逊有自己的发行版叫做Amazon Linux,它使用RPM,但它是EC2特定的,并且第三方/开源软件支持较少。

  3. 你也可以在AWS(或Lightsail)上设置一个EC2实例,并在其上配置flynndokku等工具 - 然后你可以轻松地部署多个网站,如果你维护了很多服务或想要轻松地启动新事物,这可能是值得的。然而,将其设置起来并不像使用Heroku那样自动化,你可能会花费很多时间进行配置和维护(我发现使用Amazon集群和Docker Swarm进行部署比设置它们更容易;你的情况可能有所不同)。

我曾使用AWS EC实例(单独和集群)、Elastic Beanstalk、Lightsail以及Heroku,具体取决于我正在处理的项目需求。
我不喜欢花时间配置服务,但如果我把所有东西都用在Heroku上,我的账单将会是每年数千美元,而AWS的成本只是一小部分。
简而言之,如果钱不是问题,我几乎会将所有东西都用在Heroku上,因为它可以节省大量时间,但对于更复杂的项目,我仍然需要使用AWS来获得Heroku没有提供的灵活性和更高级的服务。
对我来说,理想的情况是ElasticBeanstalk能够更像Heroku一样工作,即具有更轻松的配置和更快捷的部署机制。
一个几乎实现了这个目标的服务是now.sh,它实际上在幕后使用AWS,但使部署和集群与Heroku一样简单(具有自动SSL、DNS、优雅的部署、超级简单的集群设置和管理)。

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


8

将人们从Heroku迁移到AWS已经成为我们业务的重要部分。两者都有优势,但是在一段时间后,Heroku会变得混乱...一旦您需要一定程度的复杂性,使用Heroku的限制就不再容易维护。

话虽如此,在AWS上有很多框架/工具可以提供Heroku的便利性和AWS的灵活性。


你能给出一些价格估算吗?我需要在Tomcat上发布Java Web应用程序(Spring框架,angularJS等),假设每月有1000个用户,每个用户使用应用程序5分钟。那么预计的价格是多少呢?(像非常低的使用量,但全月可用) - razor

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

2

好的,Heroku在后台使用AWS,这完全取决于您所需的解决方案类型。如果您是核心Linux和DevOps人员,您不需要担心从头开始创建虚拟机,例如选择ami选择放置选项等,您可以选择AWS。如果您想在表面上完成任务而不必担心这些细节,您可以选择Heroku。


实际上,关键的部分在于Heroku不需要一个受过教育的云管理员。任何开发人员都可以向Heroku添加/扩展/删除主机。 - mirik
实际上,这里的关键是Heroku不需要一个受过教育的云管理员。任何开发人员都可以在Heroku上添加/扩展/移除主机。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接