黑暗啟動

2020 年 4 月 29 日

黑暗啟動功能表示採用新的或已變更的後端行為,並從現有的使用者呼叫它,而使用者無法得知它已被呼叫。在公開宣布新功能之前,這麼做是為了評估對系統的額外負載和效能影響。

這方面的範例可能是將交叉銷售建議新增到零售網站的結帳流程中。(例如,如果我購買烤麵包機,我顯然也想購買一套新的牛排刀。)找出建議顯然會增加系統的某些時間和負載,減慢結帳流程,甚至可能減慢整個網站。黑暗啟動讓我們在向公眾發布功能之前評估此影響。我們從使用基石介面開始建立新功能,整合到程式碼的生產版本中,但沒有使用者介面,因此使用者無法得知它在那裡。但在新增基石之前,我們會修改結帳流程,以呼叫建議引擎,就像我們在生產環境中所做的那樣,但不會在使用者介面中顯示結果。這樣一來,建議會執行它在發布時所做的所有工作,但沒有人會看到它正在執行。如果我們使用功能旗標,我們可以輕鬆地在生產環境中開啟和關閉建議,因此如果我們看到效能受到令人擔憂的影響,我們會在任何人真正注意到之前將其關閉。然後,我們可以繼續調整建議引擎,直到其效能可以接受為止,屆時我們終於可以新增基石,並向全世界揭露此功能

黑暗啟動也可以讓重新實作的功能並行執行。舊程式碼和新程式碼都可以被呼叫,並檢查其結果,以查看新演算法是否有變更,但只會將一個答案傳回介面。

暗黑啟動最適合用於增強現有使用者互動的流程,而不是使用者選擇執行的動作。若要測試取決於使用者選擇的項目,金絲雀釋出是最佳途徑。

然而,自此術語首次出現以來,其用法一直受到語意擴散的影響。因此,我聽過有人使用「暗黑啟動」來表示金絲雀釋出,或部分釋出策略的其他變體。