阿里巴巴1582.73亿背后的持续交付如何玩

简介: 在2017在线技术峰会——首届阿里巴巴研发效能嘉年华上,来自阿里云研发协同的技术专家怀虎分享了《阿里巴巴1582.73亿背后的持续交付如何玩》。他详细介绍了阿里巴巴的企业级持续交付,从研发参与者的各个角色解析阿里持续交付的流程和环节,并对RDC的理念进行了解析。

在2017在线技术峰会——首届阿里巴巴研发效能嘉年华上,来自阿里云研发协同的技术专家怀虎分享了《阿里巴巴1582.73亿背后的持续交付如何玩》。他详细介绍了阿里巴巴的企业级持续交付,从研发参与者的各个角色解析阿里持续交付的流程和环节,并对RDC的理念进行了解析。

 

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

直播视频:https://yq.aliyun.com/edu/lesson/547

PDF下载:https://yq.aliyun.com/attachment/download/?id=1840

 

持续交付的目标

新的业务需要新的应用来承载,所以我们希望能够快速上线新的应用。有了代码之后,希望其构建过程是标准的,不需要针对每个环境、应用再去调构建过程。当应用上线之后,需要有新的功能来迭代,功能被提出来之后希望能够快速高效的完成,并且可以在各个环境中进行验证,最后可以一键发布到线上。

阿里巴巴的企业级持续交付

最开始,阿里巴巴也是使用开源套件的,比如Jenkins,但是逐渐难以满足需求:不能满足如此大的规模,资源管理、持续交付在运维的过程中使用Jenkins很难串起来,使用开源套件难以和现有的系统有机结合。所以,研发了自研平台,今年将这套体系推到阿里云上供阿里云的用户使用。RDC和内部平台的核心是一致的,不同的是内部平台有自己的机房,有自己的资源管理方式。但是上云之后,数据库、负载均衡等基础设施都会使用阿里云上的。

持续交付中有三种角色:开发人员,把需求实现,保证其可以交付上线;开发负责人,团队建设,保证团队在指定时间内完成高优先级的任务;运维人员,负责发布和运维。

开发人员:日常开发feature

bc85171c3dc6c3595b4cbc157a93012ad2d01a48

开发人员开发一个新的feature需要上图所示的工作。首先需要拉分支来开发新的功能,然后为分支配置持续集成,开发测试完成之后需要合入集成分支。此时需要从主干分支拉取release分支出来,把需要合并的一个或者多个分支合并进入。解决冲突的过程中需要对集成分支上部署的版本进行测试,需要为新的分支创建集成分支的配置。测试完成后使用集成分支进行发布到预发环境、线上。最后,再将其合并回主干。实际上,开发人员需要花时间做的只有开发测试和在集成分支上测试,上图中除了这两个步骤,其他步骤都是可以自动化完成的。

bfb8fefaa6c0f83b0c10f66223367e5ddc2ccad0

这样流程的好处是能够灵活掌握开发节奏。分支模式不是真正的数据集成,因为一定要等到所有的东西都集成到一个分支之后才知道是不是可行。即使在一个fetch分支上测试好也不代表集成分支上也能工作。主干模式是指随时想做任何变动,则调用某个方法的所有地方都需要做一个改变,主干模式做这件事情比较简单,结果可以立即看出,而分支模式则需要集成之后才知道结果。RDC提供了自由模式(一种主干模式)、分支模式、Git flow模式(所有的用户都在develop分支上开发,进入之前需要code review来实现)。

6218adcdc449da4004e61b425fe5e95abb9f686f

自由模式和develop模式有几个环节:版本制作、日常、预发、灰度。日常和预发之间有一个按钮用于在制作好之后预发布。

开发人员:可怕的发布

首先,我们需要有充分的测试,包括单元测试、API测试、阶段检查。此外,发明了另外一种测试方法,截取线上的一部分流量进行存储,在预发环境进行回放,看结果是否一致。人工的代码review更多涉及到代码架构,所以希望每次的代码提交都能经过代码review过程。灵活的发布工具也很重要,规模小的时候怎么发布都可以,但是当规模比较大时灵活发布很重要。发布方式目前支持分批发布,分布策略可以根据分组、机房来分。

21acb74dbe8ed219da3e483f6e9ba85f78990a34

发布一定要是可靠的,一定是可重复的,一个包发100次一定是同样的结果。如果发布之后发现线上有问题,则需要回滚代码,只需要把发了的部分进行回滚即可。回滚包括发布中回滚和发布后回滚。所有的过程一定要减少人为的介入,让这些都自动化的发生,所以希望有一个流程和卡点,如果不满足此刻要求就不能继续往下走。

发布的问题总结来说:使用单元测试,功能测试,接口测试等多层保护;通过系统卡点的方式保证上述测试真的被执行,且真正有效;提供灵活,可靠的发布方案;提供灵活,可靠的回滚方案;使用和线上的环境进行测试(预发)。

开发人员:定位问题

定位问题花费的时间往往比编码还要多,问题可能出现在测试环境,也可能出现在线上。线上版本和上次发布之间有哪些变化?这些都要考虑清楚才能进一步定位问题。

4f1377ebc91ae016acac4860035c1bfa3559ae66

