一文詳解企業數據平臺建設思路
目前很多傳統行業的企業,都希望構建自己的數據平臺。其目的大都是希望通過借鑒互聯網公司積累的成熟的技術經驗,構建自己的數據能力,最終實現數據驅動型企業。
數據平臺早已不是什么新鮮事物,甚至在當前大家都在談論數據中臺的時候,還顯得有點過時。但大家對于數據中臺的認識仍處于探索階段,并沒有形成讓行業信服的一致的觀點。但一提到數據平臺,大家對其應該包含的內容還相對比較清楚。所以,本文嘗試選擇“數據平臺”這個可能有點過時但是相對務實一點的詞語來組織內容。無論這個東西在概念上最終被定義成什么,它要解決的企業中的數據問題是明確而具體的。
什么是企業數據平臺
企業建設數據平臺想要解決什么樣的數據問題?讓我們先來看看數據是如何發揮它的價值的。
數據在企業中如何應用
一般企業內部的數據會以兩種方式來使用:
- 支持BI分析,即通常我們所說的各種數據報表應用,它也包括數據的上卷下鉆分析。
- 支持自助式的探索式的數據分析,通常包括統計分析和建模分析。
不管是哪種方式,首先要有數據。一般的做法是將數據從業務系統搜集到一個專門用于分析的數據存儲中。再在這個系統中執行數據計算。
對于報表應用,通常我們需要周期性的將一些數據指標計算出來,并存儲為某一張數據庫表,供BI系統快速查詢。
對于探索式的數據分析,我們常常需要提供一個可編程的接口,以便數據分析師可以用于數據處理和分析。考慮到數據分析師的技術背景,這里的編程接口通常是SQL和Python。
數據平臺功能
了解了數據應用的流程,我們就可以將數據平臺的功能大致梳理出來。
- 數據接入支持,需要提供一個接口以便業務團隊可以快速的把數據接入到數據平臺。
- 數據開發支持,需要提供接口用于進行數據計算,以便可以算出數據指標提供給BI工具。
- 任務調度支持,需要將上述的計算程序周期性的調度起來,以便可以周期性的計算出數據指標。
- 探索式數據分析支持,提供SQL和Python接口給數據分析師使用。
從更方便的組織和管理數據的角度來看,數據平臺還需要具備如下能力:
- 數據安全管理。比如數據權限控制,實現無權限讀寫的數據無法讀寫,權限申請流程簡單等;還比如數據脫敏控制等。
- 數據質量管理。比如可以方便的查詢數據標準,根據數據標準執行數據檢查等。
- 數據發現支持,便于平臺使用者能夠快速找到數據和理解數據。這里就包括數據目錄,元數據管理,數據血緣管理等一系列數據管理功能。
從軟件架構的角度來說,為了更好的支持數據理解,以便高效的進行指標開發和數據分析,一般我們會進行一定的數據模型設計。為了支持高效的復雜數據計算,一般數據平臺中會沉淀大量的可以復用的基礎指標。
所以,從改進軟件開發的角度來看,數據平臺還將具備的功能如下:
- 數據建模能力支持
- 分層的數據架構支持
- 維護數據開發規范、設計建議、最佳實踐等指導性的文檔
如果用一張圖來概括上面的數據平臺,就形成了大家常??吹降娜缦碌臄祿脚_架構圖。
其中,如果企業對建模能力有特別強的需求,通常我們還會將機器學習模型相關的功能進一步劃分出來,形成一個機器學習平臺。
數據平臺建設思路
了解了數據平臺是什么,我們再來看看企業數據平臺建設思路。
中心化還是非中心化
首先從組織形式上面來看,一般而言,數據平臺會是一定程度的中心化和集成式的。
一提到中心化,想必有人會不服,認為這樣的中心化的系統和組織一定不能成功。我曾經就聽到有人堅決否定中心化的價值,其舉出的反例可能有以項目為單位的小的敏捷團隊、去中心化的區塊鏈、去中心化運維團隊的devops思想或者是去中心化測試團隊的敏捷實踐等等。
中心化確實有其不足,但是我們也要看到它的很多優點,比如:
- 可以避免各個團隊重復建設帶來的資源浪費
- 統一的數據管理可以更好更快的推進企業內部的數據策略的落地,比如數據標準,數據安全等
- 實現計算和存儲資源共享,節省開支
- 更方便的實現跨業務線數據集成
其實,中心化與非中心化哪種方式更好,與企業的規模、文化和組織結構相關。
比如,一些規模比較大的業務線,人才資源多技術能力也強,通常完全有能力自建一套數據平臺。這樣的業務線內部通常業務也特別復雜,數據量特別大,且對定制能力有著很高的要求。這時,企業級別的中心化數據平臺帶來的成本優勢就顯得不夠有吸引力了。反而會由于需要很多的跨團隊溝通協作而降低了效率。
但是,如果我們把這樣的業務線當做一個稍小的獨立自治的組織來看,在其內部通常是劃分為更小的業務團隊,在這些業務團隊間建設一個中心化的數據平臺同樣會帶來價值。
再比如,有一些業務線,雖然也很大,但其內部的組織結構是按照以業務隔離性非常強的項目組為基本單元組織而成的。每個項目組形成一個小的全功能敏捷團隊,各自探索式的推動業務發展。這樣的情況下,團隊間幾乎不用數據共享,且對于數據管理要求也不高,他們的第一優先級是快速推動業務發展。于是中心化的數據平臺的價值也不那么明顯了。他們甚至可能連業務線級別的數據平臺都不需要,而是根據團隊各自的需要自建一些小的數據平臺即可。
上面這樣的情況可以舉出的例子很多,比如某大型通訊企業,其內部的消費者業務線就建設了獨立的數據平臺,為大量的內部項目團隊提供中心化數據服務,而運營商務線則由于其面向企業提供服務的特性,項目間業務相似性低、隔離性高,更傾向于每個團隊自建小的數據平臺。
再比如,很多的銀行或者零售行業企業,其內部業務通常比較成熟,常見的情況是建設一套統一的中心化的數據平臺。
所以,回到最初的數據平臺建設思路上,一般而言,數據平臺會是一定程度的中心化和集成式的。但究竟是哪種程度的中心化,還要根據具體的企業情況來看。
對于本文最初提到的傳統行業的情況,他們大多數并不是以軟件服務為核心,而是以其現有的生產或者信息業務為中心(比如汽車、零售、保險業務)。在這些企業內部,軟件常常只是輔助作用,因而軟件開發團隊的能力也不是特別強。對于這些企業,建設中心化集成式的數據平臺可能是更為合適的方式。
采用精益的思想來逐步構建數據平臺
再從數據平臺建設團隊的職責來看,一般而言,數據平臺建設需要以某一高價值數據分析(包括業務指標或者機器學習模型)需求來拉動,在實現業務價值的同時慢慢的完善平臺,最終實現企業級的數據平臺。
與此相對應的,很多企業一上來就直接想要建設一個功能大而全的數據平臺,其中很多都成為了失敗的案例。這一做法的典型思路是,先對標一個行業標桿的數據平臺,組建一個大型團隊開始做開發。開發過程中,他們對于數據平臺誰來使用,產生了什么價值關注不夠。最終的結果是,項目投資人花了大筆經費卻遲遲看不到價值,從而慢慢減少投資導致項目流產。
采用價值拉動的模式,用精益的思想來指導數據平臺建設。以價值實現為目標,每一個平臺功能的實現都對應著立即可見的價值實現。長期以往,通過不斷的進行技術重構和架構演進,平臺也就慢慢形成。
有人可能會說這樣建設而來的數據平臺大家都不一樣,將缺乏一個行業統一標準。然而,企業是以實現經濟效益為前提的,為什么數據平臺非得是行業的標準實現呢?數據平臺具有非常強的技術相關性,其最終形式本身就會因企業和團隊的不同而不同。試想,對于某一個功能的軟件實現,如果交給不同的開發人員去做,最后產生的設計和實現的代碼會一樣嗎?然而,其實我們并不是很關心代碼是否一樣,只要最后的功能實現了,目的也就達到了。所以,數據平臺的最終形式很可能不同企業完全不同。
一個成功的數據平臺建設的過程通常會是:
- 組建一個數據平臺團隊
- 基于開源技術搭建一個具備基本功能的數據平臺
- 為了實現某一個業務指標計算,接入某一個系統的數據,從而順便完成了一定的平臺數據接入功能
- 為了實現某一個機器學習模型,接入另一個系統的數據,從而順便增強了之前的平臺數據接入功能,且順便完成了某一些通用的可復用的指標的計算
- 為了支持更多的探索性數據分析,根據需要,數據平臺支持了自助式的以SQL為接口的數據分析
- 為了支持更多的探索性數據分析,根據需要,數據平臺支持了自助式的以Python為接口的數據分析
- 根據數據安全的需要,數據平臺完善了對于數據權限的管理,數據加密脫敏的支持
- 隨著數據平臺功能逐步完善,業務團隊更多的自助的進行數據接入和數據分析,數據平臺團隊則專注在平臺功能不斷增強及平臺穩定性維護上面
總結一下。本文首先討論了什么是數據平臺這個問題,嘗試回答了數據平臺的定義和功能范圍。接著,結合作者本人所經歷過的數據項目經驗,對建設企業數據平臺的思路進行了一定的梳理。
本文希望能對從事數據工作的同仁有所啟發,也希望可以讓非數據工作的小伙伴對數據工作有一定的認識。