曹娜 崔文茂 于子雅
摘要:该文在对目前国内大多数软件研发类企业开发测试环境构建现状分析的基础上,介绍了云计算技术有关概念,提出了基于云计算的企业开发测试平台的体系结构,说明了各层次的构成要素和工作原理,最后结合某企业的应用实例,阐述了其应用效果。
关键词:开发测试平台;云计算;虚拟化;Openstack;Docker
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)15-0145-02
在信息技术革命的推动下,软件研发类企业蓬勃发展,IT建设规模不断扩张,但同时该类企业也面临着行业竞争激烈、更新换代迅速的局面。在当前竞争态势下,如何能在降低研发成本的同时具备敏捷高效的研发能力成为提升企业核心竞争力的关键,而研发能力的形成离不开开发测试环境的支撑。本文提出引入逐渐成熟的云计算相关技术来构建灵活、集约的开发测试云平台的思路和方法。
1 现状分析
国内大多数软件研发类企业一般采用传统的“一项目一环境”的开发测试环境构建模式,为不同的研制项目搭建独立的环境。此种构建模式的优点在于环境是专门为项目建立,针对性强,独立享有,构建单项目环境的成本相对较低,在项目任务不多的情况下,采用该模式还比较适合,但随着业务的增长,项目不断增多,这种模式的不足之处逐渐显现。
一是资源独享、投资重复,利用率低。以项目为单位申请并长期独占设备、场地等资源,不利于资源共享,也造成设备的重复投资以及电力等能源的严重浪费。
二是资源分散、运维靠人,管理水平低。为保障环境的正常运行,需要对每个项目环境配备运维人员,无法统一进行系统监控、资源统计,维护工作量大,管理难度大。
三是手工作业、时间周期长,工作效率低。开发测试环境的构建一般经过场地调配、设备筹集架设、网络敷设、系统以及工具软件安装配置等过程,一般需1到数周的时间,耗费了大量的时间和人力、物力、财力,降低了研发工作效率。
四是环境保留成本高、恢复难度大,一致率低。一旦项目完成,原有环境设备很难空置保留。若要重新恢复,相当于重新搭建,工作繁复,而且数据、参数配置等难以一致复原。
显然,传统的开发测试环境的构建模式已不符合企业高速发展的需要,亟需利用新技术进行变革。经过论证分析,逐步落地的云计算是应对并解决当前问题的有效方法,其特性可以帮助整合现有资源,提升利用率、降低成本、提高效率、提升管理水平,打造核心竞争力,实现企业跨越式发展。
2 运用云计算构建开发测试平台
2.1 云计算概述
云计算是网格计算、并行计算、分布式计算、效用计算、网络存储、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物,涉及多种关键技术,其中,虚拟化技术可实现计算、存储、网络、操作系统等资源的统一抽象,是企业开发测试平台构建中不可缺少的关键技术。
云计算具有五大关键特性,分别为:(1)按需自助服务;(2)泛在的网络访问方式;(3)动态的资源池;(4)快速可伸缩性;(5)可计量的服务。这些特性和开发测试平台所需的按需分配、随时访问、动态调度、弹性扩充、自动部署的要求非常符合。
云计算提供三类服务模式,分别为:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。其中,IaaS是最基础的服务模式,将计算、存储以及网络等资源封装为服务提供给用户,并可根据需求动态分配;PaaS是提供应用程序的运行环境并负责资源的动态扩展和容错管理,用户可以在此基础上进行程序开发;SaaS将运行在云基础设施上的应用程序作为服务提供给用户,用户可以根据需要对功能模块进行组合。开发测试环境主要是计算、存储、网络资源以及应用程序运行环境的组合,比较适合采用IaaS和PaaS的服务模式。IaaS提供的服务偏底层,但使用也更灵活,用户可以掌控操作系统以及应用程序的安装和配置。PaaS可提供基础的开发环境,开发人员不需关注底层的硬件环境以及操作系统,降低了程序开发的复杂度和开发周期。
2.2 基于云计算的开发测试平台体系架构
在对软件研发类企业开发环境构建现状分析的基础上,以云计算关键技术为支撑,构建开发测试平台体系架构,完整体系架构如图1所示。这是一种面向服务的层次化体系结构。其中,物理资源层、虚拟资源层、资源调度层、资源服务层是体系架构的核心。通过物理资源层、虚拟资源层以及资源调度层的组合,可以实现IaaS服务模式,在此基础上加上资源服务层就可提供PaaS服务。
2.2.1 物理资源层
物理资源层是底层基础,囊括了构成开发测试平台所需的各类硬件基础设施,主要包括计算、存储和网络等物理资源,其中,根据实际需求,计算资源用于提供x86、Power、安腾等多种技术架构混合的计算资源支撑;存储资源由各类存储设备及系统构成,提供文件、块、对象等多种类型存储资源支撑。网络资源主要由交换机、路由器、防火墙以及负载均衡等网络设备构成,实现用户端到开发测试平台的访问控制和访问连接。
2.2.2 虚拟资源层
虚拟资源层通过计算虚拟化、存储虚拟化和网络虚拟化等一系列的虚拟化手段,将物理资源层的硬件资源虚拟化,构建完整的、可调配的虚拟资源池,在网络连通的基础上用户可以远程访问虚拟资源。其中计算虚拟化最为成熟,可以让一台服务器变成多台互相隔离的虚拟服务器,让CPU、内存、磁盘、I/O等变成可以动态管理的“资源池”,从而提高资源利用率。典型产品有闭源的Vmware的ESX和Microsoft Hyper-V以及开源的KVM和XEN。存储虚拟化和网络虚拟化目前于发展阶段,各厂商有各自的理解和技术实践。
2.2.3 资源调度层
资源调度层主要由可集成多种物理资源和虚拟资源接入适配器的资源调度管理系统构成。根据不同的需求和负载情况对物理资源和虚拟资源进行智能调度和自动化部署,实现资源管理、调配、回收等全过程管理,并达到系统各种资源的负载均衡。通过自动化手段,提高对资源的整体管理和调度能力,保证了平台的高可用性和良好的用户体验。目前比较热门的有开源的Openstack云管理平台,部署后可以提供完整的IaaS服务,主要构件有Nova、Swift、Cinder、Glance、Neutorn、Keystone、Horizon等,同时提供公共应用接口API,业界主要厂商均支持与其集成对接。
2.2.4 资源服务层
资源服务层可直接面向开发者服务,为开发者直接生成所需编程语言构成的开发测试环境。目前比较流行的是容器技术,典型的有开源项目Docker,Docker 是一个基于LXC的容器引擎,利用轻量级虚拟化技术进行资源隔离,开发者可以将应用程序、依赖的运行库文件打包并移植到一个新的容器中,然后发布到任何系统为Linux的机器上。Docker运行启动快且资源开销小,向PaaS 提供了基础的资源隔离和标准化打包部署能力,因此利用Docker作为该层的构建较为高效简单。
2.2.5 统一管理层
统一管理层承担了提供整个IT物理资源和虚拟资源的全面有效管理、跟踪和控制,为日常运行维护提供准确的信息,并提供统一的资源监控、管理和调度,做到快速发现故障、自动部署、按需调度并提供研发资源性能、资源使用的统计分析、报表、汇总等方面的数据分析功能。
2.2.6 安全防护层
安全防护层用于保护企业信息的安全,确保开发测试平台安全稳定运行,主要由一系列安全防护产品或系统构成。其中备份存储系统和容灾系统分别提供数据备份和系统容灾能力,确保数据安全;防病毒系统可以在虚拟化层进行病毒防护,随时监控和查杀病毒和恶意代码;身份认证和访问控制可以实现不同权限用户的访问控制,避免服务被非授权访问;准入控制可以保证只有通过认证的合法用户才可以正常访问平台资源;安全审计可以审计记录用户在网络上的访问行为;介质控制用来严格控制各种端口和外设的使用。
2.2.7 综合展示层
综合展示层包括用户门户和管理者门户组成。用户门户提供给用户一个申请服务、审批服务、开通服务、监控服务等自助服务平台,用户可以按需定制服务,通过相应的审批流程完成服务的开通。管理者门户提供给运维、安全和监控管理平台,主要功能可包括用户管理、服务管理、配置管理、资源池管理、服务计量和展现、监控与报表、日志管理等。
3 应用实例
某企业以软件研发和系统集成为主,企业内部按照市场领域的不同,设置了22个事业部。由于历史原因,各事业部的研发工作长期处于“各自为战”的局面,几乎每个事业部的开发测试环境都自成体系,所采用的硬件、软件都不尽相同。市场状况和盈利能力的差异,造成了事业部开发测试条件的“贫富不均”,从而导致浪费人力物力、降低效率、提高成本。为了解决这一问题,该企业通过建立基于云计算的开发测试平台,整合各事业部的软硬件资源,集中于数据中心,按需分配、弹性共享。由于各事业部项目技术体制各不相同,该企业选择以IaaS服务为切入点构建该平台。
该平台主要通过虚拟化软件将物理的计算、存储、网络资源进行池化,由云管理平台实现资源的调度和管理。系统管理员在管理者门户上通过云管理平台功能,制作服务模板,对资源服务进行预定义并发布到开发者门户上;开发用户在开发者门户上通过选用模板申请资源,由云管理平台自动进行调度和分配后,推送给开发用户使用。如图2所示。
通过该平台,在部门层面各事业部只需按需申请和使用资源,无需关心硬件管理和维护,可以更专心于软件开发工作,开发效率明显提升;在企业层面实现了开发资源的共享,降低了成本,同时通过与资源使用情况挂钩的绩效考核机制,有效的激励了各事业部提升业绩的紧迫感和积极性;同时该平台的使用,还促进了各事业部开发成果的共享交流和相互复用,成为意外收益。
4 结束语
以云计算技术为基础的开发测试平台构建模式,实现了资源的集中管控,有利于快速搭建、部署、重构、恢复和使用所需开发测试环境,充分发挥了资源效能并实现了研发能力的提升。在实际应用时平台的部署方式应根据企业的规模、性质、投入能力等情况进行决策,如大中型企业,可以选择构建私有云平台,安全可控,但投入不菲;对于小微企业,则可以选择租用公有云服务构建自己的平台,灵活且投入较小,但不适宜涉及企业敏感信息。总而言之,云计算还处于高速发展阶段,我们不能定性的判断哪种形态的开发测试云平台的最好,只有选用最合适的才会对企业发展提供最大的帮助。
参考文献:
[1] 周洪波.云计算:技术、应用、标准和商业模式[M].北京:电子工业出版社,2011.
[2] 丁祥郭.基于云计算的消防通信指挥系统架构研究[J].计算机光盘软件与应用,2014.
[3] 张忠琳.基于openstack 云平台的docker 应用[J].软件,2014.