應用程式生命週期管理工具的功能旗標可讓您控管應用程式內的功能可用性和行為,不必部署新程式碼或變更基礎架構。
您可以使用標記,主要有兩種方式:
- 整合:將旗標管理功能與 App Lifecycle Manager 管理的應用程式部署作業配對。
- 獨立:即使應用程式基礎架構是在其他地方管理,您也可以獨立使用強大的標記系統,方法是將系統元件建模為 App Lifecycle Manager 單元。
功能旗標會與 App Lifecycle Manager 的核心概念 (例如單元和推出) 整合。這樣一來,您就能一併管理旗標設定和應用程式基礎架構 (整合式方法)。
如果您不熟悉 App Lifecycle Manager 單元或推出程序,請先參閱主要的 App Lifecycle Manager 總覽。
為什麼要使用 App Lifecycle Manager 功能旗標?
使用 App Lifecycle Manager 實作功能旗標時,可為 SaaS 開發和營運生命週期帶來多項優點:
- 將功能發布與程式碼部署作業分開:將新程式碼部署至實際工作環境,但預設停用功能。為特定使用者啟用功能,或在準備就緒時逐步推出,降低大規模部署的相關風險。
- 提升安全性、速度和穩定性:
- 向少數使用者發布測試功能 (初期測試版本)。
- 使用 App Lifecycle Manager 的推出功能逐步推出,盡量減少潛在問題的影響。
- 啟用允許清單和租戶自訂功能:為可代表租戶、服務或環境的單位開啟或關閉功能。
- 簡化復原作業:停用功能旗標通常比部署應用程式的先前版本更快,干擾也較少。這個工作流程可讓您停用有問題的功能,而不必回溯二進位檔。
- 集中管理旗標設定:管理功能旗標定義,並使用這些定義設定推出作業。這個工作流程可讓您建立功能旗標推出作業,變更應用程式的功能,進而確保運作可靠性。
App Lifecycle Manager 功能旗標的運作方式
在 App Lifecycle Manager 中使用功能標記時,主要會涉及兩個層面:管理平面 (定義及推出標記) 和資料平面 (在應用程式中存取標記值)。
整合 App Lifecycle Manager 的使用情形
如果您使用 App Lifecycle Manager 管理應用程式部署作業 (例如使用 Terraform 藍圖部署基礎架構):
- 定義旗標:在 App Lifecycle Manager 中建立功能旗標資源,指定專屬
Flag key(例如enable-new-dashboard),並將其與單元種類建立關聯。支援布林值標記。 - 佈建旗標變更:您必須啟動 App Lifecycle Manager 推出作業,旗標變更 (建立或更新) 才會生效。這樣一來,您就能使用批次、監督和安全檢查等功能,部署旗標。 推出作業會更新與目標單元相關聯的旗標設定。
- 在應用程式中存取旗標:應用程式程式碼會在佈建的單元 (例如 Cloud Run 或 Google Kubernetes Engine 上的容器) 中執行,並使用透過
flagd提供者設定的 OpenFeature SDK。這個供應商會連線至saasconfig.googleapis.com服務端點。 使用 App Lifecycle Manager 將必要單元 ID 插入應用程式環境,讓 SDK 擷取該特定單元的正確旗標值。
這項深度整合功能可讓您一併管理功能和基礎架構的生命週期。如需實務範例,請參閱部署功能旗標快速入門導覽課程。
管理層
您可透過管理層定義及控管旗標。您可以使用 Google Cloud 控制台、gcloud CLI 或 App Lifecycle Manager API 執行下列操作:
- 建立或更新旗標:如要定義旗標,請指定
Flag key、將其與單位種類建立關聯,並設定旗標的類型和預設值。 - 建立推出作業:您可啟動推出作業,將旗標變更 (建立或更新) 分發至屬於旗標單元種類的目標單元。推出作業可確保系統根據您設定的政策,安全且可靠地套用變更。
資料層
應用程式程式碼會與資料平面互動,以取用旗標值:
- OpenFeature SDK:將與供應商無關的 OpenFeature SDK 整合至應用程式。
flagd提供者:設定 OpenFeature SDK,以便使用flagd提供者。- 設定:將
flagd供應商指向 App Lifecycle Manager 功能旗標服務端點:saasconfig.googleapis.com:443。 - 指定目標:提供
provider_id來識別旗標設定。這個值通常對應於 App Lifecycle Manager 單元的完整資源名稱 (例如projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID)。 - 驗證:供應商會使用應用程式預設憑證 (ADC),安全地驗證對 Google Cloud 服務端點的要求。使用的服務帳戶需要
roles/saasconfig.viewerIdentity and Access Management 角色。 - 評估旗標:在程式碼中使用標準 OpenFeature 方法 (
client.get_boolean_value(...)) 檢查旗標值。供應商會負責從服務中擷取最新推出的設定。
App Lifecycle Manager 提供參考實作和範例,可與資料層整合:
功能旗標值類型
App Lifecycle Manager 功能旗標支援的布林值評估不只標準的開啟/關閉狀態,您可以定義 STRING、INTEGER 或 DOUBLE 值的旗標,控制複雜的作業變數,例如執行階段門檻、主題參數或設定限制。
與布林值旗標不同,您需要在建立期間明確定義非布林值旗標,才能決定可能的傳回類型範圍。
字串旗標
字串標記會將設定 ID 直接傳遞至已連線的用戶端。
gcloud beta app-lifecycle-manager flags create "feature-mode" \
--key="feature-mode" \
--flag-value-type=STRING \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
--evaluation-spec='{"defaultTarget": "standard"}'
整數標記
整數標記會控管確切的數值限制和酬載界線。
gcloud beta app-lifecycle-manager flags create "max-retry-count" \
--key="max-retry-count" \
--flag-value-type=INTEGER \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
--evaluation-spec='{"defaultTarget": "low"}'
雙旗
雙旗標可提供高精確度值,用於機率門檻或浮點參數。
gcloud beta app-lifecycle-manager flags create "sampling-rate" \
--key="sampling-rate" \
--flag-value-type=DOUBLE \
--location="global" \
--unit-kind="demo-test-unitkind" \
--variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
--evaluation-spec='{"defaultTarget": "minimal"}'
使用推出作業佈建功能旗標
App Lifecycle Manager 會使用推出功能,佈建功能旗標更新,確保大規模變更或更新安全無虞。
如果沒有階段性推出功能,即使只是稍微變更標記設定 (例如為 1% 的使用者啟用功能),也會立即套用至所有應用程式例項。如果這項功能導致回歸,整個基礎架構可能會同時發生問題。這項全域傳播作業會大幅提高服務大範圍受影響的風險。
應用程式生命週期管理工具會逐步控管旗標變更的發布作業,以降低這類風險,並限制任何無法預料問題的潛在範圍。
功能旗標集
功能旗標集會將多個功能旗標歸為一組,方便您以單一邏輯資源的形式管理這些旗標。這項功能有助於發布需要協調多個旗標的功能。
資訊清單
您可以使用 JSON 檔案,透過資訊清單定義及管理功能旗標。您可以將這些定義推送至 App Lifecycle Manager API,或提取現有設定,為應用程式產生型別安全存取子。
複雜指定目標
您可以運用一般運算語言 (CEL),根據使用者或要求屬性建立精細的指定目標規則,精確控管哪些使用者能看到哪些功能。
多租戶架構
如果您將目標旗標設為特定單位或單位群組 (使用標籤或租戶),即可搭配 App Lifecycle Manager 使用多租戶部署。您也可以在租戶機群中逐步推出。
分配功能旗標
定義分配比例 (例如實驗或基準),並使用流量分配執行測試或隨機推出。
後續步驟
- 請參閱部署功能旗標快速入門導覽課程,瞭解如何將旗標與 App Lifecycle Manager 管理的部署作業整合。
- 如果您是這個平台的新手,請先參閱主要的 App Lifecycle Manager 總覽。