什麼是Data Mesh?
Data Mesh是一種"大規模管理和存取分析資料的分散式社會性技術方法"(A decentralized sociotechnical approach in managing and accessing analytical data at scale)。所謂社會性技術方法是指:一種識別複雜組織中人與技術架構和解決方案之間互動的方法。
Data Mesh同時也是一種對資料的來源、管理和存取的大規模分析的新方法。這是一種資料管理方法,不僅優化了分析資料共享解決方案的技術卓越性,而且還改善了所有相關人員(資料提供者、使用者和所有者)的體驗。
因為現代企業越來越數位化,導致資料呈現指數型的成長。資料的"大量(Volume)、多樣性(Variety)、變化速度(Velocity)"加上企業的複雜性(也就是資料產生端與使用端越來越多),造就了Data Mesh的誕生。
Data Mesh讓我們在現複雜的商業世界中對資料有新的應用方式: 如何大規模地"擷取、分享並從中創造價值",特別是AI當道的今天。Data Mesh讓我們從中心化的資料與擁有變成去中心化的模式,去中心化能讓企業中的各個組織應對現代企業的複雜性。
現代的雲端運算讓企業的系統變得是:
- 分散式架構
- 服務導向設計
- 使用標準的API進行溝通
- 每個業務領域都有自治團隊的組織
由此產生的資料變得極具複雜性,因此我們需要Data Mesh這一現代化方法來應對,尤其對資料使用者 — 資料分析師或科學家。這些資料使用者大部分仍深陷需要"及時地"取得"高品質與可信任"的資料。而資料工程師則需要對上游不可靠的資料來源轉換成對企業是有意義的商業資料,以讓其他角色(特別是資料分析師或科學家)可以使用。
簡而言之,Data Mesh是一種企業的"數據策略、數據架構與數據營運模式"的主幹,得以讓企業能夠以"大規模且高速"的狀態下使用資料與機器學習進行實驗。
從單體式資料湖轉變成分散式Data Mesh
許多企業正在搞資料湖(通常都會變資料沼澤 — 一團亂),希望大規模實現資料民主化,以提供業務洞見並最終做出自動化智慧決策。 基於資料湖架構的資料平台具有常見的失敗模式,導致無法達成一開始想要的目標。 為了解決這些失敗模式,我們需要改變資料湖或其前身資料倉儲的中心化範式。 我們需要轉向一種借鑒現代化分散式架構的範式:將業務領域視為首要關注點,應用平台思維建立自助資料基礎設施,並將資料視為產品。
轉變成資料導向的組織是許多企業仍在努力的策略性目標,因為這些企業都想達成智慧賦能(Intelligently empowered):
基於資料和超個人化提供最佳客戶體驗; 透過資料驅動的優化降低營運成本和時間; 並賦予員工趨勢分析和商業智慧的能力。
什麼是資料湖?
基本上資料湖是中心化的、單體式的、與業務領域無關的。資料湖已歷經三個世代的轉變:
第一個世代 —
商業版的Data warehouse和BI平台; 很貴的解決方案給企業帶來了同樣巨額技術債; 數以千計的無法維護的 ETL 作業、表格和報告中的技術債務,只有一小部分專業人員能夠理解,從而導致對業務的正面效應未被充分認知。
第二個世代 —
以資料湖為終極解決方案的大數據生態系; 複雜的大數據生態系統和由中心化團隊(超專業的資料工程師組成)的長期運行的批次作業創造了資料湖怪獸,最多只能實現少量的有見解的分析; 承諾過多效益不足。
第三個世代 —
與第二是世代平台相似,具有現代化風格:
- 透過Kappa 等架構進行資料串流處理以實現即時資料可用性
- 統一"批次和串流"處理以進行資料轉換(使用 Apache Beam 等框架)
- 完全採用基於雲端的儲存託管服務、資料流水線執行引擎(data pipeline execution engines)和機器學習平台。
顯然,第三代資料平台正在解決前幾代資料平台的一些差距,例如即時分析,並降低管理大數據基礎設施的成本。 然而,它具有許多導致前幾代都的有問題的潛在特徵。
單體式且中心化資料平台的問題
單體且中心化平台的特徵有:
- 從企業的各個地方取得資料,包括營運和交易系統和業務領域,或能增強企業知識的外部資料提供者。
- 清理、豐富化來源資料並將其轉換為可滿足不同資料取用者需求的可信任資料。
- 向具有不同需求的各種資料取用者提供資料集。 其範圍從分析取用到探索資料以尋找見解、基於機器學習的決策,再到總結業務績效的商業智慧報告。
然而這樣的方式會造成單一資料平台託管擁有邏輯上屬於不同業務領域的資料。但近年來我們能將"Domian Driven Design和業務整體脈絡"應用到我們的營運體系中,但我們在很大程度上忽略了資料平台中的業務領域概念。 我們已經從面向業務領域的資料所有權轉向中心化且與業務領域無關的資料所有權。
這樣的中心化的方式適用較小型的組織,例如中小企。因為他們資料來源產生端與使用端較少;但對大型企業來說就不是如此。因為這樣的架構對大型企業來說有兩個問題點:
- 資料到處都和資料來源擴散:
隨著越來越多的資料變得到處都是,在同一個平台的控制下使用所有資料並協調它的能力逐漸減弱。 我們需要擷取資料並儲存在一個地方才能從多種資料來源取得價值的假設將限制我們應對資料來源激增的能力。 資料科學家和分析師等資料使用者需要以低成本(時間與技能)處理一組不同的資料集,以及需要將營運體系的"資料運用"與用於分析目的的資料分開。但對於業務線一堆且不斷增加新來源的大型企業來說,現有的中心化解決方案並不是最佳答案。 - 企業的創新速度與資料取用者擴散:
企業對快速實驗的需求引入了更多使用平台資料的案例。 這意味著對資料進行越來越多的轉換 — — 聚合、預測和切片,以滿足創新的測試和學習週期。 滿足資料取用者需求的較長回應時間從來是企業在運作中產生摩擦的一個點,並且在現代資料平台架構中仍然如此。
Data Mesh並不是具有穀倉效應的隔離式資料點。Data Mesh也不是提倡將分散的、孤立的、面向業務領域的資料隱藏在營運體系中,更不是提倡建立多個分散的資料倉儲,因為這些資料倉儲是多年累積的技術債的結果。但這並不是把所有資料塞在一起的理由,並且是由一個對業務沒有理解的中心化技術團隊來管理。
耦合流水線的拆解
傳統資料平台架構的第二種失敗模式與我們如何分解架構有關。 在把尺度放大到中心化資料平台,我們發現圍繞著資料的"擷取、清理、聚合、服務"等功能進行架構分解。企業中的架構師和技術團隊管理者根據平台的成長來分解架構。 如前面提到,引入新資料來源或回應新資料取用者的需求是要讓平台不斷成長。 架構師需要找到一種方法,透過將系統分解為非常小的建構區塊(Building Block)來擴展系統。 建構區塊是具有高功能內聚性的可獨立部署的元件,其中包括系統正常運作所需的所有結構元素。 將系統分解為其建構區塊背後的動機是建立自治型團隊,每個團隊都可以建立和操作一個建構區塊。 這些建構區塊跨團隊的平行作業,以實現更高的營運可擴展性和速度。
受前幾個世代資料平台架構的影響,架構師將資料平台分解為資料處理階段流水線(pipeline)。 一個在非常High level中圍繞處理資料具內具化的技術實現能力的流水線; 即資料的"擷取、準備、聚合、服務"等的能力。
儘管此模式透過將團隊分配流水線的不同階段來提供一定程度的規模,但它具有固有的限制,會減緩功能的交付速度。 它在流水線的各個階段之間具有高度耦合,以提供獨立的功能或價值。 它是垂直於變化軸進行分解的(如下圖)。
以音樂串流為例, 網路音樂串流平台圍繞著其提供的媒體類型有著很強的業務領域領域架構。 他們通常以“歌曲”和“專輯”開始提供服務,然後擴展到“音樂活動”、“podcasts”、“廣播節目”、“電影”等。啟用單一新功能,例如“歌曲”的可見性podcasts播放率”,需要改變流水線的所有組件。 團隊必須引入新資料擷取服務、新的資料清理和資料準備以及觀看podcasts播放率的資料聚合。 這需要不同元件的實作之間的同步以及跨團隊的發布管理。 許多資料平台提供通用和基於配置資料擷取服務,可以應對擴展,例如非常容易添加新來源或修改現有來源以最大限度地減少引入新資料來源的精力。 然而,這並沒有消除從資料取用者角度引入新資料集的端到端依賴性管理。 儘管在表面上,流水線架構可能看起來好像我們已經實現了流水線階段的建構區塊,但實際上,整個流水線(即整體平台)是必須變更以滿足新功能的最小單元:解鎖新資料集並使其可用於新的或現有的資料取用。 這限制了我們回應新資料取用者或資料來源而實現更高速度和規模的能力。
孤立且超專業的資料所有權
現今資料平台的第三種失敗模式與我們如何建立建置和擁有該平台的團隊有關。 當我們足夠近距離觀察"建置和維運"資料平台的人員的日常作業時,我們發現一群超專業的資料工程師與組織的業務部門是具有穀倉效應的;他們是一群非常專業的資料工程師。 資料的來源或使用地點以及將其用於行動和決策的地點。 資料平台工程師不僅在組織上是孤立的,而且還根據大數據工具的技術專業知識進行隔離並分組到一個團隊中,而通常缺乏業務領域知識。
Data Mesh的目標
- 優雅地應對業務的本質複雜性、波動性和不確定性
- 面對成長保持敏捷性
- 加速獲得與投資成正比的價值
也就是大規模增加資料的價值,隨著組織的發展保持敏捷性,並在複雜多變的業務環境中擁抱變革。
過往阻礙企業的舊方法
- 單體集中式的瓶頸
- 失去業務的整體脈絡與資料的真實性
- 資料流水線(Data Pipeline)的脆弱性與協調性
- 缺乏資料所有權和問責制
- 人才缺乏 — 沒有資料工程師來管理資料
- 資料的治理是缺乏效能與效率
Data Mesh賦能
- 讓業務、技術、資料保持一致
- 營運資料和分析資料之間的差距縮小
- 去除資料流水線與本地化的代碼/資料整合到具有明確規則的單一整體
- 有明確界線的業務領域資料產品所有權
- 新世代資料平台抽象化讓非技術人員的資料"發展和使用"
- 將治理政策自動化並嵌入每個資料產品中
使用Data Mesh的轉變
- 組織上 —
資料從中心化的擁有權轉變為去中心化的業務資料擁有權 - 架構上 —
單體式轉變為分散式 - 技術上 —
資料是代碼的副產品”轉變為”資料與代碼是一個整體 - 營運上 —
由上而下的治理轉變為聯邦式的治理 - 原則上 —
資料作為資產的樣式進行收集”轉變為”資料作為一個產品進行跨團隊的分享 - 基礎設施上 —
碎片化的平台”轉變成”ˊ整合性平台
Data Mesh原則
- 業務領域所有權(Domain ownership) —
也就是去中心化的資料所有權,藉以消除資料來源端與使用端的差異。而每個團隊對其擁有的資料就需要對其負責。 - 資料就是產品 —
資料不只是資產,資料產品可以用業務領域來區分。每個業務領域之間可以分享其業務領域的資料,並且將資料視為產品。所謂的資料產品(Data Product)就是經過精煉的高品質資料,並且能夠分享給其他業務領域。分享的同時是具有正確的權限、容易理解與使用。 - 自助式的資料基礎設施 —
讓跨職能團隊提供資料產品給不同的業務領域並且能消除分享資料時的各項摩擦,同時能保護其資料安全。 - 聯邦式的資料治理 —
兼顧資料產品的互操作性與品質,設置良好的治理政策以便能有自信與有效率的分享資料,所以自動化平台是不可或缺的要素。