一、純手工

  公司主營的是直播業務,會很許多打榜活動,也就是按主播收到的禮物或收益進行排序,排在前面的會有相應獎勵。

  純手工時代,每接到一個活動,就重新寫一份,第一次寫完。之後就是複製黏貼,再修改,每次活動,測試人員測試也蠻苦惱的。

  雖然複製的是之前的程式碼,已經經歷過一輪測試,但手工操作難免會有這個那個的細節問題,都得重新測試一遍。

  而且定時任務的測試成本還是蠻高的,因為每次測試就要修改時間,來模擬真實環境。測試環境各個組用的都是一套,改了伺服器時間有時候還會影響其他組的開發,所以測起來要快而準。

  定時任務(node-schedule)需要三個引數:開始時間、結束時間和迴圈規則,在測試時這三個引數可能會與線上環境不同,榜單依賴的禮物ID、統計時間在正式和測試也有可能不同。

  所以一開始的時候,測試環境測好後,在發到線上之前還要做一次引數的修改,這其中也有隱患,寫錯的話不但要修改程式碼,還要重新合程式碼,再發布,得走一整套流程。

二、引數配置化

  像定時任務的引數、榜單的引數諸如快取key、禮物ID、統計時間等,都可配置化。

  得益於之前開發了一套通用配置系統,可將這些引數以JSON格式寫到輸入庫中。

  

  測試環境配置一套,正式環境也配置一套,程式碼可互不影響。

  並且在更新引數後,不需要再合程式碼了,只要重新發布一次即可。

  因為定時任務的規則只會在釋出時配置一次,後面引數更新後,若不釋出,新的引數就不會被執行。

三、定時任務配置化

  雖然引數配置化後,省了合程式碼,但複製黏貼仍然還要做一次。

  於是在分析運營的需求後,抽象出一套高度可配置化的榜單任務,在後臺管理系統中單獨開一選單,將動態的引數全部變得可配置。

  

  得益於之前抽象出了一套通用模板元件,這個頁面只花了兩個半小時就搭建好了,包括後端介面和列表頁面,在列表頁面可控制活動的上下線。

  

  資料來源有了之後,就要寫定時任務中的邏輯了,其實就是從資料庫中讀取欄位,將欄位作為引數傳遞給榜單方法。

  當然,若有新活動上線,程式碼還是要重新發布一次的,這一步還沒做到自動化。

  未來還有很大的優化空間,像程式碼釋出自動化,榜單前端頁面可配置化,目前每次都要重新做一份,其實也可以抽象出來做成可配置化,甚至可以做好頁面編輯器,自定義後直接釋出。