很多同事問我肯尺,數(shù)據(jù)項目在做什么?怎么做的躯枢?數(shù)據(jù)項目的測試和非數(shù)據(jù)類的有什么不同则吟?
接下來,本文從數(shù)據(jù)項目的業(yè)務(wù)锄蹂、架構(gòu)氓仲、團隊、開發(fā)模式得糜、交付敬扛、測試6個方面談?wù)剶?shù)據(jù)類項目有哪些不同。
1朝抖、數(shù)據(jù)類項目的業(yè)務(wù)
數(shù)據(jù)項目的業(yè)務(wù)核心是通過數(shù)據(jù)來創(chuàng)新價值啥箭。數(shù)據(jù)、技術(shù)治宣、業(yè)務(wù)創(chuàng)新是項目的精髓急侥。
數(shù)據(jù)項目通過收集大量的數(shù)據(jù),結(jié)合各種技術(shù)手段對數(shù)據(jù)進行分析侮邀、建模坏怪,從而幫助企業(yè)創(chuàng)新價值,提高效益豌拙。
比如:收集客戶的歷史購買數(shù)據(jù)陕悬,通過數(shù)據(jù)分類、推薦算法等技術(shù)手段按傅,就能幫助企業(yè)更精準的投放或推銷用戶想買的商品捉超,大大提高企業(yè)收益胧卤。
真實案例,本人參與的一個異常檢測類的項目(簡稱ABC)拼岳,核心業(yè)務(wù)是對銀行的指標數(shù)據(jù)異常檢測枝誊、及時預(yù)警。(如圖1)
【數(shù)據(jù)集】數(shù)據(jù)集模塊展示了所有的指標數(shù)據(jù)集目錄惜纸,后面會對這些指標數(shù)據(jù)集進行分析建模叶撒。
【建模】建模通道耐版,提供了多種數(shù)據(jù)處理工具和算法祠够,用戶可以自行組合配套使用。通過運行配好的模型粪牲,產(chǎn)生預(yù)警結(jié)果數(shù)據(jù)古瓤。
【結(jié)果查看】對不同等級的預(yù)警數(shù)據(jù)進行統(tǒng)計展示,有報表形式或圖表形式等腺阳。
ABC項目就是通過對指標數(shù)據(jù)進行建模(異常檢測算法+預(yù)警工具)落君,從而分析出指標數(shù)據(jù)的異常,及時預(yù)警亭引,幫助客戶盡早發(fā)現(xiàn)問題及時處理規(guī)避風險绎速。
簡言之,數(shù)據(jù)類項目的業(yè)務(wù)共通點都是數(shù)據(jù) + 技術(shù) => 價值焙蚓。
在這里強烈推薦凱哥的《精益數(shù)據(jù)創(chuàng)新工作坊》纹冤,在這個工作坊上能學到如何從數(shù)據(jù)中發(fā)現(xiàn)創(chuàng)新場景,如何把數(shù)據(jù)轉(zhuǎn)換成業(yè)務(wù)價值主届。工作坊通過桌游的方式展示赵哲,淺顯易懂待德。
2君丁、數(shù)據(jù)類項目技術(shù)層
數(shù)據(jù)項目的技術(shù)層是圍繞數(shù)據(jù)流的生命周期,自底向上分為三層将宪。數(shù)據(jù)收集->數(shù)據(jù)分析->結(jié)果展示绘闷。
自底向上:數(shù)據(jù)倉庫(最底層),數(shù)據(jù)建模(中間層)较坛,可視化展現(xiàn)(頂層)印蔗。
第一層:數(shù)據(jù)倉庫,從多種業(yè)務(wù)數(shù)據(jù)庫收集數(shù)據(jù)丑勤,經(jīng)過提取华嘹、加工、導入(ETL)法竞,存放在數(shù)據(jù)倉庫耙厚。
第二層:數(shù)據(jù)建模强挫,數(shù)據(jù)處理通道(包含各類數(shù)據(jù)工具和算法);比如數(shù)據(jù)抽取工具薛躬、分類俯渤、聚類、推薦型宝、異常檢測算法等八匠。
第三層:結(jié)果展示(數(shù)據(jù)分析結(jié)果的展現(xiàn));展示方式也多種多樣趴酣,比如:報表梨树、儀表盤、各種圖表等等岖寞。
以ABC項目組為例劝萤,它的技術(shù)層也是自底向上三層 :
【數(shù)據(jù)倉庫】銀行各業(yè)務(wù)線上產(chǎn)生的業(yè)務(wù)指表數(shù)據(jù),經(jīng)過ETL后正式上線存放于數(shù)據(jù)倉庫慎璧,每期新的業(yè)務(wù)數(shù)據(jù)會定期同步到數(shù)倉床嫌。
【數(shù)據(jù)建模】數(shù)據(jù)倉庫的指標數(shù)據(jù)胸私,經(jīng)過分組抽取工具厌处、異常檢測算法、預(yù)警工具岁疼,產(chǎn)生最終預(yù)警等級結(jié)果阔涉。另外,數(shù)倉定期同步新的數(shù)據(jù)捷绒,模型也會及時運行產(chǎn)生新結(jié)果瑰排。
【結(jié)果展示/可視化】把經(jīng)過數(shù)據(jù)建模產(chǎn)生的預(yù)警結(jié)果通過界面可視化的方式展現(xiàn)給用戶,ABC項目用到的是熱點圖暖侨、柱狀圖椭住、趨勢圖,用戶能直觀清淅地看到哪里出了問題字逗。
3京郑、數(shù)據(jù)類項目團隊
項目團隊組成通常分為 :A、數(shù)倉團隊葫掉,B些举、數(shù)據(jù)應(yīng)用開發(fā)團隊,算法工程師團隊俭厚。
實例户魏,ABC項目組開發(fā)團隊是分三組 :
(1)數(shù)倉團隊: 主要是對銀行各業(yè)務(wù)數(shù)據(jù)收集、ETL同步到數(shù)據(jù)倉庫,他們的交付物就是數(shù)據(jù)倉庫上線的指標表叼丑,用于后面的分析建模资铡。
(2)算法工程師團隊: 算法工程師依據(jù)業(yè)務(wù)需求尋找開發(fā)適合的算法、產(chǎn)出物是一個個供基礎(chǔ)平臺調(diào)用的算法幢码。
(3)數(shù)據(jù)應(yīng)用開發(fā)團隊: 數(shù)據(jù)應(yīng)用和非數(shù)據(jù)項目應(yīng)用開發(fā)類似笤休,交付一個完整的應(yīng)用系統(tǒng)。數(shù)倉開發(fā)的源指標數(shù)據(jù)要在數(shù)據(jù)應(yīng)用基礎(chǔ)分析展示症副。
4店雅、項目開發(fā)模式
整個團隊采用的敏捷開發(fā)模式與非數(shù)據(jù)類項目一致。
ABC項目的三方團隊是獨立并行開發(fā)贞铣,但三方會頻繁溝通闹啦、及時拉通對齊業(yè)務(wù)和技術(shù)契約。
5辕坝、數(shù)據(jù)類項目交付
數(shù)據(jù)類項目交付物可分三類:A窍奋、數(shù)據(jù)倉庫發(fā)布數(shù)據(jù),B酱畅、數(shù)據(jù)工具和算法琳袄、C、數(shù)據(jù)基礎(chǔ)應(yīng)用。對于小型的數(shù)據(jù)類項目,很多時候三者合一视事。
ABC項目組迭代交付、三部分支持獨立部署上線 :
(1)數(shù)倉發(fā)布數(shù)據(jù):指標數(shù)據(jù)泡嘴。每完成一個新的指標、會及時發(fā)布新指標到數(shù)倉、即完成上線。
(2)算法上線:Python算法仗考,有新的Python算法或已有算法的升級版,可獨立部署上線词爬。
(3)數(shù)據(jù)基礎(chǔ)應(yīng)用上線:ABC應(yīng)用系統(tǒng)秃嗜。 迭代交付ABC系統(tǒng)的新功能。
6缸夹、數(shù)據(jù)項目的測試
QA在數(shù)據(jù)項目中也是敏捷測試方式痪寻。提前反饋螺句、預(yù)防缺陷虽惭、及時響應(yīng)。每個故事卡的Review Story蛇尚、KickOff芽唇、DeskCheck、QA環(huán)境下測試、UAT環(huán)境驗證匆笤、生產(chǎn)環(huán)境下QA研侣,這些與非數(shù)據(jù)類項目是一樣的。不同的是在與每個環(huán)節(jié)更關(guān)注于數(shù)據(jù)的驗證炮捧,以及在數(shù)據(jù)量極大的情況下的測試庶诡。
6.1 測試類型方面
(1)功能測試
數(shù)據(jù)類項目不同的是: 數(shù)據(jù)的每個處理步驟都要及時驗證,要驗證數(shù)據(jù)的中間表咆课。非數(shù)據(jù)項目通常QA端對端驗證場景即可末誓。但在數(shù)據(jù)類項目中,數(shù)據(jù)的處理通道會很長书蚪,如果還是端對端驗證喇澡,反饋周期長、問題定位也困難殊校。所以數(shù)據(jù)類項目QA要深入到開發(fā)內(nèi)部晴玖,了解數(shù)據(jù)每一步處理過程,及時檢查驗證为流,提早反饋呕屎。
數(shù)據(jù)質(zhì)量的檢驗有這幾個維度:數(shù)據(jù)完整性、規(guī)范性敬察、一致性榨惰、準確性、唯一性静汤、關(guān)聯(lián)性琅催。參見洞見孫銘發(fā)表的《數(shù)質(zhì)量管理的一些思考》
另外,特別強調(diào)要用自己準備的最少的用例來驗證所有功能邏輯虫给,每一條數(shù)據(jù)覆蓋一個場景藤抡;而不是直接用類生產(chǎn)數(shù)據(jù)與自己SQL的結(jié)果對比驗證。為什么呢抹估?
第一缠黍、類生產(chǎn)數(shù)據(jù)表數(shù)據(jù)量很大,干擾項太多药蜻,并不清楚類生產(chǎn)上的數(shù)據(jù)有沒有覆蓋到了全部要驗證的測試點瓷式。
第二、自己寫的SQL又是否正確语泽。
(2)性能測試
數(shù)據(jù)類項目的數(shù)據(jù)量比非數(shù)據(jù)項目的數(shù)據(jù)量大很多倍贸典,以往非數(shù)據(jù)項目數(shù)據(jù)總量也就幾十或上百萬,單量也就幾萬踱卵; 然而廊驼,數(shù)據(jù)類項目的數(shù)據(jù)總量在千萬据过、億級別,單量也是上百萬妒挎。這種情況下绳锅,以往的一些技術(shù)方案根本承受不了如此大量級的數(shù)據(jù)處理。
數(shù)據(jù)類項目的性能測試注意以下幾點:
第一酝掩、分解鳞芙、再組合:模型中的每個工具和算法的性能都要單獨用最大數(shù)據(jù)量集檢驗一遍性能;組合后的性能也要驗證期虾。
第二积蜻、提早數(shù)據(jù)準備:特大數(shù)據(jù)量要提前寫腳本或用存儲過程來準備數(shù)據(jù),或用類生產(chǎn)數(shù)據(jù)生成性能測試數(shù)據(jù)彻消。
第三竿拆、重視大數(shù)據(jù)并發(fā):數(shù)據(jù)量大且又要并發(fā)處理,很容易性能瓶頸宾尚。
ABC項目組有一套獨立的性能測試環(huán)境丙笋,數(shù)據(jù)量級在客戶未來要支持的數(shù)量級上。而且在生產(chǎn)環(huán)境也準備了一套性能環(huán)境煌贴,用當前真實的數(shù)據(jù)來提前檢測當前代碼的性能情況御板。
(3)數(shù)據(jù)安全
數(shù)據(jù)類項目與非數(shù)據(jù)項目在安全方面不同的點:個人認為主要體現(xiàn)在數(shù)據(jù)粒度上。
數(shù)據(jù)類項目的數(shù)據(jù)安全劃分更細牛郑,涉及到對數(shù)據(jù)矩陣式的劃分安全粒度怠肋,哪行數(shù)據(jù)、哪列數(shù)據(jù)哪些人有權(quán)限淹朋。
除了企業(yè)業(yè)務(wù)上的對數(shù)據(jù)矩陣式的權(quán)限劃分笙各,還有國家政策等。比如識別哪些數(shù)據(jù)屬于敏感數(shù)據(jù)础芍,哪些保密數(shù)據(jù)等杈抢。
數(shù)據(jù)安全這部分涉及較少,需要更多的專家一起探討總結(jié)仑性。
6.2 各階段都檢驗
質(zhì)量把控要提前預(yù)防惶楼,及時驗證反饋。在數(shù)據(jù)項目的開發(fā)過程中诊杆,數(shù)據(jù)經(jīng)過了三個階段歼捐。每個階段都要介入驗證。
(1)數(shù)據(jù)倉庫階段
數(shù)據(jù)倉庫階段是驗證從各種不同業(yè)務(wù)數(shù)據(jù)源晨汹,經(jīng)過ETL后的數(shù)據(jù)質(zhì)量豹储。數(shù)據(jù)質(zhì)量維度:數(shù)據(jù)完整性、規(guī)范性宰缤、一致性颂翼、準確性晃洒、唯一性慨灭、關(guān)聯(lián)性朦乏。關(guān)注點仍有以上提到的功能、性能氧骤、安全呻疹。
(2)建模環(huán)節(jié)的驗證
分解每個工具單獨驗證,關(guān)注功能筹陵、性能刽锤、安全方面。單獨的工具和算法測試完成后朦佩,進行組合驗證并思。連通幾個工具和算法測試,從模型完整的端對端進行質(zhì)量檢驗语稠。連通后仍要關(guān)注性能宋彼。
對于模型的結(jié)果并不是0或1確定的答案,而是一個區(qū)間或概率仙畦,這種情況下如何準備你的測試集输涕,如何驗證。這個話題比較大慨畸,后續(xù)單獨探討莱坎。
(3)可視化展示階段
數(shù)據(jù)分析之后的可視化展示,這部分的驗證與非數(shù)據(jù)類項目一樣的寸士,唯獨需要多關(guān)注的是特大數(shù)據(jù)量的性能與數(shù)據(jù)展示的樣式檐什。
6.3 其他補充建議
(1)類生產(chǎn)數(shù)據(jù)的必要性。
數(shù)據(jù)類項目沒有生產(chǎn)脫敏數(shù)據(jù)的驗證弱卡,就像是紙上談兵厢汹,風險很高。
(2)盡早上線
數(shù)據(jù)類項目谐宙,線上的數(shù)據(jù)五花八門烫葬,會有我們預(yù)想不到的情況,風險很高凡蜻。一但數(shù)據(jù)有問題搭综,通常直接跑不通,上線宣告失敗划栓。強烈建議團隊正式開發(fā)用戶前提前上生產(chǎn)驗證兑巾,很多數(shù)據(jù)項目都是上生產(chǎn)用真實的數(shù)據(jù)測試驗證。
ABC項目在正式開放給用戶之前忠荞,是在生產(chǎn)環(huán)境直接做的UAT測試蒋歌。當時客戶要求三個月后上線開放給用戶帅掘,團隊內(nèi)部確定了三次上線(最后那次是正式上線),為了下生產(chǎn)提前驗證堂油。事實上修档,確實在第一次下生產(chǎn)發(fā)現(xiàn)了嚴重的問題,預(yù)想的數(shù)據(jù)和真實數(shù)據(jù)有偏差府框,模型被Block吱窝。
(3)數(shù)據(jù)監(jiān)控
數(shù)據(jù)類項目的監(jiān)控除了監(jiān)控日志、資源使用情況迫靖、用戶行為等照激,還要關(guān)注數(shù)據(jù)膨脹的速度盹牧、數(shù)據(jù)被使用情況俩垃,從而融合到后期需求優(yōu)化中。
(4)數(shù)據(jù)庫不同字段類型
涉及到數(shù)據(jù)庫中存放的數(shù)據(jù)驗證時欢策,一定要所有不同字段類型都要測試吆寨。在ABC項目的抽取工具測試時,20多種字段類型全部進行抽取踩寇,結(jié)果發(fā)現(xiàn)datatime類型的字段經(jīng)過抽取工具出了問題啄清。
(5)QA要與開發(fā)更深入交流
QA不僅要了解業(yè)務(wù),還有更熟悉架構(gòu)俺孙。因為你要清楚數(shù)據(jù)的具體流向,清楚它的每一步處理邏輯荣茫,才能更準確地測試、更快速地定位场靴。
(6)QA Get數(shù)據(jù)庫技能
數(shù)據(jù)類項目中啡莉,QA頻繁關(guān)注數(shù)據(jù)庫中間表,而且還要各種準備數(shù)據(jù)旨剥、驗證數(shù)據(jù)和寫SQL魄咕。
以上所有是本人的一些思考與總結(jié),希望和大家一起學習交流蚌父。