5、DevOps基本过程

从行业内Devops应用的优良实践经验来看,在实施DevOps的过程中,软件开发交付的各个子过程都需要有DevOps关键活动参与,各子过程分别对应交付服务管理、代码版本控制、自动化构建、自动化测试、持续集成、持续部署、自动化运维以及集中式监控,各项活动与软件开发(Dev)和运维(Ops)一体化过程对应关系如下表所示。

DevOps一体化循环

DevOps过程改进实践

过程域

子过程

关键活动

关键绩效

Dev

计划

交付服务管理

软件交付能力:
前置时间
部署频率
变更失败率
恢复时间
系统可用性

编码

版本控制

构建

自动化构建

测试

自动化测试

Ops

集成

持续集成

部署

持续部署

运维

自动化运维

监控

集中式监控

  • 交付服务管理

软件开发项目计划阶段,都需要制定项目管理计划和标准,确定项目执行、监控和收尾的方式,以应对不断变化的项目环境,PMI要求在项目中所做的所有事情都必须是在计划中体现的。实施DevOps过程改进,会在企业现有的软件开发项目中加入或优化与DevOps相关的工作过程和活动,所以也需要制定交付服务管理计划和标准,统一指导和约束项目中如何开展DevOps各项工作。因为DevOps各项活动的高度自动化、工具化,通常交付服务管理计划和标准以部署流水线的方式固化到DevOps工具链中进行体现。图2.3是一个部署流水线示例:

 

  • 版本控制

使用版本控制系统进行软件开发过程中的代码管理,已经是开发团队的基本做法。版本控制系统对系统中的文件进行记录和变更管理,这些文件可以是各种源代码、资源文件或者软件产品。开发过程中,开发团队应该将所有的源代码及相关配置文件都纳入版本控制,使它成为唯一精确体现软件系统预期状态的基线仓库。在DevOps过程改进实践中,有多种版本管理方式,通常推荐使用Git工具进行分支开发主干发布的方式,每次代码合并到Master主干分支,将会触发DevOps的自动化构建及其他后续活动。

  • 自动化构建

软件产品的构建,是指把软件源代码生成可执行应用程序的过程,通常一次完整的代码构建包括编译、打包、单元测试、归档,为了实现DevOps自动化沟通,需要借助自动化沟通工具,基于稳定可靠的独立环境,实现拉取源代码、审核、编译、打包、单元测试、归档等动作,并能根据构建结果触发后续的自动化操作。常用的自动化构建工具有Gradle maven、Apache Ant、GNU make等。

  • 自动化测试

软件测试是在预设条件下运行软件应用程序或系统,并对运行结果进行验证评估,预设的条件包括正常条件和异常条件。自动化测试则是把人为驱动的测试行为转化为机器自动执行的一种测试过程,通过机器替代人工,节省人力、时间和硬件资源,同时提高了测试工作开展的效率,保证每次测试执行的标准化。常用的自动化测试工具有QTP、WinRuner、Rational Robot、AutoRunner、SilkTest等。

  • 持续集成

软件持续集成(Continuous Integration ,CI)是指频繁的(每天至少一次)将所有开发者的工作合并到软件主干分支上,持续集成的核心在于确保新增的代码能够与原先代码正确的集成,每次集成都通过自动化构建来验证,从而尽早地发现集成错误。持续集成依赖前面的版本控制、自动化构建、自动化测试的能力,并且要求开发人员每天向主干提交源代码,可以可视化的反馈每次集成结果。

  • 持续部署

软件持续部署(Continuous Deployment ,CD)是一种软件功能通过自动化部署方式频繁交付的软件工程方法,与持续集成相比,更强调通过自动化的手段对最终软件产品进行集成、测试、部署和交付使用的完整过程。下图是一个持续部署的流程示例:

  • 自动化运维

IT运维是IT服务管理中重要的组成部分,大量研究表明,一个软件产品的生命周期中,通常符合80/20定律,软件开发建设阶段消耗20%的时间,而运营维护阶段消耗80%的时间。互联网行业大型复杂系统,无法单纯依靠人工满足IT运维需求,自动化运维替代人工操作是大势所趋,T运维从诞生发展至今,自动化运维已经不仅仅是代替人工操作,更包含对维护软件系统深层探知和全局分析,在有限资源条件下实现性能与服务水平的最优配置。随着DevOps的实施应用,软件系统的更新和发布频率得到进一步提升,只有结合自动化运维技术实时了解和调整软件系统状态,才能保证软件持续交付工作最终的高效和稳定。

  • 集中式监控

IT运维监控是一系列IT管理工作的统称,运维工程师通过使用监控管理工具从生产系统采集获取各种监控数据,因为复杂软件系统架构的复杂性,涉及到网络、硬件、操作系统、应用程序、数据库等多种不同类型层次的设备和程序,不同设备和程序之间存在信息孤岛,导致运维人员无法对全面的了解被维护对象。在互联网行业,往往需要在系统架构设计之初就进行监控信息输出的设计,以便能够产生足够的监控信息,并选择合适的工具采集、分析和处理所有必要的监控信息,进行集中式监控,满足DevOps的及时反馈要求。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值