本次分享的题目是《企业 CICD 规模化落地》,因而咱们不会偏重解说 CICD 是什么以及怎么做 CICD,而是你曾经晓得怎么“玩转”CICD 了,要如何在一个比拟大的企业中规模化地落地。
本文整顿自阿里巴巴技术专家崔力强(怀虎)的分享《企业 CICD 规模化落地》。
研发流程与继续交付简析
继续交付是随着互联网的迅猛发展逐步遍及的一种研发模式,它具备“疾速反馈”“品质内建”“自动化”“开发自运维”等特点。
这种研发模式次要蕴含如上图所示的四个环节,“分支治理”“测试验证”“制品治理”和“公布”。在业界有很多工具反对这些操作,在云效产品矩阵中也有对应的产品提供相应性能。
在一个中小型的研发团队(比方 5 -10 人),无论你是应用商业软件还是开源的工具,通过一段时间的学习,你都能够把“继续交付”做起来。然而当须要规模化落地之后,就有更多的问题须要思考,如:
- 如何进步合作效率;
- 新团队如何疾速接入;
- 如何进行全局危险的管制;
- 研发流程如何全局更新。
继续交付在阿里巴巴的规模化
接下来简略理解一下“继续交付”研发工具在阿里巴巴外部的演变历程。2009 年,咱们开发了自动化公布工具;2013 年,建设对立构建部署平台;到了 2016 年咱们曾经有了继续交付平台,外部称为“Aone”,该产品蕴含了从代码开发、构建、公布等性能,以一个一站式的研发平台,这个产品到当初也始终在演进;2017 年时,咱们将“Aone”的外围性能凋谢进去,供宽广开发者应用,就是咱们的“阿里云·云效”。目前该产品在公测中,大家能够登录阿里云官网进行拜访、应用。
上面咱们介绍几个帮忙阿里巴巴实现继续交付规模化落地的研发实际。
要使继续交付规模化落地,很重要的一点是须要有一套工具对研发模式进行全自动反对。“研发模式”是指你做事件的一种形式,在这里次要是指代码公布模式以及对应的分支应用形式,比方“骨干模式”,这也是继续交付比拟提倡的一种研发模式。然而“骨干模式”对研发人员的要求比拟高,并且也不能很好的体现出以后要进行公布的内容。作为一位研发负责人,你可能会抉择更灵便一些的研发模式,比方“Aone Flow”或者“Git Flow”等,这两种模式都须要肯定的自动化工具进行反对。
其中 Aone Flow 是在阿里巴巴外部支流的一种公布模式及分支治理形式,咱们这里简略介绍一下,感兴趣的同学能够在网上搜寻相干文章理解。Aone Flow 应用三种分支类型:骨干分支、个性分支、公布分支。骨干分支上的代码跟线上版本的代码是统一的,当你要开发一个新的性能时,就会拉取一个个性分支作为开发分支,而后在这个分支上提交代码批改。当你须要公布的时候,须要先将不同的个性分支合并为开发分支再进行公布。公布到线上正式环境后,合并相应的公布分支到骨干,在骨干增加标签,同时删除该公布分支关联的个性分支。这个过程中波及到大量的“拉分支”“合分支”“打标签”“回滚版本”等等简单操作,这就须要有一系列自动化工具进行反对。在阿里巴巴外部咱们是通过 Aone 平台(即云效的外部版本)提供自动化反对的。
第二个实际是以利用为外围的一站式研发体验。“利用”是指一个服务或者微服务,能够间接对应一个代码库。以利用为核心,咱们又能够串联流水线、环境治理、构建配置、部署等工具链。能够让开发人员很好的了解和买通整个研发流程,同时也能够帮忙一个新团队疾速上手。
上图是咱们外部一个产品研发过程的截图,会有一个研发向导帮忙你提交各种信息、初始化代码库、源码主动生成、申请测试环境、进行线上公布等一系列操作。这种“以利用为外围的一站式体验”十分爽,能够帮忙研发团队节俭很多消耗在合作上的工夫,而且有了这套流程之后,只有依照向导的提醒去做就好了,很少出错。
接下来,咱们聊一下如何进行全局危险管控。
在部署正式环境之前,会有一个 Checklist,进行平安审核、PE 审核等等,咱们很多对外公布的利用都会通过这样的平安审核。在前 DevOps 时代(2016 年以前),阿里巴巴外部还是有专门的运维团队的,咱们叫 PE 团队。在正式公布前,他们会去审核公布的工夫点、配置参数等。这就是全局危险管控,这些卡点会强制在一个流程中施行,不可能勾销。(当然当初曾经阿里巴巴外部曾经勾销了 PE 团队,这些卡点会通过自动化工具实现)
兼具灵活性与规范性的继续交付平台
通过以上几个措施,就可能在阿里巴巴外部规模化的落地 CICD,当新的研发团队退出时,也不必破费太多的工夫去了解这个事件,而是很快上手去操作。然而咱们这一套流程也遇到一些问题,这套流程面向 Web 端服务是能够很好去应答的,比方咱们只有一个版本的“天猫”“淘宝”,永远是面向最新版去交付的;然而随着阿里云业务的倒退,特地是呈现了混合云的业务,呈现了面向多 Region 和多版本交付的状况,咱们这套研发流程就有点顾此失彼了;因为咱们的研发理念是“以利用为核心”,当遇到一些跟利用无关的交付场景时这套研发流程也会显得不合时宜。
如何进步阿里巴巴继续交付平台的灵活性呢?咱们最早的研发架构如上图左侧所示,底层是研发平台,下面咱们做了很多“场景化”的研发组件,同时保留了肯定的扩展性,比方“自定义组件”,用户能够把本人的组件接入到咱们的流水线里来;也裸露了一部分 API,次要只读接口,其余团队能够在这下面做一些他的场景化。
咱们认为这种研发架构的灵活性和扩大能力是有余的,(如上图右侧所示)起初咱们就把构建、编排、部署、制品这些能力独自拎进去,并凋谢对应的 API,下层咱们再去编纂“场景化”,而且有可能这些“场景”都不是咱们开发的,而是应用这个产品的用户本人去开发,重点是咱们须要将这种扩大能力裸露进去。咱们还会有“自定义步骤”和“自定义组件”,这两个性能曾经在云效产品中提供。同时,咱们还会开发更多 API、反对更多的源,也能够通过配置 webhook 在流水线的生命周期中(失败、胜利、暂停等)告诉第三方。
这样的研发架构就具备了肯定的灵活性和可扩展性,但对于企业来讲这是不够,还必须具备开箱即用的能力。
云效内置代码扫描、平安扫描和各种自动化测试能力,并通过流水线模板串联起来。如上图右侧所示,针对支流的开发语言 Java、PHP、Node.js、Go、Python 等提供从构建到部署公布的各种模板,能够帮忙你疾速开始。
模板化能力其实是推动 CICD 规模化落地的要害,云效不仅提供了数十种通用的模版来帮忙你疾速创立流水线,同时提供定制化能力,反对定制企业自有模版来治理企业继续集成和继续交付流程,将简单的流程通过可视化编排和后果展示,保障交付可见可控可度量。
总结:
当你曾经对 CICD 有肯定理解,怎么样更好的在组织内规模化落地呢?第一,你须要抉择一款兼具灵活性和规范性的工具平台。第二,制订适宜本人企业的研发模式,并将其固化下来;第三,研发模式的变更能够利用到已有的团队;第四,通过适当的卡点来管制全局危险。
以上内容整顿自怀虎的视频分享《企业 CICD 规模化落地》,欢送大家退出云效开发者交换群(钉钉群号:34532418)观看视频回放,下载演讲 PPT。
【对于云效】
云效,云原生时代一站式 BizDevOps 平台,反对公共云、专有云和混合云多种部署状态,通过云原生新技术和研发新模式,助力翻新守业和数字化转型企业疾速实现研发麻利和组织麻利,打造“双敏”组织,实现 10 倍效力晋升。
立刻体验