目前,云服务很多,例如GAE、BAE、SAE、TAE、CAE、ACE、EC2、AZURE各种云。本文主要从以下几个方面对GAE、SAE和BAE的优劣进行分析。
GAE: https://developers.google.com/appengine/
BAE: http://developer.baidu.com/bae
AWS: http://aws.amazon.com/cn/
AZure: http://windowsazure.cn/zh-cn/
数据库
GAE 目前使用 Datasotre 存取数据,最近也提供了云 SQL(MySQL),但申请比较困难。此外,GAE免费提供给用户500M的存储空间和每个月500万次的访问流量,除了部署大型社交行网站(如人人,新浪微博等)不够之外,对于普通的web网站已足够。
SAE 不支持 InnoDB(可申请支持,但申请有点难度),BAE 默认支持。
BAE 不支持数据库连接池(c3p0、BoneCP 已测不支持),数据库连接不能长时间保持。
对于国内云而言,SAE 显式给出了主从库的访问方式,应用可以比较灵活地设计存取策略,例如读写分离。并且 SAE 是每个应用都拥有自己的数据库,而 BAE 是所有应用共用一个库。
应用配置
BAE 的 duapp-web.xml 基本是抄袭 GAE 的 appengine-web.xml,元素基本一致。
比较奇怪的是 BAE 静态资源配置默认所有后缀为静态文件类型(例如.html)的请求路径都默认假设为静态资源,需要在 duapp-web.xml 中指定排除。
综上,GAE的应用配置最完善,国内的SAE和BAE的应用配置由于开发时间短和技术不成熟而显得稚嫩。
计费与配额
GAE 目前的计费模型主要是按 API 调用计数,流量分为 In/Out 配额。每天会定时刷新免费配额。存储空间超过500M或每个月的访问500万次访问数量则需要购买配额。总体来说,相对于国内云来说谷歌的免费配额更大。
SAE 按应用天计费“豆豆”,服务也按流量计费、CPU 时间、调用次数计费。注册或活动送配额,否则需要购买。
BAE 目前还没有详细的计费,只限定了应用数。公测结束后应该会细化计费模型。
综上,GAE 的计费一目了然,主要就是 API 调用次数,但提供的免费访问配额较大;SAE 的计费比较复杂,不同服务有不同的计费策略;BAE 还没有明确的计费模型,但只是因为BAE开发的时间短,很多技术和服务细节还不完善,相信便很快便进入收费模式。
域名绑定
域名绑定就是把域名解析到服务器IP,然后在服务器上设置该域名有权限访问的过程。
GAE 开通企业套件后随便绑,企业套件有免费版。
SAE 目前可以随便绑,但没备案的话绑定域名的请求走海外中转,流量计费翻倍(原二级域名请求计费不变)。
BAE 目前可以随便绑,但没备案的后果自负。
平台服务
GAE 提供了完整的 SDK 包,包含了开发需要的本地运行环境和配置客户端。
SAE 提供了 SDK 包,包含了开发需要的本地服务实现。
BAE 则分别提供了服务 Jar,调用方式按不同服务而异。
综上,GAE 提供了完整的平台化服务,覆盖了从开发到上线运维的一系列工具;SAE 则提供了部分工具,平台化不完整,增加了开发、运维难度;BAE 则是分别提供不同服务给开发,没有统一的 SDK 与调用方式。
综合评价
GAE 提供了比较完整的服务平台,覆盖了应用的生命周期,最近也提供了云 MySQL服务以吸引更多开发者。GAE相对于国内云SAE和BAE来说开源性更好,技术更成熟,平台更稳定,易用性更强,但GFW的存在使‘被墙’的问题始终是GAE的一大劣势。
相比GAE,国内SAE 与 BAE 主要还是面向应用部署托管,普通应用修改后易迁移部署到 BAE 或SAE。新应用开发可以选择和平台绑死(依赖平台服务)或按照普通应用开发。使用配置工具来上传、更新应用配置其实是非常好的方式,但目前 SAE、BAE都没有提供客户端配置工具,这增加了使用者的维护工作量,也使得开发者的开发难度相对较大。
SAE相对BAE来说开发时间更长,技术要比BAE完善,对于国内开发者来说SAE的最大优点是速度快,但缺点也还存在,比如访问不稳定,说明文档少,对API的支持和说明极其简陋等,而且,由于SAE刚开发的时候是从支持php+sql入手,故目前对python的支持不是很好。而对于BAE来说,最大的优点是具有百度的巨大平台和搜索引擎,但其开发时间短,目前支持的服务有限,相比于SAE来说要差一些。
结论:
本人亲测与使用过这三个云应用平台,对自己使用过程中的体会与碰到的问题跟大家分享一下。
最终我还是选择了GAE,因为我主要是使用Javascript,考虑绑定域名与管理问题。
1.GAE不要备案就可以绑定域名,Goolge提供强大的apps for business工具,方便维护多个应用。
2.SAE不备案要路由到国外,备案后才能正常使用,亲测试后发现路由到国外经常访问不了,就算能访问那速度也让人抓狂。
3.BAE虽然可以不路由到国外,但是不备案域名不负责任,给人一种很不爽的感觉。
4.国内备案要绑定主机,SAE与BAE不提供备案主机服务,所以不能自主备案,备案过程过于复杂。
5.基于加上B3Log的强大与对timeline主题的喜爱,我最终选择GAE。
说说使用过过程中体会与碰到的问题
1.GAE支持Java,Python,Go语言,但是每个应用不与语言绑定,同一个应用可以使用不同语言开发。不支持MySQL数据库。有成熟的本地测试平台,尤其是Python本地测试工具,告别强大。代码不支持Svn,Git版本控制。
2.SAE支持PHP,Java,Python,作为一个PHP程序员是爱之,恨之。但是应用建立时要与语言绑定,不支持切换。支持MySQL数据库。没有本地测试平台,要在服务器上测试,不过你可以新建一个测试版本,用来测试。支持Svn版本控制。
3.BAE支持PHP,Java,Python。应用与语言绑定不能修改。支持MySQL数据库。没有本地测试平台。支持Svn,Git版本控制。能与百度强大的LBS服务绑定,相信能吸引好多开发者。
参考推荐:
2013 中国15大云平台
AWS、Google、Apple云端宕机背后的故事