`

Java开发者PaaS指南

 
阅读更多
转自:http://blog.csdn.net/zhoujianghua_2008/article/details/7472901
PaaS(Platform-as-a-Service)是云服务的一种,服务提供商不仅提供按需索取的硬件和操作系统服务,还提供了应用程序平台和解决方案栈。对开发者而言,PaaS极大程度上减少了IT部署的开销和痛苦,按需为应用程序提供资源,让其更易伸缩。
                
               JVM、应用服务器和部署包(例如,WAR和EAR)为Java应用程序提供了天然的隔离,允许不同开发者在同一套基础设施中部署应用程序,因此Java平台十分适合PaaS。但是,过去几年里,大多数PaaS产品都围绕着Ruby和Python这样的平台,当时Google App Engine是唯一为Java开发者提供PaaS服务的。幸运的是,现在的情况已经大为改善了。
差不多从去年开始,多家商业服务商进入了Java PaaS领域。这一举动很有意义,因为Java开发者差不多有1000万之多,也许是世界上最大的开发者群体之一。本文中,我们将从开发者的角度来比较这些服务提供商。特别要说明一下,具体比较以下4个方面:
  • 对技术平台和技术栈的支持。
  • 对开发者生产力和开发过程的支持。
  • 性能和可伸缩性。
  • 价格和其他商业考量。

文中我们会比较以下Java PaaS产品(按字母排序)。

  • Amazon Elastic Beanstalk是Amazon构建于EC2云上的Java PaaS产品。其中提供了运行于EC2上的受管Tomcat实例,带有负载均衡器,还可按需提供伸缩能力。Amazon Elastic Beanstalk集成了Amazon Web Services的其他服务,能访问受管关系型数据库(RDS)、大数据存储(SimpleDB)、消息队列、电子邮件和其他服务。
  • CloudBees 是一家风投的创业公司,成员由JBoss和Sun的前雇员组成,最近在两轮融资中共募得1400万美元。CloudBees也许是个新名字,不过它在这个领域中的影响力正在不断扩大,为Java PaaS带来了多项独特的特性,尤其是持续集成——一个完整的云端开发/部署周期管理。此外,和Heroku一样,它还包含一个第三方插件和服务的市场。
  • Cloud Foundry 是VMware发起的一个开源产品。VMware软件驱动着虚拟化数据中心,这是大多数PaaS产品的基础。VMware还是Spring Framework的拥有者,它是在企业Java中非常流行的一个平台栈。Cloud Foundry的一个独一无二的特性是它根本无需成为受托管的PaaS,你可以下载其代码,自己托管PaaS!这样一来,它既是一个托管平台,也是一个受托管PaaS服务。
  • Google App Engine for Java 也许是市面上问世时间最长(也是最成熟)的Java PaaS产品。它的目标是提供线性伸缩性,而且不担心对Java平台本身做出巨大变化。
  • Heroku for Java 是PaaS大厂Heroku最近才推出的产品,Heroku在Ruby社区颇受欢迎。
  • Red Hat OpenShift 是Red Hat试水PaaS的实验性产品。Red Hat的JBoss Application Server (AS)是最流行的Java应用服务器之一,OpenShift服务提供了全面的JBoss AS支持。

支持的技术平台和技术栈Java PaaS提供商最重要的属性之一就是它所支持的技术平台和技术栈。总而言之,技术平台是Java PaaS区别于其他PaaS产品的地方。在Java平台的长期进化中,涌现了很多颇有竞争力的技术栈。对于Java PaaS厂商而言,我相信尽可能多地支持不同技术栈是十分重要的。
这方面OpenShift和CloudBees对技术的支持面最广,从简单的Servlet容器(一般是Tomcat)到完整的Java EE 6 Web Profile(JBoss AS 7)都有支持。Java PaaS先驱,Google App Engine,在标准支持方面与后来者的差距最大。Google App Engine不支持完整的Java SE平台,因此对很多流行框架的支持都很差。它还要求用户使用Google App Engine自己的网络和持久化API,而不是支持公开标准,这让应用程序很难迁移。类似的,Heroku for Java要求应用程序围绕它自己的Jetty实例做封装,打破了传统Java EE应用程序的部署模型。
Cloud Foundry项目支持Tomcat容器,但它的应用程序开发和部署针对Spring Framework做了大量优化,创建了一个半外置的依赖。因为VMware拥有Spring Framework,所以Cloud Foundry很适合基于Spring的应用程序。此外,它还支持使用RabbitMQ 的消息队列,这是基于 AMQP 标准的。但它对其他Java框架(例如Java EE)的支持很弱。

              Amazon Beanstalk
            
            CloudBees
            
            Cloud Foundry
            
            Google App Engine
            
            Heroku for Java
            
            OpenShift
            
            Tomcat
            
            是
            
            是
            
            是
            
            否
            
            否
            
            是
            
            Java SE
            
            是
            
            是
            
            是
            
            否
            
            是
            
            是
            
            Java EE
            
            否
            
            是
            
            否
            
            否
            
            否
            
            是
            
            支持标准 Java库
            
            是
            
            是
            
            是
            
            否
            
            是
            
            是
            
            文件系统访问
            
            是
            
            是
            
            是
            
            否
            
            是
            
            是
            
            线程访问
            
            是
            
            是
            
            是
            
            否
            
            是
            
            是
            
            对外网络连接
            
            是
            
            是
            
            是
            
            受限
            
            是
            
            是
            
            MySQL
            
            RDS
            
            是
            
            是
            
            付费方案
            
            是
            
            是
            
            商业关系型数据库
            
            RDS
            
            外置
            
            外置
            
            否
            
            外置
            
            外置
            
            Big Data支持
            
            SimpleDB
            
            外置
            
            外置
            
            BigTable
            
            外置
            
            外置
            
            部署时无需特殊框架
            
            是
            
            是
            
            否
            
            否
            
            是
            
            是
            
            方便迁移现有应用
            
            是
            
            是
            
            否
            
            否
            
            否
            
            是
            
            应用可移植性
            
            高
            
            高
            
            中
            
            低
            
            低
            
            高
            
            可用于生产环境
            
            是
            
            是
            
            Beta阶段
            
            是
            
            Beta阶段
            
            Beta阶段
            

对开发者生产力和开发过程的支持PaaS的关键价值之一,是让应用程序开发者的生活更简单,因为它消除了应用程序和资源管理的开销。所以说,对开发者友好,有工具集成是我们的一个重要考量点。
在这方面CloudBees无疑是赢家。它不仅是一个PaaS运行时环境,还是一个完整的构建和测试环境。开发者可以利用Jenkins服务让CloudBees自动并持续地签出、构建、测试并报告代码库中的代码。这个持续集成过程已经被运用于多个大型团队,作为他们软件开发过程的重要环节。但是,构建服务器管理对QA团队而言是一项费时费力的工作。CloudBees替QA团队承担了这份痛苦,让这一过程对开发者更加透明。最近,Red Hat OpenShift通过支持Maven和Jekins集成,在这个领域里慢慢追上CloudBees了。
Amazon Beanstalk、OpenShift和Google App Engine都提供了开发工具、SDK和IDE插件,与其他市面上的基于Java的工具保持一致。
相比Java开发者,Cloud Foundry和Heroku for Java提供了更适合Ruby开发者的工具。试用了这些工具后,我怀疑很多Java开发者可能要花一些时间来适应其中的惯例和术语。另外,Cloud Foundry目前还缺乏文档,举个例子,它的很多文档还是视频教程形式的。虽然视频教程很容易让开发者上手,但在部署重要应用或希望了解视频场景之外的内容时,这些内容显然缺乏深度。尽管Cloud Foundry平台在最近几年里经历了重大变更,但官方入门指南文档的日期还停留在2007年。目前已经有了更多的文档——比如 这篇 ,但它们不该这么难找。
另一个重要的问题,Cloud Foundry允许开发者配置自己的云环境,部署Micro Cloud可比仅仅安装一套SDK麻烦多了。这也是一个障碍,让很多开发者对Cloud Foundry望而却步。

              Amazon Beanstalk
            
            CloudBees
            
            Cloud Foundry
            
            Google App Engine
            
            Heroku for Java
            
            OpenShift
            
            IDE工具
            
            是
            
            是
            
            是
            
            是
            
            否
            
            是
            
            命令行工具
            
            是
            
            是
            
            是
            
            是
            
            是
            
            是
            
            基于Web的控制台
            
            是
            
            是
            
            否
            
            是
            
            否
            
            是
            
            开发机上进行测试
            
            简单
            
            简单
            
            困难
            
            困难
            
            是
            
            简单
            
            构件时无非标准依赖
            
            是
            
            是
            
            否
            
            否
            
            否
            
            是
            
            源码控制集成
            
            否
            
            是
            
            是
            
            否
            
            否
            
            部分
            
            集成构建
            
            否
            
            是
            
            否
            
            否
            
            否
            
            是
            
            集成测试
            
            否
            
            是
            
            否
            
            否
            
            否
            
            否
            
            通过Web访问日志
            
            否
            
            是
            
            是
            
            是
            
            是
            
            是
            
            第三方开发者/测试服务
            
            否
            
            是
            
            否
            
            否
            
            否
            
            否
            
            API访问
            
            是
            
            是
            
            否
            
            否
            
            是
            
            否
            
            文档
            
            好
            
            好
            
            差
            
            好
            
            好
            
            好
            

性能和可伸缩性PaaS最重要的特性之一是平台自动伸缩的能力,就是基于实时流量需求增加或减少服务器容量。这要求平台提供商在众多服务器之间对请求做负载均衡,监控各台服务器的负载,适时启动新服务器。
所有PaaS提供商都在一定程度上支持自动伸缩。但自动扩展远比看上去困难。对入门用户而言,Java EE应用程序必须被配置为访问中心化外部数据库,而不是访问部署在同一台服务器上的数据库。所有PaaS提供商的编程范式和工具都要强制开发者遵循这种方式。
更大的问题是HTTP会话。在Java应用服务器上,HTTP会话的会话状态默认是在内存里管理的。要构建能在不同服务器之间负载均衡的应用程序,开发者必须使用以下的某个方法:

  • 配置负载均衡器支持“粘性会话”(sticky session),负载均衡器会检查所有流入请求的会话ID,总是把同一会话的请求发给相同的服务器。这是最简单的方法,不过也有自己的问题:负载均衡器需要完成更多的工作,久而久之负载分发会变得不再均衡,而且在负载下降时,很难撤下扩上去的基础设施,因为每台服务器都有自己的会话。出于这些原因,很少有PaaS提供商支持这一方法。
  • 为内存中的HTTP会话配置一个共享的缓存。如此一来,每时每刻所有服务器都能在内存里拥有全部HTTP会话。但是,在集群中复制内存会话这项任务既耗费带宽,又消耗计算资源。它要求应用程序开发者配置共享缓存和复制策略。
  • 还可以配置应用程序,将所有HTTP会话持久化到外部关系型数据库中。

上述所有的PaaS平台中,Google App Engine对这一问题的处理是最好的。它在架构上就将单一服务器的概念抽象了出来,会自动在不同的服务器上创建数据存储,并默认将HTTP会话保存到数据存储中,这一过程对开发者是透明的。但是,Google App Engine的问题是原生的性能太差,一个Web请求要花1至3秒才能完成一次对数据库的访问。
Heroku for Java的每个服务器实例都封装了一个自定义的Jetty实例,因此它也提供了跨服务器实例自动共享会话的能力。然而,Heroku并不提供透明的自动伸缩,你需要观察仪表盘,适时为应用添加资源。
剩余的标准Java PaaS产品都强制要求开发者在专门的数据库服务器上创建数据表,这也是部署过程的一部分。对于HTTP会话,Cloud Foundry在负载均衡器中使用了粘性会话。正如上文讨论的那样,这种做法为开发者带来了便利,也有一些严重的问题。其他PaaS产品虽然没有明说,但都把会话管理的工作留给了应用程序开发者。

              Amazon Beanstalk
            
            CloudBees
            
            Cloud Foundry
            
            Google App Engine
            
            Heroku for Java
            
            OpenShift
            
            内建负载均衡器
            
            是
            
            是
            
            是
            
            是
            
            是
            
            是
            
            负载均衡器自定义域名
            
            是
            
            是
            
            否
            
            Google Apps
            
            是
            
            是
            
            自动伸缩应用服务器
            
            是
            
            是
            
            计划支持
            
            是
            
            否
            
            是
            
            自动伸缩数据库
            
            否
            
            否
            
            否
            
            是
            
            否
            
            否
            
            用户定义性能标准
            
            是
            
            是
            
            计划支持
            
            否
            
            否
            
            是
            
            基于Web的监控仪表盘
            
            是
            
            是
            
            计划支持
            
            是
            
            是
            
            是
            
            集群HTTP会话
            
            手工
            
            手工
            
            手工
            
            自动
            
            自动
            
            手工
            

价格及其他商业考量对开发者而言,PaaS产品的价格是十分重要的。大多数服务提供商都有免费服务供开发者试用,这些免费服务对较小的Java Web站点来说就是很好的选择。
但是,正如Google App Engine最近的涨价风波所反映的那样,大型Web应用程序使用PaaS的成本还是很高的。
另一个要考虑的重要因素是支持。Google App Engine和Amazon Web Services在支持方面表现糟糕。开发者只能自己在论坛上寻找答案。稍小的专注于Java的提供商提供了更好的技术支持,在公共论坛上亦是如此。在我看来CloudBees提供的支持最为出色,很好地结合了付费问题单的支持和支持人员间的Java专业技术秘诀。

              Amazon Beanstalk
            
            CloudBees
            
            Cloud Foundry
            
            Google App Engine
            
            Heroku for Java
            
            OpenShift
            
            是否有免费服务
            
            是
            
            是
            
            N/A
            
            是
            
            是
            
            免费
            
            低流量入门级Web应用成本
            
            高
            
            免费
            
            免费
            
            免费
            
            免费
            
            免费
            
            跨云提供商
            
            否
            
            否
            
            计划支持
            
            否
            
            否
            
            计划支持
            
            私有云
            
            否
            
            Beta阶段(OpenStack或vSphere)
            
            是
            
            否
            
            否
            
            计划支持
            
            支持
            
            论坛
            
            电子邮件和电话
            
            论坛 / Web支持问题单
            
            论坛
            
            电子邮件和电话
            
            论坛
            
            支持质量
            
            差
            
            好
            
            好
            
            差
            
            一般
            
            好
            

下一步文中我们讨论了Java PaaS领域的6个知名厂商,当然,现在还有一些稍小的或不那么有名的提供商,比如:

  • Jelastic:它支持很多应用服务器和数据库的组合,包括MySQL数据库的多个变种和NoSQL数据库。
  • WSO2 StratosLive:它是构建于WSO2应用服务器上的PaaS产品,WSO2是一款符合Java EE规范的应用服务器。
  • CumuLogic:它提供的Java 应用服务PaaS可以运行于很多私有云和公有云解决方案上,包含CloudStack、 OpenStack和Eucalyptus。

我们会密切注意这些小厂商,因为它们很轻松地就能成长起来挑战大厂商的市场份额和关注度。
Java PaaS在过去的12个月里经历了很多,各种产品仍在快速发展,这对那些寻找低价、可伸缩、甚至是免费托管解决方案的Java开发者来说是个天大的好消息。对Java EE开发者而言,我相信CloudBes和OpenShift是目前市面上最好的产品,考虑到OpenShift仍处在Beta阶段,所以CloudBees成为了这场比赛的赢家。如果你愿意尝试一下Java专业户以外的选择,Heroku for Java和Cloud Foundry(Beta)是老牌Google App Engine的有力竞争对手

分享到:
评论

相关推荐

    java开发者PaaS指南.docx

    java开发者PaaS指南.docx

    上海电信PAAS应用开发培训指南20111109-0900

    本手册对上海电信PaaS云应用开发进行详细说明;本手册适合于指导新开发者开发PaaS云应用。

    PaaS升级指南.pdf

    PaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdfPaaS升级指南.pdf

    paascloud配套数据库脚本 paascloud_tpc

    (paascloud_tpc) paascloud配套数据库脚本 和源码匹配,绝对能运行 paascloud_uac copy.sql paascloud_mdc copy.sql paascloud_omc copy.sql paascloud_opc copy.sql paascloud_tpc copy.sql

    paascloud配套数据库脚本和三方jar

    后端项目:https://github.com/paascloud/paascloud-master https://gitee.com/passcloud/paascloud-master 登录入口:https://github.com/paascloud/paascloud-login-web ...

    paascloud配套数据库脚本 paascloud_opc

    (paascloud_opc) paascloud配套数据库脚本 和源码匹配,绝对能运行 paascloud_uac copy.sql paascloud_mdc copy.sql paascloud_omc copy.sql paascloud_opc copy.sql paascloud_tpc copy.sql

    paascloud配套数据库 paascloud_uac

    (paascloud_uac) paascloud配套数据库脚本 和源码匹配,绝对能运行 paascloud_uac copy.sql paascloud_mdc copy.sql paascloud_omc copy.sql paascloud_opc copy.sql paascloud_tpc copy.sql

    蓝鲸智云PaaS平台,让开发者可以方便快捷地创建、开发、部署和管理SaaS应用

    蓝鲸智云PaaS平台社区版(BlueKing PaaS Community Edition),它提供了应用引擎、前后台开发框架、API网关、调度引擎、统一登录、公共组件等模块,帮助用户快速、低成本、免运维地构建支撑工具和运营系统(统称为SaaS...

    bk-PaaS蓝鲸智云PaaS平台.zip

    蓝鲸智云PaaS平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理SaaS应用。本次开源的是蓝鲸智云PaaS平台社区版(BlueKing PaaS Community Edition),它提供了应用引擎、前后台开发框架、API...

    蓝鲸智云PaaS平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理SaaS应用

    蓝鲸智云PaaS平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理SaaS应用。本次开源的是蓝鲸智云PaaS平台社区版(BlueKing PaaS Community Edition),它提供了应用引擎、前后台开发框架、API...

    paascloud配套数据库脚本 paascloud_omc copy.sql

    (paascloud_omc) paascloud配套数据库脚本 和源码匹配,绝对能运行 paascloud_uac copy.sql paascloud_mdc copy.sql paascloud_omc copy.sql paascloud_opc copy.sql paascloud_tpc copy.sql

    PaaS通用校园办公云平台的设计与实现

    该课程是一个paas平台搭建的课程,paas是云计算三层概念中的第二层,提出了平台及服务,向客户提供开发平台,即使客户不懂任何的编程知识,也一样可以根据自己的需求来定制软件模块。在课程中,引入了工作流中间件和...

    paascloud配套数据库脚本 paascloud_mdc copy.sql

    (paascloud_mdc) paascloud配套数据库脚本 和源码匹配,绝对能运行 paascloud_uac copy.sql paascloud_mdc copy.sql paascloud_omc copy.sql paascloud_opc copy.sql paascloud_tpc copy.sql

    9个重量级的云计算(PaaS)平台

    随着云计算技术的发展,PaaS(平台即服务)越来越受到开发者的青睐,PaaS供应商也如雨后春笋般出现。 所谓PaaS实际上是指将软件研发的平台作为一种服务,并提供给用户。用户或者企业基于PaaS平台可以快速开发自己所...

    开源PaaS技术手册

    在一个开源项目中,如果有一件事让志愿开发者讨厌,这件辛苦的任务就是:安装、维护、任何对于写代码造成分心的事情,那么如何缓解呢?平台即服务(PaaS)的开源选择同样也很让人头痛。下面我们来看看如何选择合适的...

    如何基于K8S打造轻量级PaaS平台

    到PaaS这一层面,大家对PaaS的理解可能会有很多的差异,比如说互联网基于它的API能力开放的应用开发框架理解为PaaS,还有像运营商开放的能力可以是定为PaaS,开发环境也是PaaS。不管是哪一个方向,大家在PaaS通用上...

Global site tag (gtag.js) - Google Analytics