资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,灰度发布经验交流,2013,年,10,月,提纲,灰度发布介绍,灰度发布部署的几种方式,手机营业厅客户端灰度发布实现方式说明,架构预设、应用方案讨论,统一门户客户端,承载,60,项,全网业务,,,提供,42,项,服务功能,覆盖,三,大,智能终端平台,更新,12,个,版本,适配,17,套,主流机型,HD,版,WP,版,Android/,iOS,版,采用统一规划思路实现版本快速迭代,灰度发布的定义,定义,在传统软件产品发布过程中(例如微软的,Windows 7,的发布过程中),一般都会经历,Pre-Alpha,、,Alpha,、,Beta,、,Release candidate,(,RC,)、,RTM,、,General availability or General Acceptance,(,GA,)等几个阶段(参考,Software release life cycle,)。可以看出传统软件的发布阶段是从公司内部,-,外部小范围测试,外部大范围测试,-,正式发布,涉及的用户数也是逐步放量的过程。在互联网产品的发布过程中也较多采用此种发布方式:产品的发布过程不是一蹴而就,而是逐步扩大使用用户的范围,从公司内部用户,-,忠诚度较高的种子用户,-,更大范围的活跃用户,-,所有用户。在此过程中,产品团队根据用户的反馈及时完善产品相关功能。此种发布方式,按照中国特色的叫法被冠以“灰度发布”、“灰度放量”、“分流发布”。关于“灰度发布”叫法的来源无从考察。只不过按照中国传统哲学的说法来看,很符合中国人中庸的思维模式:自然界所有的事物总是以对称、互补、和谐的形式存在,例如黑与白、阴与阳、正与负、福与祸。在二元对立的元素间存在相互过渡的阶段,所谓“祸兮福所倚,福兮祸所伏”。具体到黑与白,在非黑即白中间还有中间色,灰色。于是出现了很多关于灰色的说法:灰盒测试,灰色管理(极力推荐任正非:管理的灰度),灰色收入,灰色地带等等。因此对于灰度发布实际上就是从不发布,然后逐渐过渡到正式发布的一个过程。,灰度发布的作用,作用,及早获得用户的,意见反馈,,完善产品功能,提升产品质量;,让用户参与,产品测试,,加强与用户互动;,降低产品升级所影响的,用户范围,;,降低技术上风险,在放出小范围后去发现、,解决问题,。,灰度发布实施要素,实施灰度发布,主要需要考虑策略和部署两个层面的问题。,分支策略设计,分支策略组合,整体策略,部署实施方案设计,部署实施,灰度发布的一般步骤,定义目标,选定策略,:包括用户规模、发布频率、功能覆盖度、回滚策略、运营策略、新旧系统部署策略等,筛选用户,:包括用户特征、用户数量、用户常用功能、用户范围等,部署系统,:部署新系统、部署用户行为分析系统(,web analytics,)、设定分流规则、运营数据分析、分流规则微调,发布总结,:用户行为分析报告、用户问卷调查、社会化媒体意见收集、形成产品功能改进列表,产品完善,新一轮,灰度发布,或完整发布,提纲,灰度发布介绍,灰度发布部署的几种方式,手机营业厅客户端灰度发布实现方式说明,架构预设、应用方案讨论,负载均衡层部署方式,可以只配置一套软负载,硬负载将所有请求都转发到这套软负载上,由软负载代替硬负载实现负载均衡功能;甚至可以去掉硬负载,直接将互联网上请求由从防火墙映射到软负载上,。,并发较少的系统,并发较,多,的系统,部署了两套软负载,每个软负载都能控制到下面所有,Web,服务器节点。且因为之前使用硬负载进行了分流,每个软负载只分摊,50%,的请求,降低了性能要求。另外,这种部署方式的容灾能力也要更好。,不分并发,这种,场景可建立在,由于特殊的网络条件,服务器,A,、,B,与,C,、,D,在不同机房且无法互通,这时可以将两套软负载分别部署在两个机房。(还需建立在硬负载能分别到达两边机房的基础上)。,使用会话保持分流技术实现无缝升级,无缝,升级,是指在升级过程中,不中断用户的业务连续性。直接进行服务节点的切换,用户不仅会丢失会话信息,还有可能因新节点上流程的变更导致业务无法继续进行。因此建议采取对旧会话用户,采用会话保持分流,技术来实现无缝,升级,。,具体步骤如下,:,在,软负载中采用会话保持技术,对用户的请求进行会话管理。,当判断请求为新会话时,根据规则校验、负载均衡策略,获取,Web,服务节点的物理访问地址。按照该地址进行数据转发,并同时将地址保存在会话中。,当判断请求为旧会话时,直接从会话取出物理访问地址,以此进行数据转发。,一个会话永远只对应一个物理访问地址。不会因分流规则变化而跳转到其它,Web,服务,节点。,灰度环境独立于现网环境部署方案,灰度环境独立于现网环境部署,是指在原有的生产环境服务器以外,单独安排若干台服务器,并在这些单独的服务器上部署灰度版本的应用,提供给内部或外部的体验用户使用。灰度体验完成后,再对生产使用的服务器进行常规方式的部署发布。,这种部署方案下的灰度环境类似于传统测试中使用的预发布环境,但不同的是此环境和生产环境共用正式生产环境的后台接口和数据库数据等,。,这种,部署方式有以下优点,:,1,、对现网系统的改造较小,灰度环境成本要求较低,较容易实现。,2,、对原有的常规发布方式的改变较小,在灰度体验完成后,还是可以使用原有的发布方式对公众生产环境进行发布。,但是这种部署方式也有一些局限性:,1,、在灰度体验结束后,无法平滑地将灰度版本推广到全网用户,还是需要对公众环境进行一次传统的中断业务的发布。,2,、由于是独立于公众生产环境的环境,一般提供的服务器的数量和性能会比较有限,因此相关的灰度体验用户的数量也会有所限制,无法进行大面积用户的灰度体验。,优缺点,部署方式,A,、,B,双路分服务器部署方案,A,、,B,双路分服务器部署就是将原有的生产使用服务器进行分组,分成,A,、,B,两个集群,然后在不同的服务器集群上分别部署公众环境和灰度环境,然后通过负载均衡层(前置的软件或者硬件负载均衡器)根据相关规则,将目标用户分别引导至不同的服务器集群,。,A,、,B,双路分服务器部署有以下的优点:,1,、灰度环境和现网环境从物理上隔离开,如果灰度版本存在影响系统性能的问题时,比如内存泄露、程序死循环耗尽,CPU,资源等故障,不会对现网环境产生影响。,2,、减少操作复杂度,在同一台服务器上只有一个版本的应用,在执行进程停止、更新、启动等操作时,不容易出现误操作。,但同时该部署方式也有以下的不足:,对资源投入要求大;,如集群不能保证自身可用性,则将影响现网或者灰度环境的正常使用。,另外按照公众服务器与灰度服务器的使用范围及切换方式,可以按比例分配资源或对等分配资源,这两种方式各有优缺点:,1,)按比例分配资源:公众服务器承载大部分用户访问量,灰度服务器仅对小量用户提供服务。需要向全网用户开放使用时,再对公众服务器进行传统的上线操作。此类型对硬件要求不高,成本也较低,但是当灰度服务发布至公共服务器时会有短暂的业务停顿。,2,)对等分配资源:公众服务器与灰度服务器资源对等,灰度服务器资源也可以承载全量用户。公众环境的用户全面平滑引导到灰度环境,完成灰度环境全面公众化。如果后续有新的发布上线,原公众环境又变为灰度环境,两套环境可以互相交替使用,方便版本迭代发布;如果后续没有新的上线,就将原公众版本的应用也同步成灰度版本,共同向全网提供服务。这种方式的优点是两套环境可以互相平滑切换,快速发布和回退,不中断业务。缺点是需要较多的资源,且灰度发布过程中,会有部分资源闲置。,灰度环境和现网环境在相同服务器上,部署,灰度环境和现网环境部署在相同的服务器上,使用不同的,端口,也通过负载均衡层实现分流。,。,此种方案有如下的优点:,1,、能充分利用硬件资源,在硬件资源不足的情况下也能进行灰度发布的部署,且不影响正常生产;,2,、对用户业务请求实现访问资源上的隔离;,3,、便于系统的上线活动,两个版本彼此影响较小;,4,、根据各版本访问量的大小,可以灵活分配系统资源。,5,、单一集群或者单机出现硬件问题,灰度环境及公众环境依然承载能力受到影响,但依然具备一定的可用性,。,但是这种方案也有一些缺点:,1,、多个系统运行在同一套服务器上,在系统忙时易出现抢占资源的情况;,2,、一旦出现硬件问题,将会影响所有版本。,优缺点,部署方式,应用层灰度发布中的版本管理,灰度版本管理,是集中管理所有系统的,升级包文件、版本号,、以实现应用程序,的升级、备份、回退,。功能上主要分为三大部分,包括:,版本备份,校验等基础功能、应用版本管理和灰度版本的分析与查询,。灰度版本管理的关键部分在于,在版本升级和回退时,不能影响到用户端业务的连续性。,提纲,灰度发布介绍,灰度发布部署的几种方式,手机营业厅客户端灰度发布实现方式说明,架构预设、应用方案讨论,统一门户客户端手机营业厅原有灰度发布系统架构,版本数量,开发,版本发布,平台维护,难度,/,成本,统一门户客户端的应用支撑平台只有一个版本,需要同时支撑,4,个正式版本和多个不同功能的灰度版本。,这,一版本发布架构对于应用支撑平台的版本兼容性及可靠性要求非常高。而且会随着版本数量持续增加开发,版本,发布和,平台维护的,成本,。,统一门户客户端手机营业厅,-,硬件拓普现状,客户端灰度发布方案系统架构优化,-,进程独立,实现正式版本与灰度版本的相对独立,在保障正式版本服务支撑质量的前提下,满足灰度版本发布的需要。,实现正式版本之间的相互独立。,通过独立的端口通信,实现进程与版本的一 一对应。,客户端灰度发布(多版本并行发布)架构,针对客户端各版本,在应用支撑平台建立与其一对一关联的服务端版本。应用支撑平台侧的服务端版本,通过端口独立实现进程独立,每个独立进程对一个或多个客户端版本提供服务支撑,某个版本发生的问题不会对其它版本产生影响。,客户端灰度发布(多版本并行发布)架构详解,单一进程和端口实现对所有灰度版本的支撑,以控制灰度版本对系统的影响。,一个客户端版本对应一个应用支撑平台服务端版本。服务端版本间通过进程和端口实现相互独立。,由于已经上线正式运行,且用户规模较大,因此仍然采用原有的服务端程序,以保证服务支撑的连续性和稳定性。,历史版本,当前版本,灰度版本,客户端灰度发布优化,-,系统改造点说明,统一门户客户端的灰度发布系统改造过程,涉,及贯穿到软、硬件系统的各个方面,这包括:,防,火,墙,负载均衡设备,WAS,接入,服,务,业务支撑服务,数据库,/BOSS,接口服务,客户端灰度发布优化,-,系统改造点说明,-,接入部分,所,有灰度版本使用,9053,端口,以和正式版本实现端口通信的相互独立。通过部署配置新的,WAS,应用服务程序,为灰度测试版本提供接入服务。此灰度版本的应用服务程序独立与原有正式版的接入服务程序,拥有独立的进程、端口、响应资源和线程池,。,已,上线版本不做任何变动,仍通过端口,9043,接入,原有,WAS,应用服务器,01,为其提供接入服务,客户端灰度发布优化,-,系统改造点说明,-,接入服务器,同一宿主机对外提供多个服务。,客户端灰度发布优化,-,系统改造点说明,3,新客户端版本发布时,需建立与之对应的应用支撑平台版,本,应,用支撑平台发布新版本时,,需要部,署包括与新版本对应的所有服务端程,序,这包括:接入,部,分,/,业,务应用服务程序、,BOSS,接口服务程序、数据库服务程序;,配置管理的工作量增加;与客户端有多个版本一样,服,务端程序编译时,,需要以,应用支撑平台版本号予以区,分,同时需要建立多个开发分支;,规,划版本策略,适时停用旧有,/,灰,度,版本。,提纲,灰度发布介绍,灰度发布部署的几种方式,手机营业厅客户端灰度发布实现方式说明,架构预设、应用方案讨论,架构预设,自动化部署,(发布),业务网管,核心调度模块,(软负载),灰度发布管理门户,灰度发布引擎,接口集成,统一登录,灰度发布系统,(Multi-phase Release Syst
展开阅读全文