导读:笔者根据最近完成的一个项目,并帮助潜在客户比较Amazon EC2和Google App Engine,他将从三个角度来对比这两大云计算平台:技术、业务和未来发展趋势。

关键词:Amazon EC2 Google App Engine PaaS IaaS 可移植性

  最近一个潜在客户要求我们比较一下Amazon EC2和Google App Engine,正好我们刚刚在EC2和Google App Engine上完成了两个相对来说规模较大的项目,因此有必要做一下总结,我打算从三个角度来对比这两大云计算平台:技术、业务和未来发展趋势,本文是技术方面的对比,ok,准备好咖啡,我们开始吧!

  如果按平台类型来分,大家可能已经知道Google App Engine属于PaaS(平台即服务),而Amazon EC2属于IaaS(基础设施即服务),Amazon EC2给你一个安装了操作系统的“盒子”,你可以自己安装应用程序,也可以使用AMI(Amazon Machine Image),如果你想构建一个高度复杂的定制应用,Amazon EC2是不二之选,它允许你控制环境参数,底层操作系统,存储和网络需求,从技术上讲,它属于很底层的服务,你可以调整你需要的大部分东西。

  Google App Engine给你一个完整的平台,包括完整的SDK(以及Eclipse插件)和服务,你可以构建和部署你自己的应用程序,但你不能很好地控制操作系统,硬件和存储,诸如写文件系统,使用线程等操作都有限制,这样设计的目的是为了确保平台不会被某个应用程序绑架。

  简单起来就是:

  •   IaaS:原始硬件(处理器,网络和存储)
  •   PaaS:操作系统,系统软件,开发框架和虚拟机。

  下面从技术角度来比较一下这两个平台。

  1、提供的服务

  Google App Engine凭借丰富的服务击败Amazon EC2,Google App Engine提供的服务可以让开发人员快速进入开发状态。如Blobstore,Images,Mail,Memcache,Multitenancy,Oauth,Task Queues,URL Fetch,Users,XMPP这些服务在Amazon EC2上是需要自己安装的,为了便于比较,假设你已经为Memcache,Mail和多租户搭建好了基础设施,看看在EC2上你用了多长时间安装,我敢打赌你会超过一个小时,使用Google App Engine时,这些服务都是现成的,就象果盘中插好牙签的水果一样,你可以随时享用。

  2、管理

  Google App Engine再次胜出,因为一旦你的应用程序部署成功后,它几乎不需要管理,当你的应用程序负载变大时,你不需要向服务注入新的实例,Google App Engine可以自由扩大负载能力,新实例是实时剥离的。使用Amazon EC2时,你必须时刻跟踪通信流量(现在可以通过脚本自动跟踪了),新实例是在你的配置基础上剥离的,因此,如果我的峰值负载是2x+y,那么需要剥离2个以上的应用程序服务器。

  此外,使用Google App Engine升级应用程序服务器实例,安装新的负载均衡器时,没有管理开销,这一切都是自动执行的。

  3、抽象水平

  和上一条联系紧密的是抽象水平,Google App Engine抽象得比较好,你只需要关心你的应用程序和业务逻辑,不用担心底层基础设施的管理,正如Nick Johnson所说的那样,抽象水平应作为挑选云计算平台的一个基本原则,你需要做的是驾驶,不需要研究引擎盖以下的东西。在我看来,如果你的核心业务是货物运输,那么你应该买一辆卡车,它能高效地把你的货物从A地运输到B地,相反,你不应该考虑如何购买零部件自己组装一辆卡车。

  在软件开发领域,我们看到有Grails,RoR等框架,它们大受欢迎,是因为它们提供了高水平的抽象,如果你是一名泥瓦匠,它们就象是脚手架,你可以踩在它们上面干你的工作。

  4、可靠性

  从我个人的认识来讲,两者都很可靠,这一点从它们的用户数量就可以知道一二,用户可以时刻查看Google App Engine的状态,它是透明的,但从历史数据来看,Amazon EC2的正常运行时间比Google App Engine要好。

  5、可移植性

  从使用的底层操作系统和开发框架来看,Amazon EC2具有更好的可移植性,但也不要担心你会被Google App Engine给锁住,Google已经给出了迁移指南,指导你如何从转移出Google App Engine平台,当然包含你所有的数据在内。还有AppScale这样的程序可以帮助你将Google App Engine上的程序转移到Amazom EC2或其它云平台上,AppScale已经可以支持EC2,Eucalyptus,Xen和KVM。

  6、存储

  Google App Engine目前严重依赖于BigTable,开发人员需要从一个完全不同的角度来认识和学习它,特别是对于那些特熟悉关系数据库,被关系数据库理论束缚的人更需要洗洗脑,它提供了一个JPA&JDO访问接口,但它不支持所有的JPA&JDO功能,特别是关系部分,Google最近也高调宣布要让Google App Engine支持传统的SQL数据库。Amazon EC2已经支持SQL数据库,你可以使用Oracle,MySQL等你所熟悉的关系数据库。

  7、应用程序维护和升级

  对Google App Engine来说,应用程序维护和升级是件轻而易举的事,它为各种应用程序提供了一个详细的管理面板,包括日志查看器和数据查看器,一个程序可以有多个版本,当新版本经过测试,可以用于生产环境时,你可以将其设为默认的版本,而Amazon EC2就麻烦多了,因为它属于IaaS类型,所有维护和升级相关的事情你必须亲力亲为。

  8、开发限制

  使用Google App Engine时,你必须受到平台的限制,如果你的查询处于僵死状态,很难将其杀掉,此外,Google App Engine没有线程,提供的SDK也是受限的,有些类和功能被列入黑名单,因此不能被使用,也不能写文件系统等等。

  从表面上看这些限制是不可理喻的,但如果有朝一日你也要提供PaaS类型的平台时,你就能理解为什么Google要做这些限制了,这样才能确保运行在平台上的应用程序不会违反平台的规则,否则平台就可能被应用程序绑架,从而变得不可使用,平台上的其它应用程序就会收到牵连。

  即便有这些限制,90%的商业应用程序仍然可以在Google App Engine上正常运行,但对于那些要使用线程,或写文件系统的应用,最好还是选择Amazon EC2,因为它提供了所有底层访问和控制权。

  9、语言支持

  截至目前,Google App Engine支持Java和Python,但任何可以转换成字节码,可在JVM上执行的任何编程语言都可以在Google App Engine上运行,如果你喜欢其它编程语言,最好选择Amazon EC2,因为你可以在它的操作系统上面安装语言运行时环境,你拥有几乎完整的硬件和操作系统控制权,还有什么不能做的呢?在Amazon EC2上也托管了许多有趣的C#,.NET,ASP.NET MVC/Visual Studio项目,具有讽刺意味着的是,尽管还有Microsoft Azure,但许多以MS技术开发的项目却托管在Amazon EC2上。

  概括地说,Amazon EC2是进入云计算的早期尝试者,它利用互联网标准和开放平台创建了一个非常灵活的云计算平台,Google则利用了它在大型数据库方面的研究成果和它内部实现的一些技术创建了一个强大,但有更多限制的云计算环境。从核心技术来讲,Amazon EC2允许你扩展任何计算机实例到多个实例,因此你拥有每个虚拟盒子的完全控制权,Google App Engine从操作系统抽象而来,没有计算机实例的概念,如果你的Web应用程序不需要操作系统相关的功能,那么Google App Engine无疑是最好的选择,如果需要更好地控制你的系统环境,特别是操作系统相关的控制,那么最好选择Amazon EC2。

