蘇寧主資料智慧維護系統是如何建立的?
【51CTO.com原創稿件】 本文作者
張標,蘇寧易購IT總部員工平臺研發中心技術經理,負責智慧應用專案架構和任務排程工作。有多年後端開發經驗,對當前大熱的AI智慧應用極有興趣,有幸參與公司智慧專案建設,希望為公司的智慧化發展添磚加瓦。
1.專案背景
1.1業務背景
蘇寧從 2009 年就開始了網際網路轉型的探索,當時蘇寧已經是國內最大的商業連鎖企業,擁有近千家的線下門店,轉型網際網路就是將原有線下的資源和能力拓展到線上去,如此大的體量要轉型網際網路,必然要以優異多元的技術作為支援、以穩定的創新型的系統作為支撐,並且要開展資料化的運營。
多年轉型資料量急劇增長尤其是近兩年資料量急劇增長的現實問題導致原有的手工錄入主資料配置出現瓶頸,急需新的方式加速效率、加快進度。一則原有人工錄入模式錄入速度存在上限,無法從人工錄入的模式上有效的提升或加快效率;二則如果要滿足現有資料錄入進度增加人力還必須對新人進行業務培訓,培訓週期長、無法滿足人員快速投入的問題,並且單純增加人力並不能解決效率問題,僅僅只能以人海方案暫時滿足需求、無法永久的滿足日益增長的資料錄入需求。經過多次討論並進行技術探索驗證後一致決定使用自動化的智慧型的方案,實現解放人力、提升效率的終極目標。
1.2業務問題描述
公司主資料配置自動化改造前主要由維護部人員通過公司內部審批流程、豆芽訊息整理資料手工在各系統配置。以新開公司配置為例,總計約涉及7個系統269步的系統配置,每一個步驟都需要整理資料歸檔然後通過操作相應系統軟體手工錄入或拷貝輸入,操作步驟繁多、操作方式模式化,因此對於業務人員來說存在疲勞和重複性問題;通過這樣的複雜流程配置一個標準公司通常需要最少3天時間,無法滿足公司大開發戰略的推進,無法適應公司接下來幾年的公司配置數量的急劇增長,因此特別需要推進公司以及其他主資料配置的自動化、智慧化,加快公司運作效率。
1.3解決方案
在中心領導以及業務主要負責人、技術部門主要負責人的牽頭下,並經過業務部門對現有問題梳理、技術部門針對需求進行自動化探索和驗證,確定自動化甚至最後智慧化方案可行。
本自動化系統目前可以通過配置好的規則庫,實現自動化核對審批,以及把核對好的主資料資訊按照業務系統建立主資料的事務程式碼一步步自動執行,整個鏈路不需要人為參與,並且鏈路的每個節點都有監控,能夠及時反饋鏈路處理狀態。該系統可以部署多臺機器,通過任務排程實現多個主資料建立的並行處理。理論上能夠24小時不間斷執行。
2.完整的技術方案
2.1資料接入
原業務系統建立主資料的資料來源複雜,主要有公司內部SOA流程、Email、豆芽等,這些資料由於缺乏統一的約束有很多不規範的資料,例如文字、自定義的Excel表格等;並且這些資料因為缺乏校驗多數都需要人工稽核。
針對上述情況,本系統進行了規範化約束。主要體現在1)之前沒有模板化的文件模板化;2)之前模板化的資料如Excel等會加以直接使用;3)能夠通過第三方系統獲取到的直接和第三方系統互動獲取以保證不出現手工導致的錯誤。
經過整理,目前資料主要來源於三處,一是根據業務特點定製的一系列資料模板,定製的模板可以實現資料規範化錄入、校驗以及儲存和解析處理;二是資料來源於已有的系統如業務系統內部資料表、SOA流程表單/附件,這些資料都是經過校驗後入庫,資料質量規範有保證;三是通過第三方系統接入,這部分資料也經過了第三方系統校驗,同樣資料質量也規範有保證。資料接入這一步做規整之後才能保證後續的業務執行不會因資料的問題導致無法正確處理。
2.2指令碼錄製、包裝轉換和模型部署
由於這個型別的專案公司沒有相應的經驗參考,所以開始摸索階段很自然的想到先由人工操作按照標準化的模式錄製指令碼,然後以業務順序串聯指令碼;當然,在後續的研發中我們對此過程有了新的提煉和優化。下面主要介紹在此經驗基礎上提煉出的關鍵過程。
1.指令碼錄製
一套業務需根據事務程式碼從首屏開始通過業務系統軟體的指令碼錄製功能按照規範的人工處理過程錄製完整業務邏輯,錄製後的VBS指令碼即是一個業務模板,多個業務模板即可構成一套業務邏輯。
第一版本的思路是經過錄制後得到的指令碼經過開發人員剔除不必要的操作命令如非必要語句、游標定位後直接由排程器排程執行,但在開發過程中我們發現直接排程VBS在易用性上並不理想,因此部分成員有嘗試使用更為靈活的Python語言實現,經過驗證Python更加靈活、更加適合快速迭代。
但第一階段當時開發已經接近尾聲,並且經過第一輪測試驗證雖然語言方案不夠靈活確實能夠提升效率;於是團隊成員和領導小組商定第一版即以現有方案發布,後續採用更好的Python語言。後續版本以及第一版本的升級版採用Python語言後,由於Python有合表、大量資料處理等成熟元件庫,使得開發效率進一步得到了提升。
2.包裝轉換
就是將上述錄製的指令碼各語句逐條轉換為更具靈活性的Python語言,其底層是通過win23com元件實現對業務系統的呼叫。另需注意的是指令碼中有些步驟可以優化合並或使用更底層的技術呼叫,實現為更優異的執行方法。
3.模型部署
轉換後的Python檔案按照業務組織打包。打包型別分為兩種形式,一是普通cmd Python專案形式(如圖一),此型別專案通常只提供一個入口方法、一個配置檔案,通過手工或部署工具將專案打包拷貝到工作站,或手工或由部署工具啟動指令碼後守護執行業務邏輯;二是將專案二次封裝成公司機器排程平臺支援的機器人排程格式,此型別同樣需要一個入口方法和一個配置檔案,按排程平臺規格封裝後的檔案上傳到排程平臺即可在雲端機器執行。
圖一(案例專案結構圖)
圖二(指令碼錄製和轉換圖)
2.3資料校驗、排程執行
之前由人工的方式整理資料並且由人工稽核資料,由於人工核驗資料並不能百分百保證資料有效,只有當錄入系統後才能發現數據問題,針對此問題我們設計了資料校驗環節,可以對資料批量校驗,在排程執行前發現問題並反饋解決。排程執行過程是一套按照業務模型處理的流程執行時,此過程會根據模型部署的業務模組選擇排程執行。
1.資料校驗
從業務系統內部資料表、SOA流程表單/附件或通過第三方系統接入獲取到需要維護的主資料基本資訊後,首先系統會將外部資料轉換為內部通用的二維矩陣形式,然後通過校驗器根據規則校驗稽核資料有效性。校驗器根據規則或拒絕執行或返回警告抑或忽略無效資料行,待資料驗證完畢後有效資料會進行下一步的排程處理。
2.排程執行
步驟一:稽核通過的資料通過任務排程平臺進行排程,抓取需要執行的指令碼,分配到對應的工作站上。
步驟二:工作站收到執行指令碼後自動開啟業務系統軟體,然後自動執行對應主資料建立的事務程式碼建立主資料。
步驟三:監控從獲取主資料到執行完業務系統的事務程式碼的處理狀態,對中間步驟異常的資料進行斷點執行。
圖二(資料自動建立流程圖)
2.4日誌記錄、錯誤反饋
本系統有較完備的日誌記錄、錯誤反饋能力。在任務執行前,系統會拆分任務列出明細清單並記錄到資料庫中,在執行階段排程器根據任務清單逐條執行,執行中的資料和狀態資訊如公司程式碼、執行位置、執行結果或錯誤明細儲存資料庫並反饋給系統。業務人員通過系統可檢視業務執行狀況,如遇錯誤可通過詳細的反饋資訊判斷是何種錯誤並在下次執行時更正。
3.本技術方案帶來的有益效果
綜上,上了本套技術方案後,我們的主資料處理時間基本和預估的時間一致,在時間上縮短了一個量級,由之前的按天算到目前的按小時算,甚至一些情況下實現分鐘級。總結來看,目前我們主要實現了兩方面優化,如下:
- 用機器校驗代替人工校驗,提高了資料的正確率,減少了因資料無效引起的工時浪費;當然由於減少了人工核驗,我們的運維人員也解放了繁瑣的稽核,切實提升了幸福感。:-)
- 實現業務系統建立資料自動化,提高效率,解放人力。按照原有業務系統運維人員採用人工操作,一個業務系統事務程式碼通常需要1分鐘至10多分鐘不等,經過業務軟體自動化機器人目前可以實現最快3秒,最慢1分鐘左右(絕大部分主要受制於業務系統本身資料梳理速度導致,例如大表資料慢載入在資料量多於1萬的情況下可能超過1分鐘)即可處理完成一個事務程式碼。
例如現有業務系統資料運維人員在業務系統中維護一個完整的公司資料按照每天工作8小時算,通常一個完整公司約需要269步,即269個事務程式碼,按平均每個事務程式碼5分鐘算,總計用時約 ,如再加入資料整理時間則最快要3天時間才能處理一個完整公司資料建立。
使用本專利由於絕大部分步驟都很快,我們按照每步驟中位數用時30秒算,計算總用時約 ,即在有半數長耗時操作情況下,也能保證2.24小時可以在業務系統裡完成一個完整公司資料的建立,並且能夠24小時不間斷執行。
結束語
在集團公司造極精神的鼓舞下,團隊成員的不懈努力下能夠創新性完成並持續改進方案,這是對勇於創新精神的最好鼓舞。作為承擔集團智慧零售大開發戰略後端資料支援後盾的我們,全體人員統一思想,將集團目標拆解到部門和個人,每個需求、開發、測試、運維人員工作目標和具體工作事項十分清晰,圍繞快速迭代、質量保證和穩定服務,把極客、極物、極速的造極精神當作我們的工作態度,這些更是我們工作的真實寫照。
【51CTO原創稿件,合作站點轉載請註明原文作者和出處為51CTO.com】
【責任編輯:龐桂玉 TEL:(010)68476606】