云应用开发平台(PaaS)背景
2013-05-23 23:08:02
云应用开发现状
当前SAAS云应用的开发沿袭老式B/S开发模式
当前云计算时代已经到来,各种传统的B/S应用纷纷向云应用SAAS迁移,但是,云应用的开发方式上仍然使用老式B/S应用的开发方式进行开发,然后再部署成SAAS方式。开发工具和过程没有使用到任何与云相关的东西。当然谈不上基于云开发、基于云测试等。传统方式开发云应用带来很多的瓶颈:
(1) 云环境与实际的开发环境场景差异很大,很多异常在使用时才方式,无法测试。
(2) 云应用的部署几乎等同于手工方式,对于大型应用,将无法接受。
(3) 开发环境与云脱离,无法保证兼容性。
(4) 无法实现在线功能修改。
(5) 无法实现系统资源监控和调度。
(6) 无法在线部署、调试、监控。
(7) 应用多次迁移、多环境测试,开发周期长,开发效率低。
(8) 无法实现弹性计算,开发工具没有支持。
(9) 开发人员技术需求高,不但要掌握传统的开发,还要学习大量云应用相关知识。
(10) 安全性低,程序版本无法控制,多人部署,部署复杂,部署效率低下。
SAAS应用比其他WEB应用更复杂
SAAS应用一般基于互联网部署,适用人员和访问量不固定,超出了企业级应用的要求,往往是社会级,千万级甚至上亿的访问量。多数应用基本上没有人工培训的可能,对软件的使用体验和易用性要求极高。集群和负载均衡普遍使用,开发的难度较大。数据量大,对开发技术要求高。多租户的需求,对软件的总体设计和业务变更较大。所有这些都是PAAS平台需要应对的。
开放性的问题
多数平台是一个封闭体系,开发人员往往对其失去兴趣,从应用的适用性,体系的透明度,系统的扩展能力角度评估,使用开发平台是一件需要慎重的事情。开发平台的局限性决定了应用能走多远的问题。
领域建模和分层开发
大多数开发人员都懂领域建模设计和分层开发,但是市场上的开发平台没有从平台级来支持分层开发的软件。全部依靠ECLIPSE工具,根据SPRING等开源软件的规范进行开发。
当前主流的开发工具是ECLIPSE,大多数的开发平台基于ECLIPSE进行扩展开发而形成的,但是ECLIPSE不是一个PAAS工具,是一个客户端程序,无法完成PAAS的各种功能,也无法扩展成PAAS。业界正在期待一种基于云的ECLIPSE的出现。
当前市场上已经存在很多的PAAS平台,一类是以Google App Engine为代表的,围绕某个重要的大型业务应用,开发一个辅助的开发工具,对业务数据和功能的使用,扩展提供支持,比较局限于某项或某类业务。
另一类是独立的通用型云应用开发中间件,通过PAAS平台开发任何云应用软件。这种软件基本上是早期完全基于WEB的开发平台演变而来的,大多数平台功能较弱,并且开发平台与运行平台混为一谈,基本上只能算是应用的辅助扩展工具。
问题分析
PaaS平台需要具备以下几个基本能力:
(1) 云部署
云环境应用的部署与传统环境的部署方式不同,最大的不同是云环境实例多,配置和迁移工作量巨大,部署问题是PAAS平台首先要解决的问题。
(2) 多租户
云环境使用人员以租户方式提供,开发平台级别应该支持多租户,一套平台可以多个团队使用,相互隔离,互不影响。
(3) 具备承载所有应用开发的能力
云应用五花八门,PAAS平台不应只局限于开发某类应用。
(4) 负载均衡和集群
PAAS开发平台应该具备负载均衡和集群支持,确保大应用大并发业务的高可用。
(5) 资源监控
与云操作系统集成,可以监控、管理、操作资源池中的各种资源,管理数据库、应用服务器等。
还需要解决以下高级问题:
(1) 云开发、调试、测试
PAAS平台必须支持基于云开发、调试、测试。客户端只需要浏览器。
(2) 开放性问题
云开发平台必须有足够的开放性,不能因为PAAS平台的局限,而限制业务的功能,使得业务受到影响。
(3) 复杂业务开发效率
对于复杂业务的开发实现,多数平台不能带来效率的提升。复杂业务的开发效率问题是评估平台能力的一个重要指标。
(4) 运营能力
App Engine功能,以租户的方式,在平台上开发,并且在租户的云环境运行,统一验证,轻松扩展。开发方不需要投入任何软件、硬件,全部依托云进行运营。
北京思序软件有限公司长期专注于云应用开发平台的研发工作,为了适应复杂的云应用业务场景,开发了SIX移动云开发平台,开创性地实现了MVC分层配置开发,为应用开发带来了前所未有的开放,通过分层,彻底打破了开发中间件的封闭体系,为云应用开发提供了一个开放的开发工具。
关于SIX平台
当前领域驱动设计已经深入人心,软件开发的复用和分层已经成为了开发人员的基本技能。在软件开发过程中,开发人员的分层开发基本靠开发工具或开发工具衍生出来的辅助工具来实现,整个过程比较繁琐,涉及大量的代码。
SIX平台采用MVC分层配置的技术,进行应用的开发。每个应用模块的实现都分四层,开发人员根据业务需要进行个性设置,完成应用开发。每个应用模块的各层都是开放的,都可以以SOA方式发布成服务,成为一个共享的业务处理服务。开发人员在开发过程中,只需要根据通用的领域模型分层架构进行设置,没有任何学习成本。
层与层之间松耦合,只能在相邻两层之间进行调用,通过定义元数据或元数据类,规范了MVC层与层之间的传值规范。
采用分层的开放体系技术,应用开发能力得到了充分地拓展,每层都可以根据需要进行定制,可以开发任何复杂的业务应用。
没有采用任何传统的STRUTS、SPRING、HIBERATE、WEBWORK等框架,所有框架由自身控制,更灵活更高效。
以PAAS方式运行,提供多租户功能,开发人员以租户方式使用系统,可以多人安排在一个应用中,不同的应用之间相互隔离。通过开发平台直接开发运行平台上的业务应用,提供基于浏览器云端的云应用开发、调试、部署、监控,提供云应用的部署工具和资源管理工具。提供对资源的管理、数据源的管理和维护。
内置SAAS应用多租户引擎,为实现应用的数据隔离、安全访问提供了基础设施。
提供运行态的运行平台,各种应用在运行平台上运行。支持SAAS运营,开发平台开发完成后,直接部署在云环境,也可以在线直接更改SAAS应用的功能。
提供直接起停应用的功能,可以直接操作应用服务器,控制应用服务器的起停。