概述
Feature Flag System 用于实现功能开关(toggles),将“部署”与“发布”解耦,从而支持逐步放量、A/B 测试、金丝雀发布,并提供紧急情况下的关闭开关。
适用场景
资料中列出的适用场景包括:
- 逐步功能放量
- A/B 测试与实验
- 金丝雀部署
- 面向特定用户的 Beta 功能
- 紧急关闭开关(kill switches)
- 基于主干的开发
- 暗发布(dark launching)
- 运维类开关(如维护模式)
- 面向特定用户的功能
快速开始
资料给出了一个最小可用示例,定义了几组核心接口:
FlagConfig:功能开关配置,包含key、enabled、description、可选的rules与variants,以及createdAt、updatedAt。FlagRule:规则定义,type可为user | percentage | attribute | datetime,operator可为in | equals | contains | gt | lt | between,并包含可选的attribute与values。FlagVariant:变体定义,包含key、weight、value。EvaluationContext:评估上下文,示例中给出userId字段(完整实现需参见参考指南)。
参考指南
详细实现位于 references/ 目录中,包含以下指南:
- Feature Flag Service (TypeScript):TypeScript 实现的功能开关服务
- React Hook for Feature Flags:用于功能开关的 React Hook
- Feature Flag with Analytics:带分析统计的功能开关
- LaunchDarkly-Style SDK:类似 LaunchDarkly 风格的 SDK
- Admin UI for Feature Flags:功能开关管理后台 UI
最佳实践
建议做(DO)
- 使用描述性的开关名称
- 记录开关的用途与生命周期
- 实现逐步放量
- 追踪开关的评估次数
- 定期清理旧开关
- 使用功能开关进行实验
- 对关键功能实现关闭开关
- 测试开启与关闭两种状态
- 使用一致性哈希以实现稳定的放量
- 为非技术用户提供管理后台 UI
不建议做(DON'T)
- 将开关用于永久性配置
- 让旧开关累积技术债务
- 跳过开关清理
- 让开关粒度过细
- 在各处硬编码开关检查
- 跳过分析与监控
限制
资料未提供具体安装命令、代码仓库结构、托管方式、收费标准或价格信息,这些内容暂未提供。