随着计算机单机性能的提升和IT行业竞争日益激烈,云计算走进入了我们的视野中。历史在不断的重演,但是每次却有不同之处。
云计算也是一样,在20世纪60-80年代计算机的价格和维护成本只有一些大型企业和政府机构才能负担得起。为了满足很多用户使用的需求,每一个用户通过单独的终端接入同一台大型机。进入80年代以后,客户机/服务器(client/server)技术的飞速发展,数据由单一的大型机分散到了很多服务器中,原来没有计算能力的接入终端变成了个人计算机。进入90年代后期,随着经济全球化和企业规模的扩大,信息分散管理的弊端越来越明显,运营成本迅速增加。信息集中化成了一种不可阻挡的趋势。云计算让我们又回到了新的历史起点。
本文介绍基于私有云计算架构的软件开发生命周期管理服务,涵盖了虚拟化的IT基础设施服务管理,中间件应用优管理和开发软件代码托管服务。如何通过对这三方面的管理策略提升服务水平是本文的核心内容。
云计算带来的软件生态环境的改变
云计算带动了很多行业的发展也产生了很多新的行业领域。比如虚拟化技术,数据存储技术和大数据(Big data)。这些变化带来了很多机会,同时也对目前的企业提出了严峻的考验。这要求企业的IT基础架构具有更大的弹性,并保证具有高可用性。
从外部环境来看,软件研发从早期的后台计算模式,客户机/服务器模式到,浏览器/服务器模式再到云计算时代。从面对百万客户机模式到数十亿移动设备。
从企业内部环境来看,从僵硬的基础架构到一个弹性云基础架构;结构化数据到大量非机构化数据;静态应用程序要动态服务;从被动安全策略到智能主动保护等。
云计算基础架构特点
IT架构高可管理性 资源池化,弹性服务;自由迁移,按需服务;
在传统的非云计算场景下,物理服务器通常只被单一租户的单一业务使用,所以单台服务器的利用率会比较低。随着业务的扩展,需要不断增加服务器的数量,这样会使得数据中心的规模越来越庞大。相反资源利用率低下造成资源重复购买和现有资源的浪费。在云计算的场景下,由于数据中心为大量而不是单一的业务单元或用户提供服务,所以业务量会极其庞大。靠不停地增加物理服务器对于成本和网络规模来说都难以接受。虚拟化技术使得一台物理服务器可以被虚拟成多台服务器来使用,从而利用了原本闲置的资源,提高了服务器的使用率,所以使用相对较少的物理服务器就能满足大量的业务需求。通常对于多核CPU的服务器来说,可以虚拟成每个CPU一个虚拟机来使用。当然虚拟化还要受到硬盘的每秒I/O数和内存的限制。
除了提高使用率外,虚拟化还使得服务器自由迁移变成可能。在传统的数据中心,进行服务器的迁移是一项非常浩大的工程。必须事先进行规划,需要谨慎计划割接时间,做好备份。服务器需要进行断线断电,搬移,重新上电上线,通常业务会中断,所以搬迁服务器是极少发生的。而使用了虚拟化技术以后,虚拟机的迁移不再涉及到物理上的搬迁。并且可以使用各种技术,例如渐进式内存复制等方法使得迁移平滑进行,保证了迁移时用户不感知,相关业务不中断,不受影响。
提升业务连续性虚拟化容灾备份降低维护成本
自由迁移为数据中心的容灾备份,节能环保,为网络优化提供了不可替代的便利。
云集算软件研发小故事
云计算带来了诸多便利,但是同时对于普通人来说又非常难理解,我们来讲一个云计算实际应用中的故事来让大家对云计算有一个形象的了解。
某公司的小王刚刚晋升为项目经理,负责一个新产品的开发工作。项目处于初始阶段,对于刚刚组建的团队的小王,如何建立一套新的软件产品研发环境感到很无助。不过当小王看到了一封公司内部云计算代码托管服务的推广邮件时眼前一亮。邮件的主要内容是只要简单的为项目成员申请对应权限的帐号,建立一个项目就可以开始开发工作了。
于是小王访问了邮件中的统一用户服务网站并提交一个建立项目和注册项目成员的请求,有趣的是当选择建立新项目请求类型时,在请求说明中显示出建立新项目的收费模式,以及服务的质量说明信息。
过了十几分钟小王和他的团队成员收到了RTC项目添加新成员的邀请函。内容是新项目的访问地址和用户认证信息。RTC 服务默认包括了需求管理系统,任务管理系统,代码管理工具,和测试用例管理系统。小王的团队很快就开始了开发工作。
过了一个月代发开发的比较顺利但是总是在集成的过程中出现错误,于是小王就把这个问题提交到了统一用户平服务网站中,很快得到了服务管理员的回复,并建议小王使用持续构建服务。在服务管理员的帮助下把构建过程输入到了Build Forge服务器中。并设定了定时构建的周期。之后再出现构建失败的情况就可以查看构建服务器提供的版本比较功能定位哪些文件的改动导致了构建失败了。
过来三个月,小王的产品作出了原型系统,销售反馈市场反映很好,但是有很多需要改进的部分。于是小王的团队开始快速扩张,新招聘的人员对RTC的开发环境很不熟悉。小王又找到服务管理员,这次小王对得到的答复同样很满意。原来针对开发平台有一个知识库系统,只要搜索“用户手册”就可以得到关于如何上传代码如何做构建的帮助。并且还有定期的培训活动。
过了半年,小王的团队人员从原来的十几个人扩充到100人,而且还有国外的同事加入。这时小王从每月一次的服务反馈报告中看到随着团队人员数量增加,性能下降的警告。小王心想近期又有一个重要的版本需要发布,如果升级开发环境会停机影响开发进度可就麻烦了。小王找到了服务管理员询问服务升级的影响。当得知服务架构是模块化的简单操作就可以实现服务升级,并不影响用户使用时小王很高兴。
又过了一年,在这一年中服务平台从未停机维护这也为小王的团队节省了不少时间。小王负责的产品顺利进入到了维护期,开发人员的数量逐渐减少,在小王收到的服务反馈报告中提到目前开发员数量不断下降,导致性能过剩,可以释放部分资源节省成本。小王回想起以前项目购买硬件自己搭建开发环境是多么艰难,可这一切随着云计算的到来一去不复返了。小王也自信的开始准备另外一个新产品的研发工作了。
通过上面的小故事,看起来云计算是那么的简单易用和按需配置,但是在云计算的背后有很多不被用户了解的知识和技术。如果想了解云计算是如何做到上面故事中讲到的种种便利,需要在软件服务,中间件管理和硬件架构中去寻找答案。
软件开发代码托管服务的业务驱动模式和需求
由上面的小故事引出了软件研发生命周期中针对代码托管服务的业务驱动模式。
针对业务需求把ITIL中的服务原型实例化,从而得出以下类型服务。
服务的可视化如图 3-4 所示。这种可视化方法有助于服务管理职能和流程之间更好的沟通和协调,它有助于服务提供商更准确地定义服务。
服务原型U1获取服务:释放,获得许可,提供
服务实例:快速建立开发环境,为用户建立对应的账户和访问许可,并以邮件形式通知客户。
服务原型U2服务管理:管理,运作,维护
服务实例:使用统一用户服务网站收集用户需求,对服务进行管理和维护。
服务原型U3服务治疗:修复,复原
服务实例:使用云计算架构和应用层冗余自动的修复服务,使服务达到24*7服务标准。
服务原型U4服务保管:存储,保护,监控
服务实例:对云计算基础架构,中间件和软件中的业务信息进行监控,获取服务的运行数据。
服务原型U5服务运作:运行,完成,记录
服务实例:在统一用户服务网站中,对每一个用户请求的运行和完成结果进行记录。
服务原型U6服务评估:分析,评估,审核
服务实例:使用监控信息对服务的运行进行分析和评估,对平台的安全性定期审核。
服务原型U7服务更改:修改,改变,传送
服务实例:通过云计算平台的按需分配特性修改使用使用的硬件和网络资源。中间件WAS集群动态配置负载能力。
服务原型U8创新服务:设计,开发,加工
服务实例:推出定制化客户开发工具集服务。
服务原型U9沟通服务:连接,集成
服务实例:在开发环境中为客户集成持续集成工具Build Forge和UrbanCode 产品uDeploy用以实现DevOps
以基础架构层虚拟机快速部署服务为例子详细介绍如何设计服务
ITIL中每一个服务的设计包括功能需求,资源和能力,服务管理控制工具,服务架构,服务流程,衡量服务指标。下面就以基础架构层的虚拟机快速部署服务为例详细介绍该服务。
虚拟机快速部署服务:
1.功能需求:
该服务原型为U1获取服务:释放,获得许可,提供。为基础架构层服务为上层服务提供基础,功能需求为,根据模块化服务器模板,快速部署虚拟化服务器并配置成为用户的开发环境
2.资源和能力:
依据基础架构承载能力提供足够多的虚拟主机。
3.服务架构:
参见2-1黄色部分,在云计算管理平台中使用网络资源,计算资源和存储资源快速部署用户开发环境。该服务由监控服务获取服务衡量指标并通过分析服务进行定期总结,并把改进建议提交给用户确认。
4.服务衡量指标:
该服务属于基础架构层,服务衡量指标同其他同层服务如下:
服务器可用性:虚拟机,存储设备正常运行保障,量化为年化在线时间比率。
网络性能保障:数据包丢失率,网络延迟,网络抖动保障。
负载均衡可用性:处理时延,吞吐率,访问并发保证。
异常通知保证:在发生基础设施异常(发生虚拟机迁移)时的通知时间。
支持响应时间:服务发生异常时,云服务提供排错支持的响应时间。
惩罚机制保障:不能按照SLA合约进行保障时的约定补偿。
上面详细介绍了虚拟机快速部署服务包括的内容,下面分别介绍每一层服务的服务架构,服务策略,使用工具和衡量指标。
一、软件服务架构
图2-1描述了实现云计算平台上的软件研发的核心服务,黄色表示基础设施服务部分,绿色表示平台服务部分,蓝色表示软件服务部分。最上面的服务质量保证贯穿所有服务领域,是所有服务的存在生命。
通过以上研究,总结出云计算开发平台的主要服务和服务水平参数。
按照不同的服务领域划分支持团队,这也是划分服务的目的所在:
基础设施维护团队成员掌握对硬件,虚拟化技术和的机房维护知识。
平台维护团队掌握对操作系统,中间件和安全合规知识。
软件维护团队掌握对软件研发生命周期管理,软件研发集成平台和软件服务管理知识。
在实现云计算开发平台服务的同时,不断总结客户请求中出现的问题,提升位知识并不断完善服务,来提高竞争优势
软件服务优化策略
1. 统一软件研发工具,测试和构建工具版本。
对于主要服务软件统一软件版本,这样会大大减少维护和迁移成本。
2. 允许用户自主选择工具集中的组件。
为客户提供自主的可选组件集合,在客户有需要的情况下提供定制化服务,提高用户回报率。定制软件服务是以模块化的虚拟机服务的基础上实现的。便于把大量相同的定制化服务加入到现有的统一软件服务中去。
3. 统一用户异常排错支持的服务平台。
使用统一平台追踪用户提出的服务请求和排错请求。用于提高支持人员工作效率,降低问题在多个团队中定位的沟通成本。
4. 提供研发软件平台出现问题的知识库系统,便于用户自助解决。
总结异常排错平台中的问题,提供统计知识库系统来提高问题解决速度并降低用户支持成本。其中的知识就是一种软件资产,可以大大提高服务水平或是用于培训用途。
5. 针对开发平台软件提供用户培训
定期举办平台提供软件的培训,从而减少用户操作失误并能减少用户支持成本。
6. 统一用户报警,分析报告平台
每月汇总针对用户的基础架构,平台服务和软件使用情况,使用统一平台对用户发放使用报告和成本统计。增加支持服务的透明度,增进支持团队和研发团队的联系。
软件服务介绍
1. 开发软件代码导入服务
把客户现有开发环境中的代码导入到云计算开发平台。这个服务是服务的入口。
2. 用户注册和权限申请服务
为用户提供统一的用户注册和用户管理平台,用户请求需要用户的经理和申请组件的负责人两层审批。并定期进行用户的合规性检查。按照软件产品的技术方向或业务功能将软件产品组件划分在不同的访问权限组中,只有具有改访问权限的人员才允许对该部分代码的操作。
3. 用户基础软件培训服务
定期针对新用户提供云计算开发平台软件的基本使用培训。对于新加入的开发人员提供开发平台的培训服务,这样会大大降低降低误操作和提高开发效率,同事也会提高支持人员的效率。
4. 针对开发平台中的软件提供不同开发模式的培训
对于用户的开发经理提供针对不同敏捷程度和可控性的开发模式的培训。对于不同规模的软件研发团队,对于软件研发的敏捷性和可控性是不相同的。为全球范围的分布式团队和本地开发团队提供基于最佳实践的不同的软件分支和集成策略,用来提高研发效率并且增加软件研发进度的可控性。
5. 持续集成服务
持续集成服务是针对传统型软件产品研发项目的一种尽快尽早发现集成问题的解决方案。通过使用持续集成工具Rational Buildforge,提高构建频率降低构建的人工依赖程度,提高构建成功率。
6. DevOps服务
针对敏捷性团队提供整个套的软件研发到运营维护的软件托管服务,尤其是针对云计算软件的研发,提供从软件代码研发,构建管理,部署测试环境,到部署云平台生产环境的所有环节的配置管理,并管理部署过程中的变更。
7. 用户服务请求和排错请求服务
提供统一的平台跟踪所有用户的服务请求和排错请求。根据请求等级规定响应时间。
8. 云计算开发平台软件的知识库系统服务
根据用户的请求和排错请求处理过程中出现的问题和用户使用云计算开发平台出现的问题,提供统一的知识库系统提供给用户自助服务,降低维护成本,的同时积累团队经验。这些知识同时可以作为服务人员的培训用途。
9. 软件扩容服务分析咨询服务
统一渠道定期发给客户使用情况和成本报告,以便用户更好的掌握研发成本控制。针对该报告提出性能瓶颈和安全建议。
软件服务保障定义
SLA(Server Level Agreement)
软件请求差错率:单位时间内服务请求发生异常的概率,量化位一年中出现差错次数。
软件稳定性:在规定的时间内某个用户正常使用服务且服务不失效的稳定性保障。
软件使用成本:包括基础架构使用成本,基础平台使用成本和用户软件使用成本。
支持响应时间:服务发生异常时,提供排错支持的响应时间。
惩罚机制保障:不能按照SLA合约进行保障时的约定补偿。
二、中间件及应用架构
图3-1描述了统一用户入口的WAS集群应用,和灵活扩展的模块化RTC应用架构。统一用户管理应用是与用户的统一交互接口。同时监控和数据分析应用为用户使用情况进行分析并提出指导建议。
平台服务的优化策略
1. 模块化架构
根据云计算快速部署的特性,制定模块化的扩容服务器模板,从而快速为客户快速提供新服务或对现有服务进行扩容。
2. 统一入口和认证方式
为了方便统一管理使用负载均衡技术实现所有用户的统一服务入口(即访问开发服务器相同地址),使用统一用户认证方式以便于用户管理。
3.根据不同业务特点定制使用模式,对于不同类型的客户有着不同的增长方式,根据这些特点为客户定制应用容量,达到充分利用资源的目的。
a. 对于用户体验环境可以建立一个所有用户通用的平台,这个平台的服务要求相对较低,用户不活跃。
b. 对于成熟型客户(成熟市场产品研发团队),提供容量相对较大,高可用性的平台。
c. 对于成长型客户(新兴产品研发团队),提供可弹性扩充容量的平台。
4. 平台监控和调优
为所有服务主机提供统一的监控工具平台。利用这些监控数据提出报警功能,使用业务分析工具,聚类分析研究客户模式。判断业务增长和服务特性敏感参数。从而提高用户满意度和优化使用资源。
应用管理服务介绍
1. 统一用户管理服务
使用统一认证方式进行用户认证,使用统一用户管理工具对用户进行管理,用户管理主要括以下功能:新用户申和权限申请,用户有效性检查,标记特权用户,用户访问权限有效性检查。用户管理的目的是让每一个用户有足够的权限,保证用户的每一次操作都是经过授权的。
2. 针对服务器OS和应用软件的升级和定期安全检测服务
针对不同操作系统和软件的安全补丁建议进行操作系统和应用软件升级。定期做服务器安全检测。
私有云的解决方案大大提高了安全性,目前云计算的主要问题,尤其是在软件研发过程中,最重要的问题就是安全性问题。目前互联网安全事件大多是未知原因引起的,这个问题让云计算的安全性作为用户的第一考量。
3. 监控数据警告服务
根据主机运行情况对运算资源,存储空间,网络资源进行监控并报警。把相关警告发送给应的服务管理员。
4. 监控数据分析优化建议服务。
根据用户数量以及使用频率情况变化带来的性能下降作出分析提出改进建议。
5. 平台高可用性服务
对于在硬件层面做了恢复和备份是无法保证用户错误操作带来的意外损失,比如用户错误删除了大量数据,这需要恢复短期内备份,使损失降到最低程度,在研发中心这种应用环境所有数据都存储在数据库当中,对数据备份是十分必要的。
a. 数据备份频率,一般情况下在每天晚上做数据备份操作,数据库服务器本地保存一周数据循环更新。将每周末数据上传到备份服务中,保存3份循环更新。
b. 对于大用户容量平台使用数据库HADR热备份技术保证数据库应用层面的高可用性。
注释:有些情况数据库服务器所在的操作系统无异常,但是数据库应用出现异常情况,在基础架构层的虚拟化技术无法实现自动修复功能。
应用管理服务保障定义
SLA(Server Level Agreement)
服务请求差错率:单位时间内服务请求发生异常的概率,量化位一年中出现差错次数。
网络性能保障:服务请求被延迟或由于网络原因导致的异常保障。
服务稳定性:在规定的时间内某个用户正常使用服务且服务不失效的稳定性保障。
支持响应时间:服务发生异常时,提供排错支持的响应时间。
惩罚机制保障:不能按照SLA合约进行保障时的约定补偿。
三、云计算基础架构
图4-1 描述了Site B为Site A提供备份和灾难恢复功能。相反Site A同时也为Site B提供灾难恢复和备份功能。
云计算基础架构层优化策略
1.高可用性
与传统的数据中心维护相比,云计算数据中心可以在发生异常时自动重新配置,从而不影响业务的正常使用。
2.规模经济性
数据中心的运营成本包括设备折旧,机房成本,网络成本,空调,电源,UPS和人工成本等。在高性价比的前提下最大化计算节点的运算能力,提高计算密度。通过规模效应标准化和自动化管理降低管理成本。
3.模块化易于扩展。
以机柜为组织单元,根据业务特点建立网络资源,计算力资源和存储资源的最优配比来规划机柜单元。并留有一定的扩展空间。
图4-2中每一个Node为一个管理单元,在管理单元内部使用私有高速网络共享存储服空间。当一个Host server出现异常时,同一个Node的其他host server可以平滑的移动故障Host Server上的虚拟机。实现高可用性功能。
云计算基础架构服务
1.虚拟机快速部署服务
针对虚拟机部署特点,预定义符合客户要求的虚拟机镜像通过修改配置的方式来达到快速部署的目的。在研发中心中,服务器用途基本上分为数据库,http服务器,中间件服务器和核心应用服务器比如RTC(Rational Team Concert)
2. 物理机导入服务
通过使用工具提供现有物理机克隆为虚拟机镜像,使用户环境更快速更平滑的过度到云计算平台。
3. 虚拟机实现24*7的全时服务
一般情况下数据中心所在的电网一般每年都有一到两次检修,在此期间无法对外提供虚拟主机服务,这种情况下可以通过在不同地域建立数据中心,通过在线迁移实现24*7的虚拟主机服务。
在每个机柜单元里面有多个host共享存储中的虚拟机镜像文件,某台主机出现故障时,其他主机会在不停机的情况下动态切换保证业务连续性。
4. 弹性服务
可以针对客户业务量的变化弹性调整服务器的配置和网络设置。
5. 副本管理服务
在每台host本地会保存1份副本并在OS或主要业务软件更新时做备份,这样就保证了当存储设备上的虚拟机文件出现损坏是可以快速找到并修复。
6. 灾难恢复
有了副本的一份拷贝只是为了避免硬件故障或文件异常产生的故障,只有在异地做好容灾备份才能保证业务的连续性。云计算使得容灾备份从原来的每次需要去银行取回备份磁带,变成异地使用Hadoop技术存储,大大提高了恢复效率。
云计算基础架构服务保障定义
SLA(Server Level Agreement)
服务器可用性:虚拟机,存储设备正常运行保障,量化为年化在线时间比率。
网络性能保障:数据包丢失率,网络延迟,网络抖动保障。
负载均衡可用性:处理时延,吞吐率,访问并发保证。
异常通知保证:在发生基础设施异常(发生虚拟机迁移)时的通知时间。
支持响应时间:服务发生异常时,云服务提供排错支持的响应时间。
惩罚机制保障:不能按照SLA合约进行保障时的约定补偿。
总结
云计算是一种新的利用计算力资源的方式,也推动商业模式的转变。它是按需分配更加合理利用资源的一种方式,并且能够提供给用户全新的用户体验。
名词解释
云计算: 云计算是一种通过Internet以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。区别于超级计算,云计算是把一台物理服务器虚拟成多台虚拟服务器,来达到提高资源使用效率,降低成本,并提高可用性的技术。同时云计算也带来了很多人们使用计算机方式的改变。比如大数据和手持设备数量的猛增,都为这个时代带来了巨大的商机。而超级计算则是把许多物理机整合成为一台超级计算机来解决超大量科学计算的目的。
Hadoop: 是一个分布式的基础架构,由Apache基金会开发。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS具有高可靠性,高扩展性,高效性和高容错性的特点,同时用来部署在低廉的(low-cost)硬件上。
RTC:IBM Rational Team Concert 将会是第一个基于 Jazz 平台及技术的产品家族。Rational Team Concert 为软件交付和团队协作开发提供了“集成工作项目”、“源代码控制和构建管理”等支持。Jazz 将给敏捷团队带来高度协作化的开发环境,并针对中小规模团队进行了优化。RTC与云计算平台的结合使软件研发更加敏捷。
SLA: 服务级别协议(Service Level Agreement,简称SLA),也称“服务水平协议”
HADR: HADR( 高可用性灾难恢复 ) 是 DB2 数据库的一个组件,是 DB2 提供给用户的一种高可用性和灾难恢复的解决方案。组成 HADR 需要一对机器,一个主机和一个备机(DB2 10.0目前最多可以支持三个备机)。它的基本原理是主机将数据库产生的日志通过网络传输到备机,然后备机将这些日志重新应用,整个过程类似于前滚恢复。从而保证主机和备机数据库的一致。当主机发生意外停机以后,例如停电或者灾难等,备机可以很快的接替主机继续工作。
CIO之家 www.ciozj.com 公众号:imciow