Google App Engine的优点和缺点

Ris*_*shi 68 google-app-engine

[2009年8月21日更新名单]

帮助我编制在Google App Engine上构建应用程序的所有优点和缺点的列表

优点:

  1. 无需购买服务器或服务器空间(无需维护).
  2. 使解决扩展问题变得更容易.
  3. 释放一定水平的消耗资源.

缺点:

  1. 锁定在Google App Engine中?
  2. 开发人员对App Engine上的文件系统具有只读访问权限.
  3. App Engine只能执行从HTTP请求调用的代码(计划的后台任务除外).
  4. 用户可以上传任意Python模块,但前提是它们是纯Python; 不支持C和Pyrex模块.
  5. App Engine将实体返回的最大行数限制为每个数据存储区调用1000行.(更新 - App Engine现在支持用于访问更大查询的游标)
  6. Java应用程序只能使用JRE标准版中的类的子集(JRE Class White List).
  7. Java应用程序无法创建新线程.

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

硬限制

每个开发人员的 应用程序 -
每个请求10 次 -
每个应用程序30秒文件 - 3,000个
HTTP响应大小 - 10 MB
数据存储区项目大小 - 1 MB
应用程序代码大小 - 150 MB
更新 Blob存储现在允许存储高达50MB的文件

Pro还是Con?
App Engine的基础架构消除了构建应用程序以扩展到数百万次点击的许多系统管理和开发挑战.Google会根据需要将代码部署到群集,监控,故障转移和启动应用程序实例.

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

Arp*_*mbi 14

优点:

  • 可扩展
  • 简单而便宜(短期内).
  • 初创企业/个人的不错选择.
  • 适用于仅存储和检索数据的应用程序.

缺点:

  • 不适合CPU密集型计算.它们更慢,更昂贵.
  • 如果一个应用程序在谷歌规模工作,可扩展性并不重要,那么可能它足够赚钱在自己的服务器上运行.
  • 它们在这里和那里都有很多局限性,因此深度数据分析很困难.就像你不能使用GAE生成社交图.

我想说它不适合严肃的企业,长期来看也很昂贵.

  • 关于可扩展性无关紧要的问题,我认为它可以保证您免受Digg或Lifehacker的影响.就像在,你做一个业余爱好者网站,它突然变得像Ytinstant.com一样传播.如果你在自己的服务器上,它无法承受媒体热潮,但在GAE上,没问题. (6认同)
  • 您可以在专业人员中添加缺少配置.在服务器的各个设置中,为了实现高安全级别,您必须具备更多关于它的基本知识以及对服务器配置的某些经验,这需要花费时间,包括测试特定配置等... (5认同)
  • 大多数GAE"限制"都在开发人员的头脑中,他们根本不知道如何正确使用它.您可以在GAE上以极高的速度进行非常深入的数据分析:非关系数据存储区是完成此类任务的绝佳平台. (2认同)

pro*_*mer 13

(一个巨大的新)PRO:GAE现在支持MySQL:https: //developers.google.com/cloud-sql/

  • 关于GAE我听过的最好的消息.谢谢 (3认同)

Raf*_*hes 7

优点:

  • 内置ui用于统一日志

  • 任务队列的内置Web界面

  • 主对象列表中的内置索引.

缺点:

  • 松散的日志非常快

  • 非常贵

  • 非常贵

  • 非常贵

  • 未破解的.缩放,因为您有义务以可扩展的方式进行编码.

  • 更长的开发周期.有时候你只想把东西放在一起,然后在5个小时后把它扔掉.使用appengine你必须正确编码并写下很多东西,以确保它可以扩展.你不能只是做一个"发现.| grep .avi | xargs ffmpeg -compress ....":)

  • 您将花费数小时尝试执行最简单的任务,例如向APNS(iPhone)发送推送通知.虽然如果你只是想在将来支持android,这很好.

  • 很难在数据库上进行清理.修复数据库中的行是一个巨大的痛苦,主要是因为非常慢,但它还需要大量代码才能在其时间限制内正确循环.

  • 移植Lucene来处理它的"文件系统"是一件痛苦的事.

  • 你支付的费用很慢.

  • 如果你的应用程序的流量高峰,甚至更昂贵.如果有许多粉丝的用户采取行动并且我们必须将通知推送给他的粉丝,那么我的应用就会出现这些高峰.因此,我必须始终保持10个非活动服务器($$$$$)来处理峰值.

Appengine并不是太糟糕,因为我可以选择刻录$$$$而不是担心可扩展性和修复瓶颈以减少服务器使用.有时值得.

我对开始使用新产品的人的建议是使用hetzner.de,这是我托管其他产品服务器的地方.它便宜且非常易于破解.我在hetzner有一台服务器,其处理流量比我在appengine上的产品多3倍.价格差异是每月100美元,每月2700美元!

我有系统管理员的经验,所以底线是我永远不会选择appengine而不是拥有自己的ROOT服务器.不要那个无聊的软件工程师想要尝试新事物而不是构建出色的产品!


Ran*_*ell 5

Pro:对您的应用程序进行无限制的可扩展性并根据需求进行扩展.

  • 请结合你的答案 (2认同)