谷歌应用引擎的优缺点

70

[更新至 2009 年 8 月 21 日]

帮我编写一个关于在谷歌应用引擎上构建应用程序的所有优缺点列表。

优点:

  1. 无需购买服务器或服务器空间(无需维护)。
  2. 使解决扩展问题变得更加容易。
  3. 在一定程度的资源消耗下是免费的。

缺点:

  1. 锁定于谷歌应用引擎?
  2. 开发人员只有对应用引擎上文件系统的只读访问权限。
  3. 应用引擎只能执行从 HTTP 请求调用的代码(除了计划的后台任务)。
  4. 用户可能会上传任意 Python 模块,但仅限纯 Python 模块;不支持 C 和 Pyrex 模块。
  5. 应用引擎将从实体获取的最大行数限制为每个 Datastore 调用的 1000 行。 (更新 - 应用引擎现在支持使用游标访问更大的查询)
  6. Java 应用程序只能使用 JRE 标准版的子集(JRE 类白名单)。
  7. Java 应用程序无法创建新线程。

已知问题! : http://code.google.com/p/googleappengine/issues/list

硬限制

每个开发者的应用程序数量 - 10
每个请求的时间 - 30 秒
每个应用程序的文件数 - 3,000
HTTP 响应大小 - 10 MB
Datastore 项大小 - 1 MB
应用程序代码大小 - 150 MB
更新 Blob 存储现在允许存储最大为 50MB 的文件

优点还是缺点?
应用引擎的基础设施消除了构建可扩展到数百万次点击的应用程序的许多系统管理和开发挑战。谷歌负责将代码部署到群集、监控、故障转移以及根据需要启动应用程序实例。

虽然其他服务允许用户安装和配置几乎任何*NIX兼容的软件,但App Engine要求开发者使用Python或Java作为编程语言,并且只能使用一组有限的API。当前可用的API允许从BigTable非关系型数据库中存储和检索数据;进行HTTP请求;发送电子邮件;操作图像和缓存。大多数现有的Web应用程序都无法在App Engine上运行而无需修改,因为它们需要使用关系型数据库。


3
很棒,你成功将像 Cron 和任务队列这样的特性转化为'缺点'。 - Nick Johnson
5
许多数据已经过时。自提出该问题以来,App Engine已经增加了许多功能。此外,它似乎过于关注缺点。 - Peter Recore
每个应用程序的文件已更新到10,000个,他们在他们的博客文章中“记录”了这一点:http://googleappengine.blogspot.com/2011/10/app-engine-155-sdk-release.html ;-) - Malartre
我在使用AppEngine时遇到了很多问题。Heroku非常好用,而且有广泛的文档支持。当然,拥有自己的VPS是最好的选择,但需要学习大量的系统管理知识。 - Chloe
太贵了!我刚刚安装并运行了谷歌提供的一个Google应用引擎示例,我发现他们的后端服务费用可以非常快地累积。 - ConfusedDeer
显示剩余2条评论
11个回答

14

优点:

  • 可扩展性强。
  • 简单且更便宜(短期内)。
  • 适合初创企业/个人使用。
  • 适用于只需存储和检索数据的应用程序。

缺点:

  • 不适合CPU密集型计算。它们速度较慢且成本较高。
  • 可扩展性并不是很重要,因为如果一个应用程序能够在 Google 规模下运行,那么它可能足以在自己的服务器上运行。
  • 它们有很多限制,因此深度数据分析很困难。例如,您不能使用 GAE 生成社会图表。

我认为GAE不适用于严肃的企业,并且从长远来看也很昂贵。


