📦 开源仓库:learn_feature_flag · 纯 Python 标准库 · 学习演示项目
新功能上线最怕什么?出了问题想回滚,却发现要重新构建、重新部署。Feature Flag(功能开关)把「部署代码」和「发布功能」拆开:新功能先裹在开关后面上线,再按白名单 → 按比例 → 全量的节奏逐步放量;出问题把开关一关就完成回滚,不用重新部署。
核心思路
if flags.is_on("new_checkout", user):
new_checkout(user) # 新流程
else:
old_checkout(user) # 旧流程
- 白名单:先只对指定用户开放
- 按比例放量:基于 hash 的稳定分配,同一个用户每次命中结果一致
- Kill switch:出事把开关一拨,立刻全量回到旧流程
为什么值得学
- 安全上线:新代码渐进式触达真实用户
- 秒级回滚:关开关就行,不碰部署
- 部署与发布解耦:代码可以「暗发布」,想什么时候开就什么时候开
演示场景
- 开关关 → 所有人走旧流程
- 白名单 → 只有 alice 走新流程
- 50% 放量 → 一半用户(hash 决定)进新流程
运行
python run_all.py
纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_feature_flag,欢迎 Star 与提 Issue。