
用Java語言開發出新一代廣告推薦系統後,Pinterest工程團隊面臨下一階段挑戰,如何有效率的驗證新系統各方面表現能夠取代舊系統,並快速轉換到新廣告系統。
廣告業務是Pinterest最大經濟命脈。盡早淘汰高齡8歲的舊系統Mohawk、不影響現行廣告業務,同時壓低驗證、系統並行、轉換過程中的人力與IT資源成本,都是需要顧及的目標。
這個過程不只是邊開飛機邊換引擎,還要換上一臺截然不同的型號的引擎。這不只會需要更加嚴謹、詳細的驗證過程,也會帶來許多挑戰,及需要避免的衝擊。
新舊系統轉換挑戰多
新廣告推薦系統轉換,Pinterest主要想降低兩大類衝擊。首先,新系統上線前,採取舊系統並行。這會大幅增加Pinterest雲端資源需求。他們希望盡可能降低並行運作期間的費時、並提升期間測試和轉換效率,來壓低支出。
Pinterest還希望降低對上百名工程師的干擾。系統並行運作期間,廣告業務仍照常進行,如果要增減功能,需要同時在新舊系統部署,造成雙倍開發和維運負擔。
另外,驗證實驗的設計不良,也可能牽涉到不必要的系統模組,及負責的工程師。
新舊廣告系統的技術特性,也為驗證作業帶來一系列技術挑戰。
舊系統Mohawk與新系統AdMixer,使用不同語言撰寫,數據處理也模式不同。這意味著,工程團隊測試時,不能直接了當的比較新舊系統指標,還需要先打造一套數據轉換機制、設定共同比較標準,並同時監控新舊系統與數據轉換流程,才能確保驗證結果可信,程序較為麻煩。
另一個挑戰是,廣告推薦系統對70個以上的外部系統有依賴性。這些外部系統的狀態變動、隨機性及系統異常,都會影響廣告系統運作。
這意味著,就算Mohawk和AdMixer都如預期運作,仍可能產生不同輸出,影響驗證結果。驗證時,還須同時考量到有相關外部系統,是否會影響輸出?如何影響?並根據影響情況,來設計驗證程序。
Pinterest工程團隊必須先針對前述眾多挑戰和需求來規畫因應方法,以增加實際執行時效率。
AdMixer驗證期,循序漸進分三步驟
在驗證新廣告推薦系統表現的階段,Pinterest採取新舊系統並行模式。這個期間,廣告業務需要如常進行,自然也會持續在舊系統Mohawk中新增功能模組。不過,當工程人員開發新廣告功能,只會先於熟悉可靠的Mohawk上開發,直到AdMixer各方面表現大致與Mohawk相同,才會轉移到AdMixer重新開發。這是Pinterest工程團隊降低人力負擔與雲端支出的做法。
Pinterest還將驗證作業細分為3步驟:先個別驗證模組功能正常,再整體驗證系統指標達標,最後,將新舊系統同時投入生產環境,來驗證新系統業務指標,也能與舊系統相當。
這3步驟盡可能限縮驗證規模,直到工程團隊十足把握,才進入影響範圍更廣的下一階段。尤其最後一步,會直接影響到核心廣告業務收入及雲端成本支出,須兼顧謹慎與高效率,宛如小步伐的急行軍。
步驟一:模組化驗證系統輸出值的正確性
驗證AdMixer的第一步驟從個別模組開始。他們以Mohawk對應功能的模組為指標,同樣資料輸入新舊系統模組,新系統模組輸出值若與舊系統相同,說明模組效果如設計預期。
驗收新舊系統輸出值一致時,Pinterest採取事後驗收的方法,先儲存許多筆輸入輸出舊系統Mohawk的數據,再輸入同一批數據給新系統AdMixer,與Mohawk先前輸出的數據相互比對。(圖片來源/Pinterest)
具體做法是,先紀錄Mohawk系統的輸入與輸出值,再用AdMixer執行相同輸入值,對比輸出值。這種事後驗收法彈性較高,卻會面臨模組輸出值受到外部系統影響的挑戰。
Pinterest因應方法是,測試模組產出數據的流程是否一致。相同輸入值,模組需產生同樣的數據檢索請求;接收同樣的請求,就要回應相同的輸出值。
反之,當外部系統對驗證對象模組的輸出情況沒有影響,或者影響不大,即能直接比對新舊系統對應模組的輸出值。多次輸入、輸出的紀錄比對結果,相符程度需要高於99.9%
步驟二:端到端測試系統面指標符合預期水準
Pinterest工程團隊確認每一個模組的功能如預期運作後,才會進入第二步,驗證AdMixer整體系統指標,是否與Mohawk相同。
他們採取端對端的暗流量測試法(Dark traffic testing),複製實際生產環境的流量,輸入到AdMixer系統,來測試整體系統運作情況。
期間,Pinterest工程團隊會監控對外部請求的成功率、系統延遲等系統指標。不只如此,還會觀察系統紀錄和緩存等流程,是否會影響廣告服務平臺與其他下游系統之間的關係,例如廣告成效追蹤系統等。
調整系統指標到符合標準後,Pinterest將AdMixer投入生產環境,與Mohawk進行A/B測試。此時,AdMixer進入實戰階段,即時接收部分正式環境的網路流量,從接收廣告請求開始,一路處理各種資料存取、推薦、即時競價到實際呈現廣告給使用者。
Pinterest將新舊系統驗證測試作業分為3步驟,先測試系統輸出值正確,再確保系統效能指標不輸舊系統,最後才上線到生產環境中A/B測試,驗證新系統的業務指標也能與舊系統相符。(圖片來源/Pinterest)
步驟三:投入實際廣告業務,測試新系統業務面指標不輸舊系統
第三步驟,上線實戰的A/B測試期間,Pinterest會比較新舊系統的廣告業務面,以及和即時服務相關的指標,例如廣告營收、廣告表現、用戶反應、實際服務延遲等。
他們還會監控兩個系統中,數據流上游的關鍵系統及商業指標,如對外部服務的請求成功率、快取命中率以及候選廣告篩選情形等。
他們針對這些指標設置即時警報,使他們能迅速注意並修正異常,進一步縮短A/B測試花費的時間,甚至找到了不少只比較系統輸出值難以發現的問題。甚至,這套即時警報和驗收機制,後來Pinterest工程團隊也將其用在其他專案中的除錯作業。
終於,確認AdMixer在實際生產環境的業務指標與Mohawk相當後,驗證階段正式結束。Pinterest工程團隊隨即淘汰Mohawk,切換成AdMixer,作為正式廣告推薦系統,支援未來5年的廣告業務。
從設計到完全轉換新系統,費時近兩年。Pinterest成功於2023年Q4,一年中最忙、營收最高、流量最大的假日購物季,上線AdMixer。至今超過一年期間,歷經兩次假日購物季,都沒有大型事故。
擺脫Mohawk 8年技術債後一年,參與廣告推薦系統開發維運的團隊規模,從100名工程師增加到近300名。他們更已經在AdMixer上推出多個新廣告功能,來進一步拓展廣告業務。
熱門新聞
2025-02-17
2025-02-17
2025-02-17
2025-02-18
2025-02-18
2025-02-14