前端灰度发布落地方案
一个大型的前端工程在发布时,都会采取灰度策略。
很多时候,不可能全量放出一个新的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版
本,影响的用户范围比拟小
前端灰度发布落地方案 来自淘豆网m.daumloan.com转载请标明出处.