UStackUStack
OpenFlags icon

OpenFlags

OpenFlags 是開源、可自架設的功能旗標系統,支援逐步交付;App SDK 可本地評估,控制平面提供安全、精準的發佈。

OpenFlags

OpenFlags 是什麼?

OpenFlags 是一個開源、可自架設的功能旗標系統,設計用來幫助團隊以逐步交付的方式推出變更,並實現更安全的發佈。它提供控制平面和 SDK,讓應用程式程式碼能夠本地評估旗標,並在每次變更時無需重新部署即可啟用功能行為。

OpenFlags 的核心目的是支援發佈工作流程,例如百分比發佈、精準啟用和受控啟動,同時保持旗標評估低延遲,並將執行期擁有權保留在團隊基礎設施內。

主要功能

  • 自架設旗標基礎設施:將旗標儲存、目標邏輯和執行期擁有權保留在自家基礎設施中,而非依賴託管平台。
  • 透過類型化 SDK 進行本地評估:在 App 中使用 TypeScript 套件評估旗標,透過在程式碼中本地執行評估,實現快速、可預測的檢查。
  • 逐步交付控制:將功能發佈至受控區段(包含百分比發佈),而非一次對所有人啟用變更。
  • 精細目標定位:根據特定使用者目標啟用旗標,讓不同群組獲得不同的功能行為。
  • 專注表面的 REST 控制平面:使用簡單的 REST API 管理旗標控制平面,設計為單一儲存庫的一部分,包含伺服器、儀表板、SDK 和文件專屬角色。
  • 切換與發佈管理的儀表板:基於 React 的管理 UI,協助團隊切換發佈並管理發佈設定。

如何使用 OpenFlags

  1. 從文件與快速入門開始:使用提供的文件在您的環境中設定伺服器、儀表板和 SDK。
  2. 在 App 中建立 SDK 用戶端:使用您的 API URL、專案識別碼和使用者識別碼初始化用戶端。
  3. 在應用程式程式碼中本地評估旗標:使用 SDK 檢查旗標是否啟用(例如呼叫 flags.isEnabled("flag_name")),並條件式呈現行為。
  4. 從控制平面管理發佈設定:使用儀表板和/或 REST API 定義發佈行為,例如百分比啟用或精準啟用。

使用案例

  • 逐步啟用新使用者體驗:將 UI 或工作流程置於功能旗標後方,並僅對受控使用者子集啟用,而非一次對所有流量。
  • 針對特定使用者執行 Beta 測試:透過目標使用者識別碼為特定群組啟用功能,讓您比較群組間行為,同時不影響其餘使用者。
  • 以百分比發佈縮小發佈影響範圍:逐步發佈變更(例如 35% 使用者),並調整發佈行為,無需重建或重新部署應用程式。
  • 在效能敏感 App 中保持旗標檢查快速:在 App 中使用本地評估,讓功能檢查在執行期維持低延遲且一致。
  • 維持基礎設施內的擁有權:使用自架設控制平面,將營運和稽核表面保持在自家技術堆疊中。

常見問題

  • OpenFlags 是自架設還是雲端託管? OpenFlags Cloud 描述為即將推出,目前產品定位為開源且自架設。

  • 功能評估如何運作? OpenFlags 支援使用其 SDK 進行 本地評估,因此旗標檢查發生在您的 App 程式碼內,而非每次評估都需要遠端呼叫。

  • 支援哪些發佈模式? 網站提及支援逐步交付,包括百分比發佈、精細目標定位和受控啟用。

  • OpenFlags 包含哪些元件? 單一儲存庫包含伺服器(Bun 驅動的控制平面 API)、基於 React 的儀表板、TypeScript SDK 套件,以及文件。

  • SDK 適用於哪些語言/框架? 網站強調 JavaScript 優先的 SDK 使用,並提及支援 Bun、React、Next.js、Vite 和 Node 應用程式。

替代方案

  • 託管功能旗標平台 (SaaS):這些通常將旗標管理集中於託管服務中。相較於 OpenFlags 的自架設控制平面,評估與營運主導權可能更依賴供應商平台。
  • 基於基礎設施即程式碼的發佈 (無專用旗標評估):團隊可利用部署、路由或設定開關來近似逐步交付。這與 OpenFlags 不同之處在於未提供專為本地評估設計的功能旗標 SDK 工作流程。
  • 架構不同的開源功能旗標服務:其他開源系統可能提供類似概念 (旗標、目標對象、儀表板),但在 SDK 方法、控制平面 API 設計或本地評估處理上存在不同取捨。
OpenFlags | UStack