6
关于“可扩展性并不重要”的说法,我认为这可以防范Digg或Lifehacker效应。也就是说,你创建了一个业余网站,突然爆红,比如ytinstant.com。如果你使用自己的服务器,它肯定无法承受媒体的涌入,但在GAE上,没有问题。 - Neil
5
您可以在优点中添加缺少配置。为了实现高安全级别的服务器个人设置,您需要对其有更多的基本理解和一定的服务器配置经验,这需要时间,包括测试特定的配置等... - topless
1
如果您运行自己的服务器,您需要人员来管理和维护它们。在GAE上不需要这样的人员,这是任何规模公司的主要成本优势,而不仅仅是初创企业。 - Andrei Volgin
2
大多数GAE“限制”都在开发人员的头脑中,他们只是不知道如何正确使用它。您可以在GAE上以极高的速度进行非常深入的数据分析:非关系型Datastore是这种任务的绝佳平台。 - Andrei Volgin
1
我来 echo @AndreiVolgin 的话,GAE 适用于进行 Google 规模的数据分析(map/reduce 等)。我不确定为什么你会认为它不能用于生成社交图。它可以运行代码,对吧?那么它就可以生成社交图。在 GAE 上,你不会找到像 jQuery 那样的即插即用模块来为你完成所有事情,它实际上更多地是为大型、复杂的公司和产品提供的工具。显然,你基本上误解了这个产品,而这些限制只存在于开发者的头脑中。我建议你打开它。 - MeatFlavourDev
显示剩余2条评论

13

3
我听到的有关GAE的最好消息。谢谢。 - bnguyen82

7

优点:

  • 内置的UI可用于统一日志

  • 内置的Web界面可用于任务队列

  • 在主要对象列表上内置索引。

缺点:

  • 日志很快丢失

  • 非常昂贵

  • 非常昂贵

  • 非常昂贵

  • 无法被入侵。因为你必须按照可扩展的方式编写代码,所以才能实现规模化。

  • 开发周期更长。有时候您只是想把一些东西拼凑在一起并在5个小时后将其丢弃。使用Appengine时,您必须妥善编写代码并编写大量内容,以确保它可扩展。您不能只执行"find . | grep .avi | xargs ffmpeg -compress ...." :)

  • 尝试执行最简单的任务(例如向APNS(iPhone)发送推送通知)会浪费数小时。如果您只想在未来支持Android,则这样做完全没问题。

  • 对数据库进行清理非常麻烦。修复数据库中的行非常繁琐,主要是因为速度极慢,但它还需要大量代码在其时间限制内循环。

  • 把Lucene移植到其"文件系统"上很麻烦。

  • 与所付出的代价相比速度慢。

  • 如果您的应用程序有流量峰值,则更昂贵。如果拥有许多关注者的用户执行操作并且我们必须向他的关注者推送通知,则我的应用程序会出现这些峰值。因此,我不得不始终保持10个非活动服务器开启以处理峰值($$$$$)。

使用Appengine并不算太糟糕,因为我可以选择花费大量金钱而不必担心可扩展性和修复瓶颈以减少服务器使用率。有时候这是值得的。

我对于刚开始创建新产品的人的建议是选择hetzner.de作为自己的服务器托管商,这也是我托管其他产品的地方。它便宜并且极易使用。我在hetzner上有一台服务器,它的流量处理量是我在appengine上的产品的3倍。价格差别为每月100美元对2700美元!

由于我具有系统管理员经验,所以我的底线是我永远不会选择Appengine而不是拥有自己的ROOT服务器。不要成为那个无聊的软件工程师,只想尝试新事物而不是构建伟大的产品!


经过两年的应用程序引擎使用,我认为仍然如此。 - makkasi
不知道2013年的情况,但现在GAE相当便宜。 - Tim
1
@TimCastelijns 这取决于你的应用程序。如果你的应用程序每个HTTP请求可以赚取$5,那么它非常便宜。但对于任何注重增长而不是早期盈利的社交网络来说,它都非常昂贵。 - Rafael Sanches

5

优点:无限的可扩展性,可以根据需求进行扩展。


4
缺点:在某些国家(如阿根廷)无法使用。
编辑:全球范围内可用,但只能通过Google Groups for App Engine使用。