平台有统一的流程将这些问题记录下来:创建分支,提交集成区,提交发布。在这样整个标准的变更流程中,会把很多信息记录下来。上图中的列表是一个发布的列表,包括发布内容、发布结果、操作人、版本详情等内容。所有信息都可以帮助追溯之前发生的事情,并且进行问题解决。

运维人员:线上变更充满危险

最初的时候采用了脚本批量执行,后来使用了声明式的基线管理,但是还是难以避免线上的基线被人手工篡改,而且不能保证基线变更失败后如何处理。2016年开始,阿里使用Docker容器镜像,问题变得迎刃而解,因为每次部署的都是新的镜像,环境保证一模一样。Docker化基础设施是在阿里内部的,而RDC在阿里云上怎么办?我们会去对接阿里云上的基础设施、已有服务,使用其整个服务来对接前面RDC的研发。

7c5538b02fd0fbe900bbe5d752f306dfec9e1022

RDC发源于阿里内部,扎根于阿里云,后面所有的生态建设都会围绕阿里云已有的生态来建设。上图中,企业入驻RDC企业级研发协同平台后就可以享受整个阿里云的基础设施。EDAS也是阿里云正在做的事情,ECS、SLB等资源也可以通过RDC进行整合。

2eac59a87504830c01baeea7329a88c453c1d7a1

RDC是一个SaaS产品,不是私有云产品。由于没有部署到机房里,所以它可能访问不到VPC里面的机器,但是有时却有这样的需求。有时需要做预发、API测试,这些需要在公网里进行,但是公网却没有访问权限。目前的一个可行方案是,可以通过代理享受更多的服务。

39a7c0fc221ebedb395cba426eb5d5c03dcbe3ca

上图中蓝色部分是已经发布上线的。构建和发布目前是基于关联ECS并且自定义脚本的方式来发布。EDAS和容器正在对接。

9ed264905a385f9d87eb5817294f8382ac34020c

这样,开发过程的角色会有一定的转变。企业的现状是,有开发会做本地、测试环境的编码和日常测试,有专门的测试在QA环境进行功能验证,有运维去专门管理staging环境和正式环境。DevOps是开发自运维,运维人员做好了很好的平台,开发可以进行测试,可以从发布流水线收到反馈,自己去编写测试用例,做新应用的发布上线,做日常功能的开发、线上变更、扩容缩容、线上故障处理。

总结

RDC 的理念是自动化一切可以自动化的事情,提供尽量多的模式,有安全、灵活的发布流程,使用工具流程来保证开发团队按照最佳实践工作,对开发过程的数据提供足够的可追溯性,依托阿里云基础设施,助力企业的Devops。
相关文章
|
消息中间件 弹性计算 Cloud Native
估值百亿独角兽爱学习教育集团:通过云原生实践与时间赛跑
iiMedia Research(艾媒咨询)数据显示,在线教育市场规模保持逐年增长的态势,2019年在线教育市场规模已突破4000亿元。在疫情的助推下,在线教育加速渗透,市场空间有望进一步打开,预计2020年中国在线教育市场规模将达到4538亿元。
3201 11
估值百亿独角兽爱学习教育集团:通过云原生实践与时间赛跑
|
Cloud Native 新金融 云计算
阿里云刘伟光:3.5万字拆解核心系统转型实战
核心从业者怎样寻得“出路”?
877 0
阿里云刘伟光:3.5万字拆解核心系统转型实战
|
人工智能 前端开发 安全
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
254 0
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
|
新零售 人工智能 供应链
产业互联网两年记:落地的最佳实践是什么?
产业互联网两年记:落地的最佳实践是什么?
184 0
产业互联网两年记:落地的最佳实践是什么?
|
设计模式 移动开发 运维
QCon演讲实录|淘系前台业务“秒交付”研发模式的革新探索
淘系业务高速发展,淘宝、天猫、淘宝直播、淘宝特价版、闲鱼等平台上业务不断创新,同时也对技术效率提出了新的更高的要求。而当前移动互联网客户端服务端分离的研发模式,存在跨技术栈+多端协同的挑战,也面临一些基础的技术和业务能力无法有效的复用的问题。在此背景下,结合云基础设施的演进,结合端技术的发展,淘系技术探索实践了业务云端一体化的研发,围绕应用架构的跨代升级,构建新的研发过程、研发体验,在研发期、交付期、运行期重新定义了前台业务的研发模式。
QCon演讲实录|淘系前台业务“秒交付”研发模式的革新探索
|
运维 前端开发 JavaScript
2020年末:浅谈阿里前端的多样化
舒文:本文,简单分享几个前端领域在阿里的应用场景,附带一些我对前端技术领域的一些思考,期待能够和众多的行业同仁们有交流互动的机会。
1423 0
2020年末:浅谈阿里前端的多样化
|
运维 监控 Cloud Native
国货之光业务增长背后的技术支持 - 完美日记的云原生实践
利用 ACK 容器快速弹性扩缩容,节约服务器成本 50% 以上。
国货之光业务增长背后的技术支持 - 完美日记的云原生实践
|
新零售 机器学习/深度学习 人工智能
联合阿里,百胜软件持续新零售的中台“进化”
“零售企业原来的信息化建设重视的是企业流程的管理,今天则更注重数据,更注重运营。技术价值也进行了重构,从数字化转向了数智化。”
联合阿里,百胜软件持续新零售的中台“进化”