文档介绍:前端灰度发布落地方案
一个大型的前端工程在发布时,都会采取灰度策略。
很多时候,不可能全量放出一个新的feature,可能带来 的风险很大,一般都会先进行部门灰度,然后再20%, 40%灰度,直到全量发布。
那到底灰度是啥,它的原理是 •ctx1: ctf request href, •mssmI: cache '缆不'’・WH,IT
> »
后台实现代码
〃这里只是演示,直接通过链接获取用户id,实际场景应该是通过获取用
户会话去判别用户相关信息
const uuid = ;
//可以进入灰度版本的uuid,在数据库存放
const uuids =「123','456':7891
//redis中存放了的的用户id,如果清理了 redis,那么意味着,取消用户的 版本标识,这里简单的用数组存放,实际应用场景根据各自的业务信息考 虑是否需要多集合存放
const redisUuids =[{id: '789; version: 'beta'}, {id: '333; version: Stable1}J;
复制代码
上面代码逻辑是当uuid为123或者456或者789的时 候就命中灰度规那么,就进入beta版本redis中已经存
放了 uuid为789和333的用户了效果:
C 0 localhost:8000/?uuid=1234:::应用 Q Good writing 已好站臼盟大巴教程巴工具巴前端早早聊&&活动
stable版本:看到意味着你没有命中了灰度规那么,进入了正式版本G 玲 C 0 localhost:8000/?uuid=123
:::应用 Q Good writing 匕好站 巴盟大 巴教程 日工具 日前
beta版本:看到意味着你命中了灰度规那么,进入了灰度版本
灰度问题处理操作
问:如果在上线后灰度版本出现严重的问题,需要紧 急回退操作答:直接后台关闭灰度功能,清除redis,
结束用户的登录会话(实际是清除客户端cookie操作) 另外,搜索公众号顶级科技后台回复“API接口”,获 取一份惊喜礼包。
问:需要指定某个用户进入某个版本答:后台修改
redis信息,结束用户的登录会话
问:指定工程中某个页面才启用灰度答:可以在前端 sdk中处理相关逻辑,把相关的页面路径作为名单给 前端识别(sdk最好动态引入,sdk放在cdn上)
代码
彩蛋代码
公司后端是用了 java去实现的,熊猫在这里为了方便 大家更好的去理解整个流程,也用node给大家实现了 一遍,有兴趣的小伙伴去可以直接去看代码 github( s://github /wujianrong/gray-released),大体的 设计思路是一样的
注意点:为了方便运行查看演示,熊猫是通过docker compose 来跑的, 在有
docker 和 docker compose 的前 提下,可以直接通过命令跑起例如
docker-compose build
docker-compose up -d
localhost:8000
复制代码
近况
最近是处于一个离职的交接期,在离职期间,熊猫在 目前的公司是一个前端组的小头目,在提出离职一周 后,优先开始做了管理岗相关的交接,在做完管理方 面的交接后呢,迅速就被OOXX 了,哈哈哈哈,面对 一些人的态度也开始转变,心里拔凉拔凉的,原本排 了计划给团队做一些基建的优化和几个课题的提供, 也许并不需要熊猫太操心了,关掉了之前的博客站, 转到了在掘金这边学****也试着更新一些文章,有一些 心态上的调节,也更多的心思回归到技术的同时也好 好整理一下自己,接下来做好离职前的技术工程交接 就散场了,感谢给过熊猫点赞支持的靓仔靓女们。
结语
方案千千万,选择自己合适的就好,演示代码中熊猫 只是简单的写了一些逻辑性的代码,并不是真正可放 到工程的逻辑,具体还是要结合实际的工程场景调 整,前端sdk和java局部的代码熊猫没有放出来,是 因为该方案已经在公司实行过的,不便放出,大家可 以根据大致的思路来编写,有疑问欢迎来讨论,文中 有错的地方或者有更好的方案还望各位大佬不吝赐 教。
什么是灰度发布
将某个功能灰度发布(逐渐放量)给特定线上人群, 防止新功能全量上线带来的风险
上白话文,某工程当前处于L0版本,但是想更新一 ,L1版本内测没有问题了,但是由于改动 了关键的功能,想要实现只给一局部线上用户使用体
验,看看反应。这个时候线上就需要一局部用户继续
,,
到反应的问题严重到影响上线了,那么就回退L0版
本,影响的用户范围比拟小