數據中臺發展至今,大體經歷了4個重要階段:數據庫——數據倉庫——大數據平臺——數據中臺。每次新的變革,都是為了解決上一階段存在的問題。
當前,走向云原生成為數據中臺的必然和必須。
一、云原生從何而來?
云原生是用于指導如何在云上構建和運行應用的方法論。
我們認為,“云原生”并不是一個新的概念。回顧云計算史,從個人端應用到企業級應用,都早已開始“上云”。
起初,這些上云的“非原住民”應用,延續了私有化部署的技術架構,把本地軟件不加修改地通過ECS遷至云端。而ECS的弊端在于只能承載計算,無法實現存儲。雖然上云后的應用實現了業務打通,但隨著業務擴大,國內服務器租用服務器托管,原有的架構“可用性”明顯下降。
國內云廠商為了解決數據存儲問題,制作了云磁盤,將其掛靠在云主機上,實現數據備份,且無需更改程序。傳統軟件上云的“高可用”問題得以解決。
然而,這種方式引發了另一弊端——成本高。客戶把Hadoop不加修改直接部署到ECS節點上,數據通過HDFS存儲在云磁盤上,需花費大量成本。因此必須修改HDFS底層,把數據存到對象存儲上。
隨著需求不斷豐富,系統必須按照IaaS、PaaS的技術特點進行重構,以便跟上業務和數據的爆炸性增長。 在私有化部署以及上一代傳統技術的軟件架構運維方法論的基礎上,帶著“高可用”、“低成本”等屬性,“云原生”升級而出。
二、云原生數據中臺具有哪些技術要素?
“云原生”概念發展至今,我們已并不陌生。而為什么要強調“云原生數據中臺才是未來”?分級多域數據治理的剛需、云原生技術降本增效的天然特征、國內基礎設施自主可控的要求……都將數據中臺推向云原生。
因此,我們將云原生數據中臺的技術要素歸納為6點:CI/CD(持續集成持續交付)、容器化、對象體系、存儲計算分離、跨云多域數據治理和元數據管理。
1. CI/CD(持續集成持續交付)
CI/CD的本質是提高開發和部署效率。
在業務量巨大的情況下,大數據和云的運維人力成本極高。因此需要使用大量的自動化工具和大數據預測算法進行自動化運維。通過版本管理系統和DevOps基礎設施,實現自動化測試和持續集成。
一個典型流程是,程序員提交代碼到特定的tag,觸發測試接口自動化測試腳本執行并發送報告。由此實現測試、發布和部署自動化。在此基礎上構建特定的數據環境,對重要接口和鏈路進行自動化檢測。
2. 容器化
單個容器的啟動時間更快,占用空間更小,而且可以根據實際應用的大小來彈性分配資源,無需額外采購服務器,加快研發速度。使用容器編排基礎設施,對服務和作業進行治理,根除版本地獄,大幅度提高運維和集成效率。
容器化編排與CI/CD是相互結合的。在數據中臺領域,往往幾十臺機器、上百個進程同時運行,且在這些進程中不僅要運行本身的程序,也要運行客戶的程序。
因此,底層微服務的進程繁多。基于安全合規要求,客戶之間的程序需要保持分隔。因此,數據中臺對于容器化的要求高于其他基于云原生的應用。
3. 對象體系
根據現有業務抽象出核心對象,以標準Restful風格提供API服務,解耦核心對象與業務層服務,以應對不同環境、不同業務場景的需求。這一系列正交的核心對象就構成了平臺對象體系,上層業務可在此基礎上構建應用,高效演進。
對象體系的API應該是優雅且向前兼容的,一旦發布,很難改變。例如,在WIN32研發時,出現某個單詞錯誤,幾十年后都無法修改。因此,需要把對象體系設計得極為詳盡和準確。
4. 存儲計算分離
由于云具有分布式特點,在云上無法天然將數據存儲在ECS中。因此必須將關鍵數據、狀態型數據存儲在對象存儲中。大量私有化組件都需要被改寫。如果把Hadoop、Spark等常規開源大數據引擎直接應用于云主機,海量數據帶來的存儲成本和吞吐壓力,很快會壓垮客戶。
因此,必須引入中間緩存實現計算存儲分離,將數據存儲到對象存儲上,同時兼容HDFS協議,能夠根據業務需求進行彈性擴容,就能大幅度降低成本,提高集群性能。
5. 跨云多域數據治理
云原生數據中臺的一大優勢在于可以實現跨云多域。