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