华为在全球有16个研发中心、近8万研发人员,对于这样一个量级的软件开发团体,想成功DevOps改革并非易事。在决定落地DevOps平台之时,就希望实现代码和作业上云,让开发只做开发。2014年,华为已经开始研发一些DevOps风格的工具,现如今已经实现了DevCloud软件开发运平台,在云上实现了DevOps的工具链,供开发者使用。参照下面的DevOps能力环来分析DevCloud: 华为希望的是将整个能力环的工作都放入到云端,开发者在完成代码的编写之后,不再关心后续环节的任何问题。换而言之,文中最早提到的开发模式的四大问题则直接由该云平台处理,不再耗费人力逐一手动处理琐碎的代码之外工作,从而提高产品的落地效率。 华为对此DevOps云端平台的功能划分如下: 华为称一切开发活动都在云端,即DevCloud负责软件开发全生命周期的云服务。进行DevOps改革之后,千万行代码级产品的版本迭代周期从8周缩短到3周。 从华为提供的整体统计数字来看,以前华为每个月有超过一亿行的代码,编译时间超过25分钟;后来通过软件研发云将所有的编译资源进行了集中处理,将编译时间从25分钟降到了7.5分钟,版本的编译速度从94分钟升级到31分钟,研发环境的准备时间也由月级降低到了小时级,甚至分钟级。 4通过三个应用场景看技术落地 应用场景一:代码检查 技术层 缺陷自动检查:代码缺陷模式库融合华为优秀代码实践与编程规范与业界通用的检查规则,覆盖常见的编码风格、架构、Web安全等方面的问题。 大规模分布式任务调度:基于并行智能任务调度算法,对检查节点进行自动弹性伸缩,检查任务根据检查规则类型智能分片和并行执行,支持大规模代码仓库的代码检查。 业务层 代码检查围绕检查任务实例开展,检查任务由“代码+检查规则+检查报表”构成,即:检查引擎从代码仓库(CodeHub)克隆代码,从规则库中获取检查规则,执行生成检查报表,保存到检查任务实例对象。 表现层 华为将20+年的软件开发经验荟萃出一套完整的代码检查机制,可在线进行多种语言的代码静态检查、代码安全检查、质量评分、代码缺陷改进趋势分析,辅助管控代码质量。 提供华为典型检查规则集,支持web检查、安全检查、架构检查、编码问题检查等场景。支持Java、Java、CSS、HTML、C++等语言检查,持续增加语言支持广度。 精确定位缺陷,针对每个代码缺陷,提供详细的缺陷影响说明、正确示例、错误示例、修改建议。 如果系统的检查不满足需求,SE可通过定制规则集来实现挑选规则集; 针对大量代码缺陷,用户可根据问题级别、问题分类、语言、文件目录等进行过滤,分级处理。 应用场景二:自动化流水线 技术层 并行智能任务调度:实现智能任务调度算法,用户根据任务特点自行编排并行/串行任务,系统感知执行器状态和健康度,动态分配执行器的任务,故障节点任务实现自动转移和熔断,结合资源弹性伸缩策略,实现调度器和执行器高可用和水平扩展。 资源弹性伸缩:使用华为企业云弹性伸缩服务,感知到业务集群资源使用情况,资源利用率超过阀值时,动态扩容;反之,自动缩容。流水线根据不同业务类型,配置不同的弹性伸缩策略和资源弹性伸缩组,从而实现短时间内迅速提升流水线总体吞吐量。 编译构建并行技术:通过使用精准增量编译技术,结合并行智能任务调度,可实现按技术栈、目录等编译策略增量并行编译,加速编译构建的速度,大幅降低编译构建等待时间。 表现层 对于一切可以解放双手的任务都由工具自动化实现。 一键式完成代码下载/代码检查/编译构建/系统部署/产品发布整个交付流程。 任务并行执行,按需动态分配资源,显著提升资源利用效率及执行效率。 可实现单模块或者单独子系统的个人级交付,也可实现多模块、多子系统的版本级交付可随时查看流水线执行进度/结果/报告/日志。 应用场景三:部署环境标准化、部署过程自动化 技术层 部署编排技术 (责任编辑:本港台直播) |