肯定可以在那里找到 - 如果您无法接收短信,则只需在群组中留言以激活您的帐户。 - Nick Johnson
http://appengine.google.com/waitlist/sms_issues - Esteban Küber
Voyager的链接是正确的,而我的建议已经过时了 - 如果您无法接收短信,则使用该链接现在是激活您的帐户的最佳方式。 :) - Nick Johnson
我从来不需要留言或其他什么,它就可以工作(布宜诺斯艾利斯) - Mauricio Scheffer
@Mauricio:自去年8月以来已经发生了变化。 - Esteban Küber
@voyager:也许吧,但我是一年前创建的我的账户和应用程序。 - Mauricio Scheffer

2

我认为,GAE在提供像具有复杂主键的Datastore和java.awt.*支持等重要功能方面仍未成熟,这只是我列举的一些。

除了免费空间和构建一些“爱好”网站之外,我强烈感觉GAE不是Java开发者应该考虑的地方。

我正在使用JSP / Servlets和MySQL构建应用程序,考虑迁移到GAE,但我发现我将花费更多的“有价值时间”进行迁移,而不仅仅是从一些Java托管提供商(如EATJ等)购买空间(抱歉不是营销,只是经验)。

我遇到的另一个大问题是将现有的MySQL数据迁移到GAE,bulkupload真的很糟糕,并且没有客户端支持。

不支持本地数据库到服务器数据库上传。

一旦GAE准备好了上述“所有缺点”,那么我们就可以考虑进行迁移。


2
在评估优缺点时,我认为重要的是澄清代表的市场。寻求成本效益解决方案以帮助他们应对计划曲线陡峭部分的开发人员将严重考虑已列出的缺点。然而,对于小企业主来说,GAE则是上天赐予的礼物。这些人最常寻找“云”作为更有效地经营业务(即销售实物产品和服务)的手段。对于SMB而言,与寻求曲线增长的开发者相比,GAE的优点可能更有价值,而缺点则只占开发者的一小部分。我没有看到GAE团队在做任何与SMB定位相关的事情,所以我猜这样的答案只是在玩火,并且自讨苦吃。实际上,GAE现在应该绝对掌握SMB市场。如果没有(我不了解用户群),那么这就是一个非常令人遗憾的失败。

1

你必须拥有一条手机线路,并且你所在的国家和运营商必须能够接收国际短信。

(我讨厌手机,而且我的妈妈或同事无法收到短信)


请参考Nick对Voyager回答的回复。您可以在没有手机的情况下获取应用引擎。 - Peter Recore
另外,您只需要手机即可注册,而且并非永久有效。如果您计划运营任何真正的业务,那么这样的小型启动成本是微不足道的。 - Peter Recore
那个表格一周左右后仍未得到回复。而且,不,我没有计划进行任何真正的业务。 - WhyNotHugo

1

Con:你的所有基础都属于我们

... 说正经的:

Con:你无法控制应用程序运行的环境。与外包任何组件相同的缺点。在我看来,对于玩具很有趣,但不适合商业(尚未)。

各种东西,如Google API的专有后端,例如他们的数据库系统和其他“锁定”和框架,意味着您的代码在某种松散的意义上与其系统相关联,如果您想从GAE迁移可能会带来成本问题。当然,您可以将这些抽象出来。

我喜欢GAE、AppJet和其他一些东西。它们很酷。但是每个东西都有其位置。如果您想要自由和控制语言模块、API、语法/stdlib版本等...不要放弃对服务提供商的控制权。

云领域中缺乏环境标准和应用程序期望规范让我感到担忧。

真的是常识


请详细说明环境控制。另外,将您的应用程序移植到其他领域时会遇到哪些困难? - Rishi

1

缺点:没有其他关系型数据库或NoSQL数据库是不可能的....


好观点,我希望他们支持ORDBMS系统:D - user2889419

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