近期,在由中国电子信息行业联合会发起的“2018中国软件和信息技术服务综合竞争力百强企业”名重,华为技术有限公司(以下简称“华为”)凭借在企业规模、创新研发能力、全球竞争实力等方面的卓越成绩荣登榜首,继续在中国软件产业当“排头兵”。
2018年中国软件企业百强榜
众所周知,华为在国内软件行业长期位居百强榜第一名。经过三十年的技术积累,华为的软件研发能力历经了从瀑布、敏捷、DevOps到微服务研发模式的转变,软件研发工具也从二十多年前支持IPD开始持续积累到现在。
关于华为的软件开发流程管理,华为DevCloud运维总监张甲磊分享了华为的经验。
以前执行IPD流程的时候,一个软件版本一年半,中间只发布2次,基本就是半年一次发布。后来引入敏捷,发布周期迅速变成闪电式1个月。当美国Gene Kim在《凤凰项目》一书中提出DevOps要做到每天发布10次的概念时,感觉震惊了整个行业。
图为软件全生命周期图
针对《凤凰项目》提出的具体要求,当时仅发布评审就要几天时间,怎么可能每天把这些过程跑10次?而业界每天多次发布的DevOps实践越来越多,华为也开始了DevOps转型,先从文化理念开始,组织架构流程也开始松动、调整。但当时效率并未得到有效提升,反而让开发人员陷入到bug修复和线上部署的泥潭里。
正在这时,华为发现DevOps落地最重要的支撑因素就是工具!如果没有汽车生产流水线让汽车装配时间从数百小时提速到十几个小时,汽车不可能走进千家万户。没有DevOps工具链,也不可能让每天10次发布在软件研发活动中普及。把研发过程拆开看:
对于这个过程,业界统计数据显示,编码只占软件生命周期投入的1/6,调试、部署、测试等研发过程耗费了大量的研发资源。因此,影响快速发布的主要因素是:代码输出后能否快速经过集成、部署、测试,发布到生产环境。
首先讲环境,DevCloud有Alpha、Beta、Gamma和生产环境,为什么要有三种研发环境?很多项目只有一套集成环境,外加一套分散的开发自验环境,基本上构成了所有的研发环境。但这种条件下,集成环境为保持稳定,更新的频率基本是以周计,甚至是月,反而无法促进快速交付。
DevCloud的研发环境作用如下:
自验环境:不做统一管理,开发人员调试环境,随用随申请,5分钟ready;
Alpha:系统集成验证环境,随时更新经过开发人员自验的软件版本,执行功能验证;
Beta:内测环境,DevCloud的研发过程就承载在Beta环境上,这套环境也承载了DFX测试的角色,能够在压力、性能、可靠性、安全测试下保持业务连续运行,不影响DevCloud自己的研发业务;
Gamma:与生产环境配置保持高度一致,任何与环境配置相关的功能都在这里经过充分测试。
DevCloud敢于设计多套研发环境的原因,是因为——部署自动化。在所有的自动化中,部署自动化首当其冲。因为每次发布至少要部署4次,而以我们的实际运行数据,每次发布引发部署10-20次。部署自动化之后,随之而来的是构建自动化,以及对接到流水线,实现持续集成。这里面包含大量的自动化工作,既要保障高效率,又要保障高质量,满足多项代码规范、第三方引用规范、安全规范等,很不简单。华为的构建工具发展了二十年,快速地引用并构建了自动化。
而要保障代码的质量,在持续集成中进行代码静态的自动检查必不可少,华为研发在十几年前就在跟国内外一流的高校、机构合作,积累了几千项检查能力,也成为在构建阶段就能发现多数编码问题的重要工具保障。
持续集成的软件包要进行版本化管理,以便随时复现任意版本的问题,或者做版本回退。
但说到质量保障,测试的自动化则功不可没,接口自动化测试、界面自动化测试,甚至性能自动化测试等多种自动化测试手段,保证在版本发布之前,能够得到高效的质量验证。
至此,我们实现了持续交付的完整工具链,支持高效的自动化发布过程。但DevOps不仅有CD(持续交付),还有OPS(线上运维)。主机配置、监控、变更、现网运维事件等多个运维服务的推出,也解了我们的燃眉之急,形成了完整的DevCloud on DevCloud DevOps工具解决方案。
在一整套的工具服务支撑下,DevCloud发布的频率达到了每天10次的水准,而实际在生产环境发布变更的频率,更是比每天10次高的多。从最初的数周完成一次上线,到目前的每天10次发布的故事.
更多精彩内容,可关注10月举办的2018华为全联接大会,华为云DevCloud将首次披露,娓娓道来。