Google App Engine对抗Amazon EC2谁更牛?相关推荐

  1. 谁更胜一筹:技术解析 Google App Engine 和 Amazon EC2

    最近一个潜在客户要求我们比较一下 Amazon EC2 和 Google App Engine,正好我们刚刚在 EC2 和 Google App Engine 上完成了两个相对来说规模较大的项目,因此 ...

  2. Google App Engine技术架构之Google App Engine的简介

    通过前面两篇Google的核心技术和Google整体架构猜想,大家应该对Google强大的基础设施有一定的了解.本篇开始介绍构筑在这强大基础设施之上的Google App Engine. Google ...

  3. 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)

    quic最先是由google提出并完善的,18年google cloud支持了quic协议,我尝试在google上部署一套自己的应用,并使其支持quic协议 google的文档还是非常完善的,只是类似 ...

  4. 使用 Grails 开发 Google App Engine 应用

    Grails 作为 Web 框架的新生力量,已经被越来越多的开发人员所接受.而 Google App Engine(以下简称 GAE)作为云计算的平台,为应用提供了广阔的扩展空间.如何将二者擦出绚丽的 ...

  5. 探索Google App Engine背后的奥秘(3)- Google App Engine的简介

    通过前面两篇介绍,大家应该对Google强大的基础设施有一定的了解.本篇开始介绍构筑在这强大基础设施之上的Google App Engine. Google App Engine的介绍 由于发布S3和 ...

  6. 探索Google App Engine背后的奥秘

    探索Google App Engine背后的奥秘(1)--Google的核心技术 作者: ikewu | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明 网址: http://w ...

  7. 探索Google App Engine背后的奥秘(3)- Google App Engine的简介(转载)

    作者:  ikewu  | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明 网址:  http://www.dbanotes.net/arch/google_app_engine ...

  8. Google App Engine技术架构之Google App Engine架构

    上一篇我们介绍了Google App Engine的基本信息,本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍. 设计理念 App Engine在设计 ...

  9. 什么是 Google App Engine?

    无意在IBM开发者园地看到的Google App Engine的介绍. (我最初的理解)大致来讲Google App Engine一个在你还没有收益的时候免费的网络应用程序发布平台,是一个提供500M ...

