AWS和Heroku哪个更适合构建可扩展平台?还是有其他更好的选择?

40

假设你是一家没有自己服务器农场的初创企业。哪种现有解决方案可以让你安心,不会因突然增加的流量而使所有东西崩溃。

我知道这不仅仅是硬件问题,所以我们计划至少有一个负载均衡器、缓存和几个数据库服务器。

在AWS上是否有可能设置自动添加实例和带宽的配置,以应对流量增加?

您还能给部署新手什么建议吗?谢谢。

PS:如果问题太广泛或反映了对提到的主题的不熟悉,请提前致歉,但这就是为什么我要问的原因。

8个回答

37

Heroku。因为你是一家创业公司,所以要保持精益,并且几乎没有比几乎免费(有1个dyno +小型共享DB)更精益的了。花时间来构建你的产品,而不是在基础设施上浪费时间。当你应该与顾客交流时,你不想安装补丁。Heroku也很灵活,允许你根据流量增加调整“dynos”的规模,因此不用担心扩张问题。但是Heroku不会自动为您扩展,所以请自行进行服务器监控。Heroku的插件也很不错。


3
你的意思是说使用 AWS 会涉及到更多的麻烦和成本? - Ska
19
当然。AWS是基础设施即服务,这意味着你可以访问硬件,其他的都需要你自己配置操作系统、安装软件和维护。而Heroku则是平台即服务:他们通过为你处理所有系统管理员任务来增加价值。 - rocketscientist
2
毫无疑问选择Heroku。使用AWS你需要深入了解安装服务、配置、保护服务器等等,还要成为一名数据库管理员。而Heroku可以帮你摆脱这一切,让你专注于应用程序的开发。 - John Beynon
5
此外,Heroku 确实有点昂贵。DB、3 个 Web Dyno、1 个 Worker Dyno、一些附加组件需要 200 美元,很快就会达到 400 美元。 - Ska
6
钱和时间之间总是存在紧张关系。有钱吗?- 花钱请专家,节省时间。有时间吗?- 自己动手做,省钱。是的,Heroku在更高端会变得昂贵。但希望在需要4个dynos时,您已经证明了业务模型并赚取了收入。如果有更好的选择,您始终可以稍后将其移出Heroku。只是好奇,您正在构建什么需要在创业阶段使用如此多的资源? - rocketscientist
显示剩余6条评论

4

远离Heroku。你可以从亚马逊获得免费的EC2一年。扩展Heroku的成本极高。他们的价格往往不清晰,总体上客户服务很糟糕。


2
请您提供详细信息、参考资料或示例以证实您的说法? - yoni
3
需要更多细节。我的客服体验非常出色。他们的网页清晰地展示了定价。 - Kelsin
3
如果在配置和维护像 EC2 这样的 IaaS 上浪费时间和金钱资源,那么该项目可能永远无法扩展。 :) - occulus
3
Heroku在后台运行Amazon EC2,特别是Ubuntu 10.04,我遇到了延迟等问题。如果你具备Linux技能,请使用Amazon EC2,或者如果你更喜欢(大部分)免费服务,请使用Google App Engine。去年,我已经将一些客户从Heroku迁移走了。 - Alvin K.
1
如果 CPU 使用率高于几分钟,亚马逊会限制微实例的 CPU。这些微实例除了非常小的网站之外,不适合用于生产。 - Joe Mornin
1
是的,Heroku存在一些漏洞,而且他们的定价也不够清晰。 - Dingus45191

4

1
我不明白你为什么说你“决定迁移到Heroku”,并链接到一个展示文稿,上面写着“建议架构:两个(或更多)地理分布式EC2实例用于应用层,Xeround用于数据库层”。你能解释一下吗? - Old Pro
这个演示文稿是给客户展示的(有点过时),所以演示文稿显示的是建议的架构。 - Gul
@Gull,给出的链接已经失效了! - Visruth

4
如果你正在使用Python,可以尝试Google应用引擎
一旦你克服了对可用功能的学习曲线,从一个平台迁移Python应用并不太困难。GAE提供数据存储、内存缓存、大容量数据存储等多种功能,还有dJango和Jinja(模板)等其他好处。值得检查Python的起始页,我很快就把它集成到Facebook和Dropbox中了。

3
我听说一个非常擅长Python和部署的开发者说GAE是一场噩梦。虽然那不是最近的事情,也许现在情况有所改变。例如,我听说ORM不可用,这是真的吗? - Ska
GAE使用LevelDB作为noSQL数据库。为了实现快速查询,有一些限制。 - Alvin K.
GAE 太糟糕了,我花了太多时间在下载不在 GAE 上而又不是我的应用程序逻辑的库上。完成这个应用程序后,我再也不会尝试在 GAE 上工作了。 - daydreamer
1
亚马逊 EC2 需要具备 Linux 系统管理员技能,GAE 需要大量的 API 阅读和理解。在两个平台上使用超过 2 年后,当我需要更大的服务器控制(例如 URL 重写、视频和图像处理)时,我会选择亚马逊 EC2,而对于快速应用程序则选择 GAE。 - Alvin K.
你是否知道GAE也会对读写操作进行收费?而Heroku则不会。 - PirateApp

2

BitNami for Amazon EC2 包括 Apache、MySQL、PostgreSQL、SQLite、Python、Django、Git及其所需的依赖项等现成的版本。它可以通过一体化免费本地安装程序、虚拟机和云镜像进行部署。可能值得一试。


2
我的个人经验是,你通常应该从Heroku开始。让你的应用程序在互联网上运行,并找到产品/市场配对或某种类型的增长。当你的客户引起扩展问题时,你会知道你正在前进。在这种情况下,Heroku将允许你以非常小的开销进行扩展。而且,在一段时间内,这种扩展不会影响你的钱包。
当你准备好的时候,跳到AWS。你什么时候准备好?当你的钱包受到足够的痛苦,需要更多地控制堆栈时。你可以雇用一个AWS devops类型,或者自己学习。
Heroku和AWS都有自动扩展解决方案,但是Heroku的学习曲线相对平坦,这就是你付费的原因。而AWS可以很快变得广泛和陡峭。Udemy AWS课程或其他数百个在线资源将帮助你构建强大的AWS架构。
最后,虽然性能不应该是你的主要关注点,但确保你在代码中使用最佳实践。你的第一个用户不应该使你的系统变得缓慢。如果她这样做了,AWS也无法帮助你。
希望这些能在某种程度上有所帮助。
这是我的经验。我的SaaS启动套件已经内置了Heroku部署功能,出于这个原因。然而,这些启动套件也被容器化了。我知道你明确提到了AWS,但使用容器可以做到基础架构无关。这值得考虑!
电子邮件:Ted [at] https://stacksimple.io

1

0

这主要取决于您正在寻找PaaS、IaaS还是SaaS,以及您使用的语言是什么。

  • AWS是一个带有多个组件和层次结构的IaaS/PaaS。
  • Heroku是一个支持多种语言的PaaS,最为突出的是Java、Ruby和Node.js。

根据您的需求,其他平台也可能会涉及到,您可以看看这个比较:https://dictativ.com/compare/paas


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