OpenFlags 是什么?
OpenFlags 是开源自托管功能开关系统,支持渐进式交付和更安全的发布,帮助团队推送变更。它提供控制平面和 SDK,让应用代码本地评估开关,无需为每次变更重新部署。
OpenFlags 的核心目的是支持发布流程——如百分比发布、定向激活和受控启用——同时保持开关评估低延迟,并在团队基础设施内保留运行时所有权。
主要特性
- 自托管开关基础设施:将开关存储、定向逻辑和运行时所有权保留在自家基础设施中,而非依赖托管平台。
- 通过类型化 SDK 本地评估:在应用中使用 TypeScript 包评估开关,通过代码本地运行实现快速、可预测的检查。
- 渐进式交付控制:向受控用户群(包括百分比发布)逐步推出功能,而非一次性对所有人启用变更。
- 精细化定向:基于特定用户定向激活开关,让不同群体获得不同的功能行为。
- 专注表面的 REST 控制平面:使用简单 REST API 管理开关控制平面,作为 monorepo 的一部分,包含服务器、仪表板、SDK 和文档的专用角色。
- 开关和发布管理仪表板:基于 React 的管理 UI,帮助团队切换发布并管理发布配置。
如何使用 OpenFlags
- 从文档和快速开始入手:使用提供的文档在你的环境中设置服务器、仪表板和 SDK。
- 在应用中创建 SDK 客户端:使用你的 API URL、项目标识符和用户标识符初始化客户端。
- 在应用代码中本地评估开关:使用 SDK 检查开关是否启用(例如调用
flags.isEnabled("flag_name")),并条件渲染行为。 - 从控制平面管理发布配置:使用仪表板和/或 REST API 定义发布行为,如基于百分比的启用或定向激活。
使用场景
- 渐进启用新用户体验:将 UI 或流程置于功能开关后,仅对受控用户子集启用,而非一次性对所有流量。
- 针对用户运行 Beta 测试:通过用户标识符定向激活功能,比较群体行为,同时保持其余用户不受影响。
- 通过百分比发布减少发布影响范围:逐步推出变更(例如 35% 用户),无需重建或重新部署应用即可调整发布行为。
- 在性能敏感应用中保持开关检查快速:在应用中本地评估,确保功能检查低延迟且运行时一致。
- 在自家基础设施内维护所有权:使用自托管控制平面,将运维和审计表面保留在你的技术栈中。
常见问题
-
OpenFlags 是自托管还是云托管? OpenFlags Cloud 即将推出,当前产品定位为开源自托管。
-
功能评估如何工作? OpenFlags 支持使用 SDK 的本地评估,开关检查发生在应用代码内,而非每次评估都需要远程调用。
-
支持哪些发布模式? 站点提到渐进式交付,包括百分比发布、精细化定向和受控启用。
-
OpenFlags 包含哪些组件? monorepo 包括服务器(Bun 驱动的控制平面 API)、基于 React 的仪表板、TypeScript SDK 包和文档。
-
SDK 针对哪些语言/框架设计? 站点强调 JavaScript 优先的 SDK 使用,并提到支持 Bun、React、Next.js、Vite 和 Node 应用。
替代方案
- 托管功能开关平台 (SaaS):这些通常将开关管理集中于托管服务。与 OpenFlags 的自托管控制平面相比,评估和运营控制可能更依赖供应商平台。
- 基于基础设施即代码的发布(无专用开关评估):团队可通过部署、路由或配置开关近似实现渐进式交付。这与 OpenFlags 不同,后者提供专为本地评估设计的开关 SDK 工作流。
- 架构不同的开源功能开关服务:其他开源系统可能提供类似概念(开关、定向、仪表板),但在 SDK 方法、控制平面 API 设计或本地评估处理上存在不同权衡。
替代品
Rectify
Rectify是一体化SaaS运营平台,集监控、分析、支持、路线图、更新日志与智能体管理于一处,通过对话在可视化工作区协同控制。
GitBoard
GitBoard 是原生 macOS 菜单栏应用,可查看 GitHub Projects 看板,按状态筛选、搜索问题,并在工作流中创建或分配任务。
Studio CLI
使用 Studio CLI 在终端控制 WordPress Studio:管理本地站点,创建/更新/删除 WordPress.com 预览,并进行身份认证。
PingPulse
PingPulse 通过实时交接追踪与工作流可视化,监控生产 AI 代理流程;支持配置告警,定位失败、卡住与乱序执行。
KIT.domains
KIT.domains自动化域名监控与SSL跟踪,为管理客户域名的团队提供到期预警和DNS完整性变更提醒,并集中查看续费日历。
Sleek Analytics
Sleek Analytics 轻量且注重隐私的实时分析:查看访客来源、浏览页面和停留时长,了解站点当前互动。