9月初,Google宣布,作为云计算服务核心内容的GAE(Google App Engine)将结束预览期,正式对外收费服务。
根据新的资费标准,可以免费使用的云计算服务内容将会缩水,各种服务的价格均作了上调。未来,谷歌云计算服务将采用三种服务模式,即免费、收费以及超值版。每一个网络应用收费9美元,超值版则是每个账户收费500美元。
但是新的商业模式并未换来开发者们的好感,随着App Engine结束预览期,各项收费全面上涨,而新的定价也并没有获取开发者的芳心,反而让他们很恼怒。
GAE新的收费模式——process-instance-hour
同AWS(Amazon Web Services)相比,GAE按照的是process-instance-hour收费模式,而AWS则是按照machine-instance-hour收费。这一点对开发人员相当重要,在AWS里,可以并行运行几十个进程,而在GAE中,当进程在等待I/O传输的过程中仍在收取费用。
这也意味着,在对支持的语言进行编译时,更少的CPU消耗时间等于更少的钱。但同时也意味着,运行多个进程等待的时间更长,收取的费用更高,对于Python开发者而言,这绝对不是一个好消息,因为Python开发往往需要多线程处理多个Web请求。从这个角度来看,GAE每个进程实例每小时0.08美元的收费要比AWS机器为实例0.085美元的收费似乎更为昂贵。
定价模式引发开发者争议
Beattie平时工作在新泽西,他主要使用Google+来为PlusFeed提供服务,PlusFeed运行在App Engine之上,调价之前的费用是每天2.63美元,但调价之后费用疯狂的涨到每天68.64美元,这种增长幅度估计普通开发者根本承受不起。根据Beattie所说,仅仅只是抓取一下JSON,转换一下XML就导致CPU占用时间达到了31.42小时(见下图),这也是导致收费如此之高的原因之一。
起初Google说App Engine价格要有所改变,Google也曾给出过一个过渡价格(34.23美元),这是当时的优惠政策,换句话说就是减免50%的费用。可在11月20日之后,Google的这项优惠就直接取消,从而转变到之前提到的68.46美元。
而此次Beattie并不是唯一一个对App Engine的定价表示不满的开发者,他认为,照这样下去,Google如果不给出一个合理的定价,估计使用App Engine的开发者们会很快减少。
GAE优势:更能充分利用CPU
对开发者而言,使用GAE的一个重要理由是可以充分利用自己的CPU,这样用户可以将主要精力花在优化Web程序上,而不是系统调优上。
此外,共享资源的有效利用也是GEA的好处之一。可以肯定的是,当开发者只使用一个单一处理或者只是想运行一些小程序的实例时,GAE可以用很好的方式访问Web服务器、数据库、Memcache,并且价格很便宜。
开发人员建议:GAE VS AWS
存储比较
从存储的角度来看,GAE目前严重依赖于BigTable,开发人员需要从一个完全不同的角度来认识和学习它,特别是对于那些特熟悉关系数据库,被关系数据库理论束缚的人更需要洗洗脑,它提供了一个JPA&JDO访问接口,但它不支持所有的JPA&JDO功能,特别是关系型数据库部分。而Amazon EC2已经支持SQL数据库,你可以使用Oracle,MySQL等你所熟悉的关系数据库。
运维比较
但GAE的优势也显而易见。对Google App Engine来说,应用程序维护和升级是件轻而易举的事,它为各种应用程序提供了一个详细的管理面板,包括日志查看器和数据查看器,一个程序可以有多个版 本,当新版本经过测试,可以用于生产环境时,你可以将其设为默认的版本,而Amazon EC2就麻烦多了,因为它属于IaaS类型,所有维护和升级相关的事情你必须亲力亲为。
开发限制
使用Google App Engine时,你必须受到平台的限制,如果你的查询处于僵死状态,很难将其杀掉,此外,Google App Engine没有线程,提供的SDK也是受限的,有些类和功能被列入黑名单,因此不能被使用,也不能写文件系统等等。
从表面上看这些限制是不可理喻的,但如果有朝一日你也要提供PaaS类型的平台时,你就能理解为什么Google要做这些限制了,这样才能确保运行 在平台上的应用程序不会违反平台的规则,否则平台就可能被应用程序绑架,从而变得不可使用,平台上的其它应用程序就会收到牵连。
即便有这些限制,90%的商业应用程序仍然可以在Google App Engine上正常运行,但对于那些要使用线程,或写文件系统的应用,最好还是选择Amazon EC2,因为它提供了所有底层访问和控制权。
语言支持
目前Google App Engine支持Java和Python,但任何可以转换成字节码,可在JVM上执行的任何编程语言都可以在Google App Engine上运行,如果你喜欢其它编程语言,最好选择Amazon EC2,因为你可以在它的操作系统上面安装语言运行时环境,你拥有几乎完整的硬件和操作系统控制权,还有什么不能做的呢?在Amazon EC2上也托管了许多有趣的C#,.NET,ASP.NET MVC/Visual Studio项目。
概括地说,Amazon EC2是进入云计算的早期尝试者,它利用互联网标准和开放平台创建了一个非常灵活的云计算平台,Google则利用了它在大型数据库方面的研究成果和它内 部实现的一些技术创建了一个强大,但有更多限制的云计算环境。从核心技术来讲,Amazon EC2允许你扩展任何计算机实例到多个实例,因此你拥有每个虚拟盒子的完全控制权,Google App Engine从操作系统抽象而来,没有计算机实例的概念,如果你的Web应用程序不需要操作系统相关的功能,那么Google App Engine无疑是最好的选择,如果需要更好地控制你的系统环境,特别是操作系统相关的控制,那么最好选择Amazon EC2。