F5灰度发布解决方案-应用实例

在这篇文章中,我将会通过一个实际案例来介绍一下F5灰度发布解决方案的具体应用场景。
01X 用户为什么要使用灰度发布
在金融科技化的时代,灰度发布可以让应用更快地进行迭代,以更高的频率发布到市场,同时还能减轻运维人员的负担,并且给用户带来更好的体验。X用户提供的服务已经覆盖了企业和个人的方方面面,新功能的发布、第三方接口的变更、问题的修复都会需要进行应用的升级。但是对于运维部门来说,应用变更总是伴随着风险和压力。X用户每次互联网应用更新均需要在23:00停机后才能进行,经常在凌晨才能完成上线,每次上线投产后由于时间窗口较晚、验证时间较短,有些场景需要隔日验证,无法对所有场景进行覆盖,无法保证互联网应用的稳定性。同时对于业务部门和开发部门来说,新的产品和功能是否能被大部分用户接受,也存在一定的风险。
灰度发布,就是解决以上矛盾的一个最好方法。
02X 用户灰度发布建设实践
实现灰度发布最重要的两个问题是灰度策略如何制定,以及灰度策略如何执行。
灰度策略其实就是决定什么样的请求应该路由到我们的灰度版本上来,以什么为依据。在上一篇文章中我们提过通常有以下几种策略:基于地域、基于用户信息、基于交易类型。
综合考虑后,X用户最终采用根据用户进行灰度的策略,根据不同应用的特点设置用户白名单,基于用户白名单进行灰度发布。
灰度策略执行方面,X用户针对互联网应用已经建设了部署平台,另外X用户所有的互联网应用都通过F5负载均衡器进行交付。基于X用户现状,决定采用部署平台和负载均衡配合的方式实现灰度发布。在负载均衡设备上预设好灰度标志,由部署平台通过F5的API控制负载均衡的灰度标志,当进入灰度状态时,负载均衡设会将白名单用户的交易请求分发至灰度版本应用服务器。
灰度标志
是由部署平台调用负载均衡设备的API并存入负载均衡设备的表内,根据预定义,不同的灰度标志状态代表负载均衡设备执行不同的分流策略。
灰度标志状态有4种状态:
客户端+资源包模式(手机APP类应用)
总体方案如下图:
主要分为以下几个步骤:
·生成白名单:工作人员从应用系统后管导入白名单,白名单存入业务系统,此时白名单并未生效。
·部署平台执行灰度发布操作:在灰度发布之前调用F5接口,更新F5灰度标志为C,此时阻止新交易发送至新版本所在服务器。
·部署平台开始发布新版本服务,发布完成后部署平台调用F5接口更新F5灰度标志为B,并向业务系统发送接口,更新白名单为可用。
·客户端发送版本查询交易,服务方根据白名单返回对应版本信息以及灰度特征码COOKIE至请求方。
·F5根据客户端请求交易中的灰度特征码对交易进行路由。
·部署平台执行灰度同步操作:在灰度同步之前调用F5接口,更新F5灰度标志为D,此时新交易全部发送至灰度版所在服务器;部署平台开始同步新版本服务,同步·完成后部署平台调用F5接口更新F5灰度标志为A,此时F5正常分配路由。
·撤销灰度版本:部署平台执行灰度撤销操作,在灰度撤销之前调用F5接口,更新F5灰度标志为C,此时新交易全部发送至常规版所在服务器;部署平台开始撤销新版本服务,撤销完成后部署平台调用F5接口更新F5灰度标志为A,此时F5正常分配路由。
·无客户端模式(Web浏览器类应用)
·总体方案如下图:
无客户端模式与客户端模式步骤基本相同,区别只是在于第四步,无客户端模式会在用户进行登录交易时进行白名单匹配。
03F5 配置
以F5的视角看,X用户灰度发布的整体逻辑如下:
灰度标示保存在F5的data_group中,部署平台通过REST API控制F5设备上的灰度标示。
F5的分发逻辑由以下iRule实现:
修改F5灰度状态标示data_group的API示例如下:
API路径:
https://x.x.x.x/mgmt/tm/ltm/data-group/internal/hd_data_group
API方法:PATCH
API Body:
04 结语
本文通过一个具体案例像大家介绍了F5灰度发布解决方案的实际应用场景,希望能对大家有所启发,如果您的企业或组织也正在或准备使用灰度发布技术,可以参考本文所提到的案例,也欢迎您联系F5,进行更多的交流和探讨。