产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析-程序员宅基地

技术标签: ui  运维  测试  

2017年5月9日,云效平台资深研发工程师向禹通过直播分享了《持续集成与持续交付实践之路》。他从云效背景、云效方案、云效价值三个方面进行了分享。他主要分享了持续集成持续交付的解决方案和案例,并且对大型系统如何实现持续集成、持续交付、进行产品迭代发布进行了详细介绍。

 

以下内容根据直播视频整理而成。

云效背景——阿里巴巴《持续交付》之路

大应用下的交付

7606f32cbb867359b177a067320482b884c3cc68

在七八年之前,阿里巴巴的B2B一直沿用瀑布的模式来进行项目管理,当时已经感觉到瀑布模式对应用持续快速的发展产生了很大的影响。并且当时很多的应用都是以大应用的方式来开发的,一个应用可能有几十万行、上百万行代码量,如果此时进行小的功能点的修改会比较麻烦。改了几行代码,花费几个小时进行编译打包,发布到测试环境上去,运行全网的自动化回归(积累了两千多个自动化脚本,总共几万行)也非常耗时,降低了开发效率。所以,当时开始准备把大应用进行服务化的拆分,将大应用的逻辑拆分成了会员中心、产品中心、订单中心、交易中心等服务化模块,每个模块下面又有微服务来支撑。

d6d737cd4bb4baf0ecf1d6b2f79f5fe4c3f9673d

做完第一步改造之后,又遇到一些问题,最明显的是环境上的问题。每一家公司环境管理的方式是类似的,都会划分为开发环境、测试环境、集成环境以及线上的生产环境。微服务化之后,在开发环境下,由于应用变多,调用链路变得更加复杂,很难保证整个环境中所有应用的稳定性。问题难以排查,修改程序之后,很难判断是应用出现问题还是链路出现问题。在集成环境,为了保证稳定性,规定了每周的交付窗口时间,将所有项目代码合成到集成分支上,编译打包部署到集成环境中,运行全网自动化回归脚本。如果出现问题,排查比较麻烦,首先判断是哪一个应用引起的问题,然后再细分到项目组进行排查,修改后重新交付测试。

既然现在已经是微服务了,是否可以跳过集成环境,在开发测试环境将应用完善测试好?经过尝试发现,即使在开发测试环境将某个要发布应用的所有功能测得再详细,也很难保证应用上面的链路和下面的链路的业务逻辑都是正常的。

自动化

如果仅仅通过开发方式的转变是没有办法很好的完成持续集成、持续交付的理念。我们应该创造一个持续集成、持续交付的自动化平台来保证在每个环节里面效率的提升,以及整个链路的打通。

f871a487948b7ffca843a3249fa18c2df64717db

上图是我们在平台上解决的核心问题:并发项目配管方案,在并发项目很多的时候需要进行代码分支的管理;持续部署方案也是需要解决的核心问题;持续验证方案,在持续部署之后要快速进行验证,如果用手工的方式是不现实的;通过持续部署和持续验证达到持续交付的目标;为了让各个团队更好的适应角色的变化、使用平台来提高效率,提出了落地使用推广方案。

云效方案——核心解决方案内容

a6e2078aafdfe4dfcbac505505b46fc98bf3ae13

针对需要解决的问题,我们所建设平台核心的原则是核心化、流程化、自动化,希望能够建立持续部署的流程、代码管理的流程,通过自动化的方式实现出来。在上述基础上,云效平台建立了配置管理、持续集成、持续交付等相关子系统。通过这些子系统,创造了可靠、可重复的交付流水线。此外,与项目管理进行结合,开发的效率很好的沉淀到了平台上,在平台上建了与项目管理相关的一些子系统,将其数据打通就能达到业务和产品的相互促进。多个角色的团队都会在平台上用相关的系统来进行相互工作上的协作,所以对组织和团队的协作也产生了促进作用。云效平台在内部是部署在专有云平台上,对于托管的应用支持EDAS/Dubbo分布式服务化架构、SpringBoot微服务架构、Docker容器化架构。

并发项目配管方案——SCM管理

919f22086b32c7ae2752b82755dcd8a7265b8b4f

