建设信用卡银行商城网站,网站建设技术方面论文,暴雪vp,淘宝网站建设模板免费下载【以下为分享实录#xff0c;有删节】
今天分享的题目是《企业CICD规模化落地》#xff0c;因此我们不会侧重讲解CICD是什么以及怎样做CICD#xff0c;而是你已经知道怎样“玩转”CICD了#xff0c;要如何在一个比较大的企业中规模化地落地。
研发流程与持续交付简析
持… 【以下为分享实录有删节】
今天分享的题目是《企业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。 【关于云效】
云效企业级一站式DevOps平台源于阿里巴巴先进的研发理念和工程实践致力于成为数字企业的研发效能引擎云效提供从“需求 -开发-测试-发布-运维-运营”端到端的在线协同服务和研发工具通过人工智能、云原生技术的应用助力开发者提升研发效能持续交付有效价值。
【云效官网】https://www.aliyun.com/product/yunxiao 【公测指南】https://developer.aliyun.com/article/756207 【申请公测】https://devops.aliyun.com 【学习路径】https://help.aliyun.com/document_detail/153739.html 【开发者社区】https://developer.aliyun.com/group/yunxiao 【精彩活动】云效公测开启 「产品体验官」招募中~https://www.aliyun.com/activity/yunxiao/Beta2020 欢迎扫码加入云效开发者俱乐部钉群34532418
原文链接 本文为云栖社区原创内容未经允许不得转载。