免重新发布:用Unleash功能开关五步走完一次灰度上线
【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash
🚨 周五晚上八点,生产环境的新支付流程对一部分用户开始报错。老流程是:回滚代码、重新打包、重新部署,然后盯着流水线跑完。而有了 Unleash,你只需要在管理页把一个开关关掉,流量立刻回到旧逻辑。Unleash 是一个开源的功能管理平台:功能开关让你把代码部署和功能生效解耦——代码先上生产,生不生效由开关说了算。如果你的团队还在靠改配置重新发版,往下看。
一行代码:给你的代码加上功能开关
功能开关就像墙上的电灯开关:线路一直在,合上开关灯才亮。Unleash 里的开关就是 feature flag,代码里只需要一次判断:
if (unleash.isEnabled("AwesomeFeature")) { // 走新功能 } else { // 走旧逻辑 }新旧两条路径在同一个版本里共存。SDK 会在后台定期从 Unleash 服务器同步开关配置,你的代码只负责"读状态",不负责"定状态"。说白了,出问题时你的动作不是重新部署,而是点一下。
这张图就是 Unleash 的四个核心概念。项目(Project)用来归组开关并控制权限;环境(Environment)代表开发周期的阶段,比如开发、预发、生产;一个功能开关在每个环境里都有独立配置;激活策略(Activation Strategy)则决定这个环境里"到底谁看到开关是开的"。开关解决了"开不开"的问题,那怎么从 0 平滑走到 100?
从 0 到 100:一个开关的灰度发布之旅
典型路线是:开发环境全开,生产环境先关着,然后逐步调激活策略——先给选定的客户,再放到 20% 用户,最后到 100%。每一步都只是改策略参数,一次发布都不用。
用发布模板把灰度步骤标准化
Unleash 更进一步,提供了发布模板:提前定义好里程碑("选定客户 → 20% 用户 → 100% 用户"),把模板应用到某个开关后,第一个里程碑会自动启动,下一个里程碑点"start"再继续。灰度的节奏不再靠人记。
让仪表盘自动盯住过期开关
开关攒多了,谁来管谁还在被使用?仪表盘上的"last seen"列会显示每个开关最后一次被评估的时间,Unleash 会自动把长期没人碰的开关标记为 stale(过期)。这是内置的技术债清理器,删代码时心里有底。
开关可以随时拨,但很多人会先问一句:我的用户数据会不会被传到服务器上?
本地评估:为什么用户数据不过你的服务器
Unleash 的答案是"本地评估":SDK 拉回来的只是一份开关配置清单,"这个用户符不符合条件"这件事,是在你自己的应用进程里算出来的。终端用户的数据不会离开你的应用,顺手就绕开了 GDPR 和 Schrems II 那类合规问题。
看架构就清楚了:管理界面负责改配置,Unleash 服务器负责配置管理,应用里的后端/前端 SDK 在后台同步配置后本地求值。前端流量特别大时,还可以在中间加一层 Unleash Edge 节点做缓冲,主服务器就不会被打爆。
15 个官方 SDK,基本每种语言都有
后端有 Java、Go、Node.js、Python、Rust,前端有 React、Vue、iOS、Android,一共 15 个官方 SDK,另有十几个社区版。你的服务用什么语言,判断语法都是前面那一行。
配置是在管理界面里改的,这块界面长什么样?👀
不只是开关列表:管理界面与工具集成
功能列表一览:哪些开关开着、属于哪个环境、是什么类型(Release、Experiment、Permission),以及最后被谁看见过,一屏看完。
把开关接进你习惯的工具
实际场景里,产品同学想在 Jira 工单上看某个开关的状态。Jira 集成会在工单里直接挂一个 flag 面板,各环境的开关状态当场就能拨。Slack、Teams 有现成的通知集成;想接别的系统,用 webhook 或者 API 全自动编排——官方口径是"everything can be automated, no exceptions"。
看到这里如果还是纸上谈兵,那就直接跑起来。
三步在本地跑起Unleash
需要 git 和 docker:
git clone https://gitcode.com/GitHub_Trending/un/unleash cd unleash docker compose up -d浏览器打开 localhost:4242,用默认的 admin / unleash4all 登录,上面的仪表盘就摆在面前了。想再往下钻,可以看后端 REST API 设计说明,数据库是 PostgreSQL,表结构演进都沉淀在 src/migrations/ 里。
先拉下来跑个 docker compose up,十分钟就能看到仪表盘,然后把你的第一个开关拨一下试试。
【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考