并发项目配管方案即项目分支管理方案。很多公司在开发一个项目的时候会首先由相关的PM或者运维人员拉出来一个分支交给开发人员。为了简化上述过程,在平台上提供了开发人员直接拉取分支的功能。如上图所示,项目1和项目2同时进行开发,分别拉取了V1.0的分支。如果项目1提前开发完成,就会触发提交集成的操作,会把项目1最新的分支代码重新拉出来一个集成分支,把主干代码合成到集成分支中,针对集成分支进行编译打包,自动部署到集成的测试环境中。在集成环境运行云效的测试用例,如果没有问题就合并回主干。

持续部署方案-环境管理

4fa1621846aabeb91f6692e6dec710e2721062f3

每个公司都有相同的环境建设方式,包括开发环境、测试环境、集成环境。为了规避开发环境不稳定的情况,摒弃了各种环境的概念,在云效平台上划分为了公共环境和功能环境。公共环境可以认为和线上服务的环境一致,是由线上同步回来的,不需要人为手工参与部署。测试时,如上图需求1,每个项目组根据项目开发的应用在云效平台上申请一台服务器,通过云效一键部署的功能把应用部署到服务器上去,如果需要调用其他服务器,则通过服务化路由的方式路由到其他服务器上。针对每个项目组来说,他们都可以认为自己有一个独立的、供他们使用的测试环境,互相之间没有相互的干扰。对于服务化自动路由,各个系统间相互调用的方式有HTTP、RPC、HSF、Dubbo框架等,使用HTTP的话可以利用本机host绑定达到路由效果,可以使用云效平台自动托管;如果使用Dubbo和HSF,则有一些注册中心和路由规则,可以在本地部署服务器上直接生成HSF的路由文件,动态改变服务的路由。

分层自动化

40a451492a08950c9960649356d1da79f93947c7

在测试环节,倾向于认为没有某一种的测试方式能从效率、质量达到一个很好的平衡,涵盖所有测试的业务逻辑。如果把所有的功能都通过UI自动化实现的话,UI自动化的创建、维护成本很高,稳定性也有一定问题。建议在不同的业务层次使用不同的、适合的测试环境。在方法层面,检测方法是否有问题,可以利用单元测试来进行。接口则可以通过服务化接口测试来涵盖,再往上更长流程的业务逻辑可以通过界面自动化测试来实现。很少一部分的测试场景通过自动化的方式是没法实现的,只能通过手工的方式来实现。

单元测试

7d785d03618bac54cc4f72e339c4126756a76f98

在分支上进行提交的时候,每一次后台都会及时检测到触发提交后针对最新代码的编译、单元测试、代码扫描。平台扫描的结果会及时通过邮件反馈到开发人员,相关的数据也会沉淀到系统上。在云效平台上,阻塞问题是最严重的问题,通过提示信息可以方便开发人员及时进行相关排查。

服务化接口测试

daa22e4e7d6d4da18dd6c2e3540a495e558a5443

在云效平台上,所有的自动化测试都希望不写代码,直接在页面上配置,通过最直观的方式进行。接口测试方面,如果是HTTP接口,则会直接在页面上输入需要测试接口的地址、入参、出参的校验规则;如果是Dubbo或者HFS接口,则需要写单元测试用例启动一个容器才能进行相关的测试。为了减轻写单元测试的工作,在云效平台上,可以解析到某一个jar包里的接口,只需要指定针对Dubbo接口往哪一个IP服务上发送相关请求,平台会自动生成相关的一些测试用例,把入参进行传递,把出参进行校验。

云效价值——实际效果与客户案例

2de0ab8b7dd618c97cd45882eb7bc234e7524a9f

在阿里巴巴内部,云效平台是从2012年开始建设,当初开发测试的配比大约是3:1,到2015年提高到了6:1,目前已经接近8:1。由于业务在持续快速的发展,在平台的保障下,历年故障数有明显的下降,集成验证发布耗时也有显著缩减。有了平台上自动化工具的保证,50%的小需求不需要进行测试。也没有了发布窗口的限制,随时可以发布。

 

对于外部客户来说,现在使用云效的客户也有不少,比如众安保险、五矿电商、红岭创投等,主要使用的是环境部署、自动化集成、自动化用例的建设,大大提升了企业研发效率。

转载于:https://my.oschina.net/u/3471671/blog/904395

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chuhan3075/article/details/100669361

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文