中国企业 研发高效能白皮书 近年来中国企业研发正在从粗放型走向精益型,研发工作的“高效能”成为几乎每个研发团队共同的追求。 中国软件服务产业也在近5-10年中得到了飞速发展,技术服务的边界不断拓展,赋能研发高效的产品层出不穷,适合中国研发环境的技术服务体系在不断完善。从结果上看,中国企业正在高效能研发的路径上快速前进。 本份报告以中国高效能研发企业为研究对象,尝试解读市场中具有代表性的高效能研发解决方案。本次报告由五个篇章组成,如CI/CD、企业级架构、价值流管理等主题。研究小组期待可以通过研究,帮助中国企业研发团队获得高效能研发新知。 3 目录CONTENTS CI/CD概念和背景介绍 CI/CD的概念——关于CI/CD CI/CD发展的阶段——历经三阶段,平台型产品站上历史舞台CI/CD的价值——CI/CD赋能研发的四大抓手 CI/CD的流程结构——CI/CD流程结构创新赋能研发效率 CI/CD行业发展概况 CI/CD市场基础数据——CI/CD市场蓬勃发展 CI/CD市场厂商分布——CI/CD行业厂商矩阵逐步形成CI/CD市场特征洞察——行业发展推动市场需求呈现新特征 极狐GitLabCI/CD:带您开启新世界大门 极狐GitLabCI/CD简介——GitLabCI/CD使用前和工作流极狐GitLabCI/CD特征——极狐GitLabCI/CD四大核心优势极狐GitLabCI/CD真实用户使用反馈 4 CI/CD概念和背景介绍 5 5 关于CI/CD 研发团队提到降本增效,最直接想到的解决方案就是将一些繁琐、易错的工作,改造为持续自动化交付流程。而在研发团队传统交付过程中,“代码集成 (ContinuousIntegration即为CI)”和“代码交付(ContinuousDelivery即为 CD)”可以说是很多团队最为头痛的问题。 通常研发团队中会设置一位同事或者一个团队专门负责代码集成和交付工作。但往往因为项目规模、构建环境、大量细微错误积累等复杂因素,项目的集成和交付经常会成为压垮开发团队的最后一根稻草。 有研究表明在软件开发早期,手动测试过多是导致开发团队开发效率低的主要原因之一。自动测试比较少,研发过程缺乏构建和部署自动化,导致了研发团队手动测试容易出现大量问题。统计数据表明,62%的研发团队被这样的问题困扰。 “所以,软件集成是一件高风险的、不确定的事情,国外甚至有个专门的说法,叫作‘集成地狱’。也正因为如此,人们就更倾向于不做集成,这就导致开发末端的集成环节变得更加困难,从而形成了一个恶性循环。”——开发者 6 关于CI/CD CI为ContinuousIntegration的英文缩写,意为持续集成。CD最早为ContinuousDelivery的英文缩写,意为持续交付;后来也被认为可以代表ContinuousDeploy,意为持续部署。如今,CI/CD一般为持续集成、交付和部署的简称。 “CI(ContinuousIntegration)源于肯特·贝克 (KentBeck)在1996年提出的极限编程方法 (ExtremeProgramming)。顾名思义,极限编程是一种软件开发方法,作为敏捷开发的方法之一,目的在于通过缩短开发周期,提高发布频率来提升软件质量,改善用户需求响应速度。” •CD(ContinuousDelivery)最早出现于2010年,JezHumble和DavidFarley在《持续交付》一书中提及和定义了CD:持续交付是“一系列的原则与实践的集合;通过这个集合,团队能够在低成本、短时间及低风险的状态下以增量方式将软件变更交到用户手上。”持续交付部分由版本控制、制品管理、变更管理、构建、持续集成、自动化测试、部署管理、流水线、持续交付工具等方面组成。 7 关于CI/CD CD经常被认为也同时代表持续部署即ContinuousDeploy。持续部署更进一步。一旦构建在staging环境中通过了自动测试,持续部署系统将会自动将它部署到生产服务器上。换言之,每个通过测试的构建都是实时的,可供用户及早反馈。这使得团队可以不断发布新特性和修复bug,并以其测试流程提供的保证为后盾。所以,很多时候CI/CD是指代通过连续方法进行软件开发的工程方案。 CI/CD这套软件工程思路和原则诞生后经常被同时提及,是更为优秀的软件开发方法,能够大大提高团队的工作效率和交付水平。持续集成(CI)是构建软件、完成初始测试等一系列工作,是通过小步快跑的方式,不断优化集成方式的过程。持续部署(CD)是将代码与基础设施相结合的过程,确保完成所有测试并遵循策略,然后将代码部署到预期环境中。 8 强痛点,推动CI/CD发展 Ifithurts,doitmoreoften,andbringthepainforward. ——MartinFowler(马丁·福勒,软件开发方面的著作者和国际知名演说家) 集成、部署和交付的强痛点,推动了CI/CD近十年的快速发展。MartinFowler认为如果痛点过于明确,那么就请频繁地去实践,并且将痛苦前置,以便我们更好地解决痛点,达到更接近预期的研发效果。 “该项目属于维护性质(在已有项目基础上开发),特征比较明显,客户也比较随(you)和(qian)。项目要求在两周内发布一些新特性。要上线的时候我才发现,团队里面居然没有人做过部署,做过的也只是通过WinSCP的工具进行拖拽。(团队没有经验的后果就是)部署10次有9次跑不起来(剩下的一次是我部署的)。” “由于客户业务发展的需求和相关安全性考虑,决定半年后升级现有Java版本和中间件。除了升级中间件,还需要通过重构改善现有系统的性能,最后的测试时间只有一个月。‘编码一时爽,重构火葬场’,做过开发的同学应该都有深刻的体会,没有测试的重构,想想都头皮发麻,修Bug的味道我知道。” ——开发者 02 开源软件+其他软件协同 随着研发团队交付复杂程度和交付品质要求的不断提升,通用型解决方案逐渐开始面临挑战。面对个性化开发环境需求和具体的 客户需求,研发团队通常无法通过单纯的人工审核流程进行满足。 历经三阶段, 平台型产品站上历史舞台 从理念诞生开始,全球主要的研发团队即开始探索如何将CI/CD更好地在实际研发场景中帮助团队降低研发成本和提升研发效能。目前,CI/CD的实践分为三个阶段: 01开源软件 大部分研发团队对于CI/CD的初体验多是使用开源软件/开源项目。开源项 目一般解决的是行业某一个通用的痛点,行业共性需求很强。在不复杂的开发环境中,解决一些通用问题,开源软件的效果还是很容易看到。但是在复杂和具有企业个性的开发环境中,开源软件就会展现出来一些劣势。“为了项目的顺利进行,我用某开源软件部署了人生中的第一条CI流水线,整个 CI流水线只有两个功能,打包和部署环境。花费的时间从原来的1人日/部署, 缩短到了10分钟/部署,我尝到了CI的甜头,真香啊~” ——某金融研发团队Leader 10 (接上页)与此同时,人工审核流程还会消耗大量的团队耐心和时间,为团队整体研发成本增加负担。此时,能够连接开源项目的其他协同软件成为降本增效不错的选项。如通过协同静态扫描集成帮助研发团队把更多的精力投入到业务层面的确认,显著地提升整体研发质量。 03平台型产品 随着中国企业数字化进程的不断推进,企业在使用CI/CD工具时的场景逐渐趋于复杂。行业的多样性也不断展现出来。因此,研发团队日常工作开始承接难度更高的跨功能、跨团队、跨行业的需求。团队在研发过程中各种插件的兼容性和适配性为团队的稳定交付带来不确定性挑战。 一体化平台产品的诞生满足了这种市场需求,大大降低了插件间适配度产生的时间成本和适配过程中出现事故的风险成本。 经过三阶段的发展。目前,具有解决方案平台能力的产品正在不断替代此前两阶段的CI/CD成为头部企业、行业引领者的共同选择。 11 CI/CD赋能研发的 四大抓手 •CI/CD通过工作流程更新,将大量复杂的工作切分为可以控制或者可以修复的小单元工作。 •在没有实践CI/CD的团队中,通常需要花费大量时间,由专门的高水平开发者或者团队去统一集成和部署。导致研发团队在人力成本和时间成本上都承担了更高的成本和压力。CI/CD通过增加集成和部署频率,降低单次集成和部署的复杂程度,从而提升了单次集成 和部署动作的准确性。 持续性 01 •CI/CD通过程序帮助研发团队解放专职的集成和部署人员。开发人员提交新代码之后,程序立刻自动进行构建、测试、安全扫描等多项工作。因为这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流程进行验证。这样做是基于之前持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量,对可能出现的 一些问题进行预警。 02 自动化 04高效迭代 CI/CD通过持续性、自动化、可追溯的实践, 在可控范围内不断降低项目研发的机会成本,在宏观层面帮助项目研发更高效迭代。 12 CI/CD赋能研发的 四大抓手 可追溯 03 CI/CD小单元的持续集成、部署和交付,将原本超出控制、高概率不可修复的流程前置,将更多可能出现的问题提前解决。并且所有开发人员均可以追 溯开发流程,更精准地帮助项目内容的完成。 13 CI/CD流程结构创新赋能研发效率 CI/CD的核心流程主要包含编码、提交、版本控制、测试(代码级)、构建、制品中心、部署、测试(应用级)和发布等。CI(持续集成)主要包括编码、构建、集成和测试;CD(持续交付和持续部署)在CI的基础上将代码部署到更为接近真实运行环境的预生产环境中,并在代码审核通过之后,自动部署到生产环境中。 在整体的CI/CD过程中测试步骤也可以前置到合适的位置。如在极狐GitLab中即将测试分为代码级测试和应用级测试,代码级测试被前置于代码提交后和构建之前,进一步确保整体交付和部署的准确性和持续性。 14 CI/CD行业发展概览 DATAS 15 CI/CD市场蓬勃发展 13亿美元规模 MarketGrowthReports2022年的统计数据,2017年CI/CD市场规模已经达到4.02亿美元,2023年市场规模有望达到13亿美元。 3.2倍规模增长 85.16% 国内调查显示,持续集成、自动构建、单元测试和持续部署四种敏捷工程实践,占比分别为85.16%、81.61%、81.53%和80.66%。 认可度高 90% 使用持续集成 19.38%的企业拥有独立的持续集成团队维护持续集成系统;25.74%的企业实现了持续集成平台的自服务化,另有24.80%的企业通过自服务化持续集成平台实现组织级交付能力的提升,持续优化和改进团队的持续集成服务。 3.78%手工 部署 软件质量被企业持续关注,集成问题普遍在1天内完成修复。如今仅有3.78%的企业手工完成所有环境的部署。 更自动化 普遍使用 数据来源:2021年《中国DevOps现状调查报告》 16 CI/CD行业厂商矩阵逐步形成 CI/CD市场需求的不断提升,离不开国内外众多CI/CD厂商的持续创新和市场推广。目前,CI/CD已经成为DevOps最具规模的技术应用之一。 目前国内外已经形成以极狐GitLabCI、Jenkins、BambooCI、CircleCI、TeamCity等为代表的厂商矩阵。市场中的主要厂商业务可以分为三种类型: 以极狐GitLabCI/CD为代表的DevOps平台型工具产品厂商 以Jenkins、BambooCI为代表的单一工具链产品厂商 以AWSCodePipeline为代表的企业级厂商(与自身产品绑定) 17 17 CI/CD中国市场格局 DATA_ Jenkins、极狐GitLabCI/CD 呈现领先厂商姿态 中国持续集成与流水线企业使用率 12 34 数据来源:《中国信息通信研究院》 18