DataOps:現(xiàn)代數(shù)據(jù)管道的精髓
DataOps,即Data和Operations組合。是在數(shù)據(jù)分析過程中,提升數(shù)據(jù)質(zhì)量,減少數(shù)據(jù)分析的周期時(shí)間,提高效率的一系列實(shí)踐,現(xiàn)在逐漸發(fā)展成了一門方法論。DataOps適用于從數(shù)據(jù)準(zhǔn)備到報(bào)告的整個(gè)數(shù)據(jù)生命周期。
DataOps是一門快速發(fā)展的學(xué)科,用來管理不規(guī)則數(shù)據(jù)管道,這些數(shù)據(jù)管道遍布于各大公司的環(huán)境中。
曾幾何時(shí)有那么一段美好的日子,只有兩個(gè)數(shù)據(jù)管道:一個(gè)支持生成通用報(bào)告和分析活動(dòng)的數(shù)據(jù)倉(cāng)庫(kù),以及一個(gè)為投資者和董事會(huì)提供審計(jì)數(shù)字的財(cái)務(wù)報(bào)告的數(shù)據(jù)管道。如今,隨著自助服務(wù)分析和機(jī)器學(xué)習(xí)的發(fā)展,公司擁有的管道數(shù)量隨著數(shù)據(jù)分析師,數(shù)據(jù)科學(xué)家和需要大量數(shù)據(jù)的應(yīng)用程序的增多而增多。每一個(gè)都需要專門的數(shù)據(jù)集和數(shù)據(jù)訪問權(quán)限才能產(chǎn)生內(nèi)容。這簡(jiǎn)直是管道爆炸!
如果沒有DataOps,每個(gè)數(shù)據(jù)管道都將成為一個(gè)數(shù)據(jù)孤島,與其他數(shù)據(jù)管道,數(shù)據(jù)集和數(shù)據(jù)生產(chǎn)者幾乎沒有關(guān)系。沒有協(xié)作或重用,浪費(fèi)大量的人工和返工,有大量的錯(cuò)誤和數(shù)據(jù)缺陷,并且交付時(shí)間極慢。商業(yè)用戶除了信任自己的數(shù)據(jù)外不信任任何數(shù)據(jù),而且許多用戶需要在沒有任何數(shù)據(jù)或沒有足夠數(shù)據(jù)的情況下做出決策,因?yàn)樗麄兊炔患傲恕?/p>
DevOps的降臨。在引入敏捷開發(fā)和DevOps技術(shù)之前,軟件工程界一直受到類似問題的困擾。如今,DevOps的先驅(qū)例如Amazon,Google和LinkedIn等公司每天(甚至每小時(shí)或更快)部署軟件版本,這是幾年前無法想象的發(fā)展節(jié)奏。令人驚訝的是,即使周期時(shí)間加快了,軟件錯(cuò)誤和缺陷也有所減少。容器化和微服務(wù)的問世將進(jìn)一步加速和強(qiáng)化軟件交付周期。簡(jiǎn)而言之,DevOps可以以更低的成本更快地提供更好的代碼。
對(duì)于DataOps來說
數(shù)據(jù)挑戰(zhàn)。看到打破僵局的機(jī)會(huì),數(shù)據(jù)世界正在緊緊抓住DevOps原則。 DevOps管理代碼,工具和基礎(chǔ)架構(gòu)之間的聯(lián)系,以加快應(yīng)用程序功能的交付,而DataOps添加了第四個(gè)元素——數(shù)據(jù)——比其他三個(gè)元素相加更難以控制!在每個(gè)管道中,必須對(duì)數(shù)據(jù)進(jìn)行標(biāo)識(shí)、捕獲、格式化、標(biāo)記、驗(yàn)證、畫像(profiled)、清理、轉(zhuǎn)換、組合、聚合、保護(hù)、分類、治理(governance)、移動(dòng)、查詢、可視化、分析和操作。 嗚!隨著組織從數(shù)百個(gè)數(shù)據(jù)源收集大量數(shù)據(jù),這些任務(wù)變得越來越復(fù)雜。
工具和人員。此外,每個(gè)任務(wù)還需要專門的工具管理。這些工具的范圍從傳統(tǒng)的ETL / ELT,數(shù)據(jù)質(zhì)量和主數(shù)據(jù)管理工具到數(shù)據(jù)目錄,數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)治理產(chǎn)品,再到報(bào)告,數(shù)據(jù)可視化和數(shù)據(jù)科學(xué)工具。這些工具中的每一個(gè)針對(duì)不同類型的用戶——從IT部門的系統(tǒng)工程師和數(shù)據(jù)庫(kù)管理員——到BI團(tuán)隊(duì)中的數(shù)據(jù)工程師,數(shù)據(jù)管理員和報(bào)表開發(fā)人員——到數(shù)據(jù)分析師,數(shù)據(jù)科學(xué)家和數(shù)據(jù)使用者業(yè)務(wù)部門。
協(xié)調(diào)所有的這些工具,技術(shù)和人員是一項(xiàng)巨大的工作,特別是在擁有規(guī)模龐大的開發(fā)團(tuán)隊(duì),來自數(shù)百個(gè)來源的大量數(shù)據(jù)以及該領(lǐng)域的大量數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家的大型組織中。這就是為什么DataOps會(huì)發(fā)展起來。
DataOps框架
定義DataOps非常困難。它包含很多零件和過程。圖1是試圖繪制DataOps環(huán)境的關(guān)鍵組件的簡(jiǎn)化圖。為了簡(jiǎn)化此環(huán)境,某些組織傾向于從單個(gè)供應(yīng)商那里采購(gòu)所有組件,例如大型軟件或云提供商(例如Microsoft,Amazon,Oracle或IBM)或大數(shù)據(jù)工程專家(例如Infoworks)。其他人則喜歡使用一些最佳組合,用編排和監(jiān)控工具將開源的組件和商業(yè)組件結(jié)合在一起。
圖1 DataOps組件:
數(shù)據(jù)管道
圖1中間的黑色箭頭表示典型的數(shù)據(jù)管道,源數(shù)據(jù)通過管道逐步移動(dòng)到三個(gè)階段(數(shù)據(jù)采集,數(shù)據(jù)工程和數(shù)據(jù)分析)。這些管道代表了一個(gè)數(shù)據(jù)供應(yīng)鏈,這個(gè)數(shù)據(jù)供應(yīng)鏈可以處理,優(yōu)化和豐富數(shù)據(jù),以供各種業(yè)務(wù)用戶和應(yīng)用程序使用。一個(gè)管道可能會(huì)填充財(cái)務(wù)使用的OLAP多維數(shù)據(jù)集;另一個(gè)可能將集成的客戶數(shù)據(jù)傳遞到實(shí)時(shí)Web應(yīng)用程序;另一個(gè)可能會(huì)為建立活動(dòng)響應(yīng)模型的數(shù)據(jù)科學(xué)家創(chuàng)建一個(gè)細(xì)分的原始數(shù)據(jù)池。
數(shù)據(jù)技術(shù)
數(shù)據(jù)管道下方是用于采集,精煉和分析數(shù)據(jù)的主要技術(shù)類別。媒體最關(guān)注這四個(gè)類別:數(shù)據(jù)捕獲,數(shù)據(jù)集成,數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)分析。因?yàn)檫@就是錢的來源——軟件供應(yīng)商每年通過銷售數(shù)據(jù)產(chǎn)品產(chǎn)生數(shù)十億美元的收入!不幸的是,對(duì)數(shù)據(jù)技術(shù)的過分重視,使得更為重要的數(shù)據(jù)過程變得黯然失色,而數(shù)據(jù)過程則是協(xié)調(diào)和驅(qū)動(dòng)這些數(shù)據(jù)技術(shù)的。 (請(qǐng)參見下面的“數(shù)據(jù)處理”。)
如今,隨著組織從批處理架構(gòu)轉(zhuǎn)向流式架構(gòu)以支持大數(shù)據(jù)和物聯(lián)網(wǎng),數(shù)據(jù)捕獲已成為熱門技術(shù)類別。數(shù)據(jù)集成已成為傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目的基礎(chǔ),現(xiàn)在已成為主流。數(shù)據(jù)準(zhǔn)備是一項(xiàng)新技術(shù),旨在幫助數(shù)據(jù)分析人員建模自己的數(shù)據(jù)集,理想地利用IT管理的存儲(chǔ)庫(kù)(例如數(shù)據(jù)湖)中的數(shù)據(jù)。 數(shù)據(jù)分析師通過為商業(yè)用戶提供查詢,分析,可視化和共享見解的工具來完成該數(shù)據(jù)周期。
團(tuán)隊(duì)和交接。IT部門通過采集和集成數(shù)據(jù)來啟動(dòng)數(shù)據(jù)供應(yīng)鏈。這個(gè)數(shù)據(jù)通常被創(chuàng)建成通用的,面向主題的數(shù)據(jù)文件。然后,數(shù)據(jù)工程團(tuán)隊(duì)將對(duì)數(shù)據(jù)進(jìn)行查詢和建模,以滿足特定的業(yè)務(wù)需求和用例。最后,商業(yè)用戶查詢和分析目標(biāo)數(shù)據(jù)集以創(chuàng)建報(bào)告,儀表板和預(yù)測(cè)模型。盡管本質(zhì)上是線性的,但該循環(huán)還是有可能存在中間迭代,其中包含許多必須存儲(chǔ),跟蹤和管理的中間步驟和文件。
數(shù)據(jù)存儲(chǔ)是支持?jǐn)?shù)據(jù)技術(shù)和團(tuán)隊(duì)的關(guān)鍵,其中包括在高性能列式數(shù)據(jù)庫(kù)上運(yùn)行的數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)湖和數(shù)據(jù)沙箱。數(shù)據(jù)存儲(chǔ)下面是計(jì)算架構(gòu),越來越多的計(jì)算架構(gòu)是基于云,虛擬化,彈性的以及大規(guī)模并行的。
數(shù)據(jù)處理
那些試圖僅僅依賴技術(shù)來構(gòu)建和管理管道的組織注定要失敗。它不僅需要技術(shù),還需要定義明確的過程和方法來構(gòu)建、更改、測(cè)試、部署、運(yùn)行以及跟蹤新功能和修改后的功能。它還需要管理這些過程生成的所有工件,包括代碼、數(shù)據(jù)、元數(shù)據(jù)、腳本、指標(biāo)、維度、層次結(jié)構(gòu)等。而且,它需要協(xié)調(diào)數(shù)據(jù)技術(shù)并供給數(shù)據(jù)以及監(jiān)控開發(fā),測(cè)試和生產(chǎn)過程。這需要作業(yè)調(diào)度,事件觸發(fā)器,錯(cuò)誤處理和性能管理,以滿足服務(wù)級(jí)別協(xié)議。
開發(fā)和部署。前兩個(gè)階段(開發(fā)和部署)通過敏捷和DevOps方法得到了很好的定義。在這里的目標(biāo)是和自治的、懂得業(yè)務(wù)的團(tuán)隊(duì)一起開發(fā)新功能,這些團(tuán)隊(duì)可以在短短的時(shí)間內(nèi)(通常在兩周或更短的時(shí)間內(nèi))開發(fā)出經(jīng)過全面測(cè)試和功能的代碼。為了同步開發(fā),團(tuán)隊(duì)將代碼存儲(chǔ)在應(yīng)用版本控制的中央存儲(chǔ)庫(kù)中,以避免覆蓋和重復(fù)工作。他們還使用技術(shù)和工具無縫地合并代碼,并以最小的延遲將代碼移入生產(chǎn)環(huán)境(即,持續(xù)集成和持續(xù)部署CI/CD)。這些工具和系統(tǒng)配置集中存儲(chǔ)并維護(hù)在配置庫(kù)中。
有許多工具可以支持開發(fā)和部署的流程。你可以選擇從頭開始構(gòu)建新的應(yīng)用程序或用例,或者修改現(xiàn)有的用例。Git是一個(gè)很好的工具,它用于存儲(chǔ)代碼和控制版本,而Jenkins是支持CI/CD流程(即合并和部署代碼)的開源工具。在數(shù)據(jù)世界中,有許多針對(duì)特定類型管道的開發(fā)和部署工具,包括數(shù)據(jù)倉(cāng)庫(kù)開發(fā)(即數(shù)據(jù)倉(cāng)庫(kù)自動(dòng)化工具)和創(chuàng)建機(jī)器學(xué)習(xí)模型。
編排。DataOps的核心和靈魂在于編排。在管道中移動(dòng),我們需要具有眾多依賴關(guān)系的復(fù)雜任務(wù)工作流來處理和豐富數(shù)據(jù)。一些著名的數(shù)據(jù)編排工具如Airflow,一些開源項(xiàng)目如,DataKitchen,StreamSets和Microsoft Azure的DataFactory。一個(gè)好的編排工具可以很好的協(xié)調(diào)數(shù)據(jù)開發(fā)項(xiàng)目的所有四個(gè)組成部分:代碼,數(shù)據(jù),技術(shù)和基礎(chǔ)架構(gòu)。在DevOps環(huán)境中,業(yè)務(wù)流程工具使用容器編排框架(例如Kubernetes)來激活和協(xié)調(diào)容器以支持這些流程(如開發(fā)、測(cè)試、staging和生產(chǎn)環(huán)境)。
在數(shù)據(jù)世界中,業(yè)務(wù)流程工具不僅提供了新的開發(fā)/測(cè)試/生產(chǎn)環(huán)境。它們還負(fù)責(zé)在管道中不同階段之間移動(dòng)數(shù)據(jù),并實(shí)例化對(duì)數(shù)據(jù)進(jìn)行操作的數(shù)據(jù)工具。他們一邊工作,一邊監(jiān)控進(jìn)度,還要將錯(cuò)誤歸納到合適的界面并發(fā)出警報(bào)。例如,在云環(huán)境中,DataOps編排工具可能會(huì)執(zhí)行以下操作:
- 設(shè)置平臺(tái)(例如數(shù)據(jù)庫(kù),存儲(chǔ)容量,訪問控制列表,性能管理工具,數(shù)據(jù)目錄,日志服務(wù)器和監(jiān)視工具)。
- 觸發(fā)采集作業(yè)。監(jiān)視作業(yè)(批處理或流式傳輸),檢測(cè)故障并從中恢復(fù),監(jiān)視容量并在需要時(shí)觸發(fā)自動(dòng)縮放。
- 觸發(fā)數(shù)據(jù)質(zhì)量作業(yè)。分析和驗(yàn)證數(shù)據(jù),檢查血緣。
- 快速啟動(dòng)數(shù)據(jù)轉(zhuǎn)換。一旦采集的數(shù)據(jù)集獲得了通過健康檢查,編排工具可能會(huì)啟動(dòng)轉(zhuǎn)換代碼來合并,格式化和聚合數(shù)據(jù)元素。
- 觸發(fā)BI工具。以將數(shù)據(jù)下載到其自己的列式存儲(chǔ)中,或發(fā)送一個(gè)通知,告知已準(zhǔn)備好進(jìn)行查詢和分析的新數(shù)據(jù)集。
- 監(jiān)控工作流程。成功完成工作流程后,程序會(huì)向適當(dāng)?shù)娜藛T發(fā)出通知,并釋放基礎(chǔ)架構(gòu)。
- 持續(xù)測(cè)試和監(jiān)控。 DataOps環(huán)境的最后組成部分是測(cè)試環(huán)境。理想情況下,團(tuán)隊(duì)在開發(fā)任何代碼或功能之前就寫好了測(cè)試。然后,業(yè)務(wù)流程工具在管道中的每個(gè)階段之前和之后運(yùn)行測(cè)試。在啟動(dòng)和集成時(shí),在上游捕獲錯(cuò)誤和問題可以節(jié)省大量時(shí)間,金錢和麻煩。諸如Great Expectations和ICEDQ之類的工具就支持持續(xù)的測(cè)試環(huán)境。還有一些產(chǎn)品提供對(duì)工具,應(yīng)用程序和基礎(chǔ)架構(gòu)的持續(xù)監(jiān)控,以確保最佳的正常運(yùn)行時(shí)間和性能。 Unravel就是面向大數(shù)據(jù)處理的應(yīng)用程序性能管理(APM)產(chǎn)品之一。
使用測(cè)試作為基本構(gòu)建塊的開發(fā)團(tuán)隊(duì)的要比那些不使用的團(tuán)隊(duì)開發(fā)速度更快。對(duì)于大多數(shù)想在開始之前不進(jìn)行測(cè)試的情況下潛入項(xiàng)目的開發(fā)人員來說,這起初是違反直覺的。但是一旦測(cè)試到位,開發(fā)人員就可以在發(fā)現(xiàn)難以解決的代碼之前迅速發(fā)現(xiàn)問題。通過持續(xù)的測(cè)試和監(jiān)控,團(tuán)隊(duì)可以設(shè)定性能目標(biāo),衡量輸出并不斷改善其周期時(shí)間和質(zhì)量。
結(jié)論
DataOps的目標(biāo)是為了使數(shù)據(jù)管道和應(yīng)用程序的開發(fā)變得更加嚴(yán)謹(jǐn),可重用和自動(dòng)化。 DataOps可以幫助數(shù)據(jù)團(tuán)隊(duì)從數(shù)據(jù)孤島,以及被積壓和無休止的質(zhì)量控制問題纏身的狀況轉(zhuǎn)變?yōu)槊艚?,自?dòng)化和加速的數(shù)據(jù)供應(yīng)鏈,并且它能持續(xù)改善并為企業(yè)帶來價(jià)值。
譯者介紹 Grace,程序員,研究生畢業(yè)于SUNY at Stony Brook,目前供職于Linktime Cloud Company,對(duì)大數(shù)據(jù)技術(shù)以及數(shù)據(jù)可視化技術(shù)感興趣。