UStackUStack
OpenFlags icon

OpenFlags

OpenFlags 是开源自托管功能开关系统,支持渐进式交付;应用 SDK 本地评估,配套简单控制平面实现安全定向发布。

OpenFlags

OpenFlags 是什么?

OpenFlags 是开源自托管功能开关系统,支持渐进式交付和更安全的发布,帮助团队推送变更。它提供控制平面和 SDK,让应用代码本地评估开关,无需为每次变更重新部署。

OpenFlags 的核心目的是支持发布流程——如百分比发布、定向激活和受控启用——同时保持开关评估低延迟,并在团队基础设施内保留运行时所有权。

主要特性

  • 自托管开关基础设施:将开关存储、定向逻辑和运行时所有权保留在自家基础设施中,而非依赖托管平台。
  • 通过类型化 SDK 本地评估:在应用中使用 TypeScript 包评估开关,通过代码本地运行实现快速、可预测的检查。
  • 渐进式交付控制:向受控用户群(包括百分比发布)逐步推出功能,而非一次性对所有人启用变更。
  • 精细化定向:基于特定用户定向激活开关,让不同群体获得不同的功能行为。
  • 专注表面的 REST 控制平面:使用简单 REST API 管理开关控制平面,作为 monorepo 的一部分,包含服务器、仪表板、SDK 和文档的专用角色。
  • 开关和发布管理仪表板:基于 React 的管理 UI,帮助团队切换发布并管理发布配置。

如何使用 OpenFlags

  1. 从文档和快速开始入手:使用提供的文档在你的环境中设置服务器、仪表板和 SDK。
  2. 在应用中创建 SDK 客户端:使用你的 API URL、项目标识符和用户标识符初始化客户端。
  3. 在应用代码中本地评估开关:使用 SDK 检查开关是否启用(例如调用 flags.isEnabled("flag_name")),并条件渲染行为。
  4. 从控制平面管理发布配置:使用仪表板和/或 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 设计或本地评估处理上存在不同权衡。
OpenFlags | UStack