蘇寧主數據智能維護系統是如何建立的?
原創【51CTO.com原創稿件】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小時不間斷執行。
結束語
在集團公司造極精神的鼓舞下,團隊成員的不懈努力下能夠創新性完成并持續改進方案,這是對勇于創新精神的最好鼓舞。作為承擔集團智慧零售大開發戰略后端數據支持后盾的我們,全體人員統一思想,將集團目標拆解到部門和個人,每個需求、開發、測試、運維人員工作目標和具體工作事項十分清晰,圍繞快速迭代、質量保證和穩定服務,把極客、極物、極速的造極精神當作我們的工作態度,這些更是我們工作的真實寫照。
本文作者
張標,蘇寧易購IT總部員工平臺研發中心技術經理,負責智能應用項目架構和任務調度工作。有多年后端開發經驗,對當前大熱的AI智能應用極有興趣,有幸參與公司智能項目建設,希望為公司的智能化發展添磚加瓦。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】