阿里巴巴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。
相关文章
8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇
在产研全链路流程上,协同最大的目标就是团队信息的透明化,即在清晰目标的指引下进行团队信息透明的日常研发工作,助力项目/产品成功发布。基于此,研发过程是否行之有效就成为我们关注的另一重点要素。通常「研发过程」是指:代码到制品再到部署上线的全链路,这个过程是持续集成的重中之重。
755 0
8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇
2021研发效能实践案例征集大赛
由阿里云云效主办的2021研发效能实践案例征集大赛正式启动,专门为企业CTO、研发(TL、一线研发人员)、运维、产品人准备的实践案例展示平台,期待各位报名参与;
1449 1
2021研发效能实践案例征集大赛
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
290 0
深度解读陈明永最新演讲,OPPO 100亿研发投入背后的战略推演
给你机会挑战双十一实时计算,你敢来吗?【阿里中间件性能挑战赛来袭】
由阿里中间件与天池平台联合举办的“阿里中间件性能挑战赛”,大赛不仅为选手们开放双十一实时交易真实场景,还提供了丰厚奖金、诱人激励,欢迎社会人才加入挑战。大赛主要考察选手的网络编程能力和性能调优能力。我们希望通过大赛吸引和沉淀优秀的编程高手,加强内外部技术人员的交流与碰撞,并让技术发声。
5485 11
阿里巴巴研发效能数据知多少
持续快速交付价值的能力是研发效能的核心定义。
4887 0
阿里巴巴研发效能数据知多少
阿里巴巴敏捷研发的探索与实践
今天你敏捷了吗?敏捷产品开发提倡快速迭代、小步快跑,以便更灵活地应对变化,目前逐渐演变为行业潮流。阿里巴巴内部也在不断进行敏捷实践。
8524 9
【云周刊】第128期:支撑千亿营收背后秘密——首届阿里巴巴研发效能嘉年华
如何保护企业代码资产,释放程序员“债务”压力?怎样向“老板拍脑袋提需求”和“PD歪歪”说NO?6月29日,首届阿里巴巴研发效能嘉年华来啦!语音识别真的比肩人类了?听听阿里iDST初敏怎么说...更多精彩技术资讯,尽在云周刊!
14120 0
集大成之作 | 《尽在双11:阿里巴巴技术演进与超越》重磅预售!(文末有福利)
该书是迄今唯一由阿里巴巴集团官方出品、全面阐述双 11 八年以来在技术和商业上演进和创新历程的书籍。它以双11为着眼点,系统地阐述了阿里巴巴重要阶段的技术进步历程,通过阿里领先的交易、支付、物流系统,以及强大的计算平台、海量数据、智能算法和一系列的方案案例,揭秘世界奇迹双11背后的故事。
6567 0
专访阿里巴巴林伟:三项世界级挑战背后的思考、实践和经验
今年双11,阿里云大数据平台扛住了巨大的技术挑战,主要体现在实时数据处理技术以及超大规模的离线数据处理两方面,来自阿里巴巴的资深技术专家林伟将为大家介绍双11前中后大数据计算平台对于整个双11的成功提供了哪些不可或缺的支持。
15294 0
2135亿背后的双11项目协作怎么玩?
2018天猫双11已经收官,2135亿元的成交额再度刷新纪录,这是一场阿里巴巴经济体的深度协作。 在这个大协作项目中,项目协作难题难以想象:如何保证众多部门、百个核心产品、千个垂直项目、几千人的的高效协作?如何在双11之前,让所有的产品、技术、项目准备就绪? 这背后,离不开阿里巴巴一站式企业协同研发平台——云效的支持。
2571 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等