環境與專案
FortressFlag 裡的一切由兩個軸線組織:專案依程式碼庫或產品切分你的 flag,環境依部署階段切分每個 flag 的值。你的 dev 版應用程式從 dev 環境讀取 new-checkout;你已出貨的應用程式從 production 讀取它。同一個 flag,各自獨立的值。
環境由你自己定義
Section titled “環境由你自己定義”每個組織一開始都有三個預先建立的環境(dev、staging 和 production),你可以建立、重新命名和刪除自己的環境,最多 12 個。一個 QA 環境、一對依區域區分的環境、一個 canary,怎麼部署就怎麼配。
管理環境(建立、重新命名、重新分類、刪除)是 Admin 及以上的動作。只要還有有效的 SDK 金鑰對著某個環境進行驗證,你就無法刪除它:你的應用程式還在讀取的環境,不能從它們腳下被抽走。
正式環境類別而非名稱
Section titled “正式環境類別而非名稱”讓一個環境成為「正式環境」的不是它的名稱,而是正式環境類別:一個由 Admin 勾選的核取方塊。這個類別才是驅動各項保護的東西:
- 在那裡寫入 flag 需要更高的角色。Developer 整天都能自由切換非正式環境;正式環境類別的環境只接受來自 Admin 和 Owner 的直接寫入。(Developer 仍然可以提議正式環境變更,交由隊友核准,見角色與安全。)
- 儀表板會把它標示得很醒目,這樣就沒有人會把正式環境誤當成 staging 來編輯。
因為它是類別而不是名稱,你可以有好幾個正式環境類別的環境(例如 production-eu 和 production-us),每一個都得到同樣的保護。而把一個環境標為正式環境類別,本身就是一個會被稽核的 Admin 等級動作,因為它改變了誰可以在那裡寫入。
Flag、區隔的目標和 SDK 金鑰都住在專案裡。一個組織可以有很多個:一個應用程式一個、一個團隊一個,隨你怎麼切分工作。每個專案有自己的 flag 清單、自己的封存區和自己的 SDK 金鑰。
專案存取是一份允許清單
Section titled “專案存取是一份允許清單”Admin 和 Owner 看得到每一個專案。Viewer 和 Developer 只看得到被授予的專案:存取是一份依成員設定的允許清單,由 Admin 管理。
有個細節值得先知道,免得日後被嚇到:一個成員沒被授予的專案,回應起來就像它不存在一樣,是找不到,而不是「沒有權限」的錯誤。成員無法列舉他們沒被給予的專案名稱。如果隊友說某個專案不見了,先檢查他們的存取授權,再想其他的。