大部分提供软件服务的IT企业内都有自己的基础平台,企业期望通过这个平台能够逐渐积累自己的研发能力,从而达到降低研发成本,快速响应业务需求,甚至以IT来驱动业务创新的目的。另一方面,随着云计算,移动互联和大数据时代的来临,对基础平台也带来了新的需求和挑战。

      从功能上来说,这个平台不仅要求是一个快速开发平台,同时它也必须满足运维的需求。快速开发平台的需求至少应该包括:

>  现代化的基础框架:该框架不仅满足传统软件的开发需求,同时也要满足云计算,移动互联和大数据应用的需求,例如弹性计算的需求,动态部署的需求,多租户的需求,自助服务的需求…等。好的基础框架不管是开发传统应用,还是开发现代化的应用,对开发者而言几乎没有区别;或者说,基于该基础框架开发的应用自动适应于云计算,移动互联和大数据环境。目前,基于组件的基础框架是一个比较合适的选择。

>  丰富的组件库和上层框架:包括基础组件:例如,网络,安全,日志,元数据,审计,事务…等底层组件;SOA组件:例如流程,消息,web容器,服务总线,IDP,UI框架…等;云计算组件:负载均衡器组件,度量和计费组件…;行业组件:例如政府行业的电子表单,流程组件…。企业通常并不需要从下到上搭建一个完整的组件栈,根据企业性质的不同,可以搭建和自身行业性质相关的组件库,例如对中间件公司来说,搭建底层的组件库比较重要,而对于ISV来说,SOA组件库可能更适合自己,同样,对于某个行业(例如制造行业)的IT部门来说,面向该行业的的组件库更适合自己。不同行业性质的企业之间可以形成上下游的供应关系,例如中间件公司可以给ISV提供SOA组件和开发框架,而ISV可以提供某些行业的行业组件和开发框架,从而构建一个完善的生态系统。企业在开发新的应用时,不再需要从头开始构建,而是从组件库中选择已有的组件进行组装即可,只有当需要的某个功能在现有的组件库中没有或不满足要求时,才会考虑新开发组件。新开发的组件稳定后,上传到组件库,随着组件库中积累的组件越来越丰富,后续当有新的业务需求时,新系统的开发过程变成一个简单的搭积木的过程,从而达到快速开发的要求。

>  方便的开发环境:包括开发工具,自动化构建环境。开发工具用于开发新的组件(或系统),或对现有组件库中的组件进行组装,形成新的组件(或系统),因此它必须要能够从组件库下载组件到本地。组件开发完成后,上传源码到代码库,构建环境将自动从代码库把代码拉下来进行构建,如果构建成功,将自动上传到组件库。

运维需求不仅要满足传统软件的运维,还要满足云计算/移动互联/大数据时代的运维需求,总的来说,包括以下几个部分的运维需求:

>  可管理性:可管理性一直是软件重要的组成部分,但长期以来并没有得到应有的重视。随着云计算,大数据应用的兴起,软件的可管理性已经不可回避。在这些应用中,运维的主体可能会发生变化,例如公有云环境下,一般由独立的运营商进行运维,由于运营商并不像软件开发商那样清楚软件的内部细节,因此这就要求软件具备很强的可管理性,能够对软件的内部状态进行有效的监控和管理。

>  方便的部署,配置,升级功能:在云计算和大数据环境下,软件的部署,配置,升级等问题变得很突出。想象一下:如果要部署一个具有几百个节点的hadoop集群,如果全部手工操作,那会怎样…?不仅费时费力,还容易出错,更要命的是需要经常修改节点配置或节点升级的时候…,带来的工作量几乎不可想象。事实上,很多公司正在提供hadoop的部署管理工具,但这些工具只是针对hadoop的,不具备通用性。

>  集群管理:从功能上来说,集群管理应该属于可管理性的需求范围内,之所以单独拿出来描述是因为在云计算和大数据环境下,集群管理的功能太重要了。集群管理包括业务数据的收集和度量,根据收集的数据制定集群策略,以及集群策略的动态调整…等功能,这些都需要在系统运行过程中动态完成。

>  故障诊断:需要有一套完善的机制来收集系统运行过程中发生的问题,并能够快速定位和修复。

>  其他:配置数据的备份和恢复,热部署,升级不中断业务,多版本的管理…等高级功能。

上面只是简单的列出了基础平台的一些常见需求,实际的情况要远比这些复杂,因此,对于这个平台的建设者而言,是一项非常艰巨的任务:这不仅考验平台的建设者们的技术,经验和智慧,同时也考验他们的想象力。但是,一旦建设完成,给企业带来的价值是巨大的,这意味着企业能够在很短的时间内就能构建出新的业务系统,意味着企业能够对软件的完整生命周期进行有效的管理,意味着企业与云计算,移动互联和大数据时代的无缝接入。

遗憾的是,目前大部分的框架或平台要么功能有限,只满足部分需求,要么太重量级,不适合在云计算和大数据环境下生存。笔者经过长期的研究,发现基于OSGi构建的基础平台能够很好的满足上述需求:

>  首先,OSGi的最初目的就是用于对终端设备进行管理的(关于OSGi在嵌入式终端上的典型案例就是宝马车的应用控制系统),近年来逐渐在企业应用领域发挥越来越重要的作用,例如现在几乎所有的应用服务器都宣称支持OSGi,最近比较火热的WSO2也是基于OSGi构建的。因此,基于OSGi构建的组件是可以跨企业应用领域和移动终端应用领域的;

>  其次,OSGi的动态性能够很好的适合云计算和大数据应用,例如动态部署和更新,动态配置,集中配置等特性;

>  再次,OSGi是一个轻量级的组件化框架,它提供的组件模型是目前最完善的,这能够极大的简化复杂系统的架构,并带来最大化的重用;

>  最后,目前最流行的开发工具非Eclipse莫属(Eclipse本身就是OSGi的一个典型案例),Eclipse的组件开发环境(PDE)已经提供了绝大部分的组件开发所需的工具,包括组件开发测试环境,产品定义,组件库的定义,自动化构建环境,以及一大堆可以直接拿来用的组件。另外,Eclipse提供的marketplace给了笔者很大的启发:其实企业应用领域也需要有appstore。

在这里只是对OSGi进行简单介绍,后续将会有更多关于OSGi和云计算相关的介绍,请大家关注。