阿里巴巴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 架构师
倒计时 3 天!5 大议题带您探索微服务和云原生大模型的落地经验(北京站)
倒计时 3 天!5 大议题带您探索微服务和云原生大模型的落地经验(北京站)
|
数据采集 数据挖掘 BI
数据研发“新人”如何快速落地?
本文将以“如何快速落地”、“快速适应新环境”为出发点,探讨数据研发“新人”如何快速了解公司业务、领域模型和业务系统,然后快速高效的推进相关工作,赢得合作伙伴的信任和支持。
41024 36
|
Cloud Native Devops
2022 阿里云研发效能峰会来啦,云原生 DevOps 分论坛抢先看
2022 阿里云研发效能峰会来啦,云原生 DevOps 分论坛抢先看
2022 阿里云研发效能峰会来啦,云原生 DevOps 分论坛抢先看
|
人工智能 前端开发 安全
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
267 0
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
|
新零售 人工智能 供应链
产业互联网两年记:落地的最佳实践是什么?
产业互联网两年记:落地的最佳实践是什么?
194 0
产业互联网两年记:落地的最佳实践是什么?
|
新零售 达摩院 Cloud Native
云原生时代的“精益实践”:企业效能提升10倍“杀手锏”
1月15日,国内知名“精益产品开发”研究和实践者、阿里云云效资深技术专家何勉在阿里云《云计算情报局》线上直播栏目中,分享其对研发新模式的最新思考,提出“下一代精益开发方法”,助力企业在研发效能上提升10倍。 同时,他认为,云原生是效能提升的巨大契机,赋予了精益实践天然的优势,是精益实践的最佳助力。
1942 0
云原生时代的“精益实践”:企业效能提升10倍“杀手锏”
|
移动开发 监控 前端开发
高德前端这五年:动态化技术的研发历程和全面落地实践
本文将分享随着业务快速增长高德前端的技术发展历程,总结动态化技术的落地实践,以及高德前端未来的发展方向。
高德前端这五年:动态化技术的研发历程和全面落地实践
|
人工智能 Kubernetes Cloud Native
开发者如何get技术趋势,实现成长破局?——MVP线上峰会
使众人行,你需要拥有的管理思维;数据库那些事儿,讲讲创新实战;AIoT新技术新场景实战,说干就干!未来已来!云原生战“疫”实操!
965 0
开发者如何get技术趋势,实现成长破局?——MVP线上峰会
|
Dart Serverless iOS开发
QCon演讲|闲鱼从零到千万DAU的应用架构演进
导读:业务架构要随着业务发展做相应的演进,继而支撑业务的快速发展。本文主要通过介绍闲鱼从零发展到千万级DAU应用的不同阶段的业务特点、核心问题以及针对性的架构演进,来阐述业务架构的演进思路与心得。
6629 0
QCon演讲|闲鱼从零到千万DAU的应用架构演进
|
机器学习/深度学习 安全 物联网
8月1日云栖精选夜读:独家:阿里巴巴DevOps落地实践玩法及思路解析
7月26日,阿里巴巴持续集成持续交付平台——云效,在深圳阿里中心举办了一场“业务为王时代,DevOps怎么玩?”主题沙龙,由阿里巴巴技术专家从云效新概念的提出,到阿里巴巴DevOps落地实践、到企业如何利用云效进行高效研发、再到阿里巴巴CI/CD之分层自动化,帮助参会者从理念、策略、实践、效果等方面,全面深入的了解DevOps玩法,以及具体如何落地的思路。
6328 0