

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 功能旗標
<a name="feature-flags"></a>

特徵標記可以在微型前端中實作，以促進在多個環境中測試和發佈特徵的協調。特徵標記技術包含集中在布林值型存放區中的決策，以及根據該決策驅動行為。它通常用於無提示地傳播變更，這些變更可以保持隱藏，直到特定時刻，同時為否則會被封鎖的新功能解鎖新版本，從而降低團隊速度。

考慮團隊在特定日期啟動的微型前端功能的範例。此功能已準備就緒，但需要與獨立發行的另一個微型前端的變更一起發行。封鎖兩個微型前端的發行將被視為反模式，並在部署時增加風險。

反之，團隊可以在兩者在轉譯時間使用的資料庫中建立布林值特徵標記 （可能是透過對共用特徵標記 API 的 HTTP 呼叫）。團隊甚至可以在測試環境中發佈變更，其中布林值設定為 `True`，以在啟動至生產環境之前驗證跨專案功能和非功能需求。

另一個使用特徵標記的範例是實作機制，透過 `QueryString` 參數設定特定值或將特定測試字串儲存在 Cookie 中來覆寫標記的值。產品擁有者可以在啟動日期之前迭代功能，而不會封鎖其他功能的發行或錯誤修正。在指定日期，變更資料庫上的旗標值會立即在生產環境中顯示變更，而不需要跨團隊協調版本。功能發佈後，開發團隊會清除程式碼以移除舊行為。

其他使用案例包括釋出以內容為基礎的特徵標記系統。例如，如果單一網站以多種語言為客戶提供服務，則此功能可能僅適用於特定國家/地區的訪客。特徵標記系統可以依賴於傳送國家/地區內容的消費者 （例如，透過使用 `Accept-Language` HTTP 標頭），並且根據該內容，可能會有不同的行為。

雖然功能旗標是促進開發人員和產品擁有者之間協作的強大工具，但它們依賴人們的盡職調查，以避免程式碼庫大幅降級。在多個功能上保持啟用中的旗標可能會在疑難排解問題時增加複雜性、增加 JavaScript 套件大小，最終累積技術負債。常見的緩解活動包括下列項目：
+ 單元測試旗標後方的每個功能，以降低錯誤的機率，這可能會在執行測試的自動化 CI/CD 管道中引入較長的回饋迴圈
+ 建立工具來測量程式碼變更期間套件大小的增加，這可以在程式碼檢閱期間緩解

AWS 提供多種解決方案，可讓您使用 Amazon CloudFront 函數或 Lambda@Edge 在邊緣最佳化 A/B 測試。這些方法有助於降低整合解決方案或您用來宣告假設的現有 SaaS 產品的複雜性。如需詳細資訊，請參閱 [A/B 測試](https://aws.amazon.com/developer/application-security-performance/articles/a-b-testing/)。