最新文章

  1. 根据时间比较选择数据
  2. flowable工作流 流程变量_Activiti工作流的应用示例
  3. 调整cpu和内存查看子机配置
  4. SBO错误提示总帐科目缺失解决方法
  5. LINUX mount -t用法
  6. 【演讲实录】银行PB级别海量非结构化数据管理实践
  7. PannerNode
  8. 开课吧课堂之Super的第2种用法
  9. 香农编码的gui编码_香农编码
  10. FS2120双节锂电池保护 IC
  11. matlab中position用法_Matlab中的zeta函数用法
  12. 把用户证书安装成系统证书
  13. 研华PCI板卡开发(1)快速入门(1)
  14. python基础“猜单词游戏”代码
  15. Android系统移植与调试之-------)如何修改Android手机NFC模块,使黑屏时候能够使用NFC
  16. 计算机dvd打不开,我的电脑DVD打不开。怎么办?
  17. teradata ttu_【Teradata TTU】Windows TTU安装工具列表,
  18. c语言程序设计精髓 第三周练兵题
  19. vbs能调用的系统对象小结
  20. 世捷摇奖乐之我要中大奖

热门文章

  1. 用Python编写学生成绩计算系统
  2. 关于经营自媒体的几点思考
  3. 戮默科技:大数据平台开发运营 赋能企业智慧发展
  4. etl:BI项目中的ETL设计详解(数据抽取、清洗与转换)
  5. PHP+MySql的网络验证源码开源纯代码可二次开发
  6. android 闪屏页处理_一种Android闪屏页实现方法
  7. 应用宝苹果版_密特拉之星应用宝下载-密特拉之星应用宝版本1.0.4 腾讯版
  8. 渗透测试神器-CobaltStrike
  9. 解决adb devices无法识别到手机问题
  10. 鲁大师6月新机性能榜:华为频推4G新机求生?