對於剛接觸大規模系統開發的工程師來說,當我們要把新功能上線時,最害怕的往往不是開發過程,而是上線那一刻的那個 Enter 鍵。如果新功能導致系統崩潰,傳統的做法是趕快回滾(Rollback)版本,但這需要重新部署,耗時且風險高。為了降低這種風險,業界引入了 Feature Flag(功能開關)的概念。
簡單來說,Feature Flag 就像是在程式碼中加入一個 if-else 判斷式。我們將新功能包裹在開關中,即使程式碼已經部署到生產環境,只要開關是關閉的,使用者就看不到新功能。當我們確認環境穩定後,可以透過後台管理介面將開關打開,而不需要重新部署任何程式碼。
傳統的 Feature Flag 運作方式通常是透過呼叫一個外部的 SaaS 服務(例如 LaunchDarkly 或 Split.io)。當你的應用程式執行到判斷式時,會發送一個網路請求給這些服務,詢問目前這個使用者是否應該看到新功能。但這種做法在追求極致效能的現代應用中,會產生一個致命問題:網路往返時間(Network Round-trip Time)。每次判斷都要多跑一次網路請求,會增加系統延遲。
為了徹底解決這個痛點,Cloudflare 推出了名為 Flagship 的服務。Flagship 的核心邏輯是將 Feature Flag 的評估過程直接內建在邊緣平台(Edge Platform)中。對於使用 Cloudflare Workers(一種在邊緣節點執行的伺服器端 JavaScript 執行環境)的開發者來說,Flagship 透過原生綁定(Native Binding),讓功能開關的判定直接在邊緣節點本地完成,不再需要跨網路請求外部 API。這讓評估時間縮短至亞毫秒級(Sub-millisecond),幾乎消除了延遲。
在技術實作上,Flagship 支援多樣化的配置。開關的值不僅可以是簡單的對錯(Boolean),還可以是字串、數字甚至是完整的 JSON 物件。這意味著你可以用它來動態調整 UI 主題、配置 API 版本,或是針對不同使用者群體推送不同的設定檔。此外,它支援百分比逐步推送(Percentage-based Rollouts),讓你可以先讓 1% 的使用者試用新功能,確認沒問題後再逐步擴大到 10% 或 100%,這比傳統的藍綠部署(Blue-Green Deployment)更靈活,因為你是在同一個版本中控制行為,而非在不同版本間切換流量。
值得關注的是,Flagship 是基於 OpenFeature 標準構建的。OpenFeature 是由 CNCF(雲端原生計算基金會)推動的一個開放標準,它提供了一套統一的 API 介面。為什麼這個標準很重要?因為它解決了供應商鎖定(Vendor Lock-in)的問題。如果你的程式碼是依照 OpenFeature 標準撰寫的,未來你想從 Cloudflare 遷移到其他支援該標準的服務商時,不需要大規模修改應用程式的業務邏輯代碼,只需要更換底層的 Provider 即可。
對於開發 AI 代理(AI Agents)或低延遲應用的工程師來說,這種邊緣原生(Edge-Native)的開關服務至關重要。AI 生成的程式碼迭代速度極快,需要更快速的實驗與回饋循環,而零延遲的功能切換能讓開發團隊在不影響使用者體驗的前提下,進行高頻率的 A/B 測試與功能驗證。
總結來說,Feature Flag 正在從一種昂貴的專屬 SaaS 服務,轉化為像快取(Caching)或日誌(Logging)一樣的基礎設施。隨著 Cloudflare 等平台將其原生化,開發者將能以更低成本、更高效率的方式,實踐持續交付(Continuous Delivery)的目標。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。