聲明性數據基礎設施為數據驅動企業提供動力

  • 2019 年 12 月 4 日
  • 筆記

客座文章來自MayaData的Kiran Mova和Chuck Piercey

大數據、人工智能/ML和現代分析技術已經滲透到商業世界,成為企業戰略的關鍵元素,以更好地服務客戶、更快地創新和保持領先的競爭。數據是所有這些的核心。在本博客中,我們將重點討論Kubernetes和相關的容器原生存儲技術,如何使數據工程師(即DataOps團隊)能夠構建可伸縮的、敏捷的數據基礎設施,從而實現這些目標。

成為數據驅動企業是戰略性的

企業正在增加支出,以支持數據驅動的決策,並培育數據驅動的文化。最近一項針對企業高管投資的調查顯示,數據驅動分析對高管層的重要性。

需要強調的一個數據點是,與技術和工具相比,人員和流程對採用構成了更大的挑戰。

什麼是DataOps

Kubernetes改變了應用程序開發的前景。隨着在kubernetes管理的數據基礎設施中出現的數據操作器,我們進入了一個稱為DataOps的自管理數據基礎設施的新世界。受DevOps的啟發,DataOps是一種允許分佈式自治團隊的數據分析師、數據科學家和數據工程師使用共享KPI進行協作的方法。

「DataOps源自軟件工程領域的DevOps運動,它彌合了開發、QA和操作之間的傳統差距,因此技術團隊能夠以更快的速度交付高質量的輸出。類似地,DataOps彙集了數據涉眾,如數據架構師、數據工程師、數據科學家、數據分析師、應用程序開發者和IT操作……DataOps將嚴密性應用於管理數據流和創建分析解決方案的開發、測試和部署代碼。」 – Wayne W. Eckerson DataOps白皮書。

Kubernetes成功的一個關鍵方面是,DevOps可以通過版本管理的Intent/YAML文件(又名GitOps)驅動所有內容,從而像管理代碼一樣管理基礎設施。同樣的方法也可以應用到DataOps。

孤立的團隊和流程在數據運營中失敗

由圍繞專門團隊構建的組織孤島生成的數據管道(目前仍被許多企業使用),將會因為交付責任分散到這些功能組而受到影響。組織結構將開發過程限制為能夠彌合工具之間的差距的東西,而這種方法不可避免地容易出現官僚主義本身造成的失敗。

集成的團隊和流程在DataOps中獲得成功

最近一篇關於分佈式數據網格的文章,對數據工程/科學團隊如何變得更加有效和敏捷,提出了許多組織和技術上的更改,比如使用DevOps/SRE文化的產品開發團隊所取得的成功。從工具焦點轉移到CI/CD過程焦點是範式的核心。過程和開發執行都必然是共同發展的,並且,毫不奇怪,這樣的團隊通常是分佈式的,就像他們構建的架構一樣。在他的論文中,Zhamak Dehghani提出了一種將數據作為產品進行管理的方法,這種方法與應用於商業軟件產品和團隊的DevOps技術類似。

他的方法的核心是重新定義團隊及其職責,將架構環境從關注技術和工具(如數據工程師、ML工程師、分析工程師)轉移到一個更跨學科的概念,該概念的結構圍繞着將數據本身作為產品來處理。在這種結構中,每個數據產品都有一個獨立的團隊,可以在使用標準API契約公開數據結果的同時進行創新、選擇工具和實現。

這些團隊由各種技能集組成:數據工程師、數據科學家、數據分析師、ML工程師、決策人員、數據收集專家、數據產品經理和可靠性工程師(成功的數據產品團隊的角色很明確,個人可以同時扮演多個角色)。至關重要的是,所有團隊成員都與一組共享的DataOps流程進行交互。

聲明數據基礎設施

DataOps依賴於一個數據基礎設施,該基礎設施可以抽象出特定於平台的特性,並允許產品團隊在利用共享資源的同時專註於他們擁有的數據。DataOps的關鍵支持技術是聲明性數據基礎設施(Declarative Data Infrastructure,DDI)。DDI指的是數據和存儲基礎設施上運行Kubernetes,並轉換計算的技術堆棧、網絡和存儲轉換成一個可擴展的、彈性和自我管理的全球資源,每個自治團隊可以使用,而無需等待批准從中央存儲管理員。Kubernetes和相關技術已經成為支持DDI技術堆棧的標準。

例如,上面數據網格例子中的數據基礎設施由三層組成:

  • 數據流水線(Data Pipeline) – 像Airflow框架
  • 數據訪問層(Data Access Layer) – 像Apache Kafka或Postgres
  • 數據存儲層(Data Storage Layer) – 像OpenEBS。

在過去的幾年裡,我們看到相當多的技術在數據管道和數據訪問層下向Kubernetes移動。例如,數據工程團隊從基於Hadoop的系統,轉移到類似Pachyderm的系統中並不少見,他們使用Airflow將數據管道移動到Kubernetes中,以降低基礎設施的成本,並創建可重複的、有彈性的和可擴展的數據管道。

在過去兩年中,在數據管道的實施和編排方面,像Airflow這樣的Kubernetes項目已經成熟,並被Lyft、Airbnb和Bloomberg等公司採用。

相應地,數據管道的採用觸發並啟用了用於數據訪問和存儲層的新產品和工具。

演示數據訪問層遷移到Kubernetes的一個很好的例子是Kubernetes上的Yolean預構建的Kafka集群,它提供了一個生產質量高、可定製的Kafka-as-a-service Kubernetes集群。最近,Intuit使用這個模板將他們所有的金融應用程序重新託管到Kubernetes上。

有兩個組件使數據訪問層更容易。第一個是shim層,它提供聲明性YAML,用於為本地版本或託管服務版本實例化數據訪問層(如Kafka)。這種運行數據訪問層的方法幫助用戶從當前實現遷移到Kubernetes。一個問題是它將用戶鎖定在特定的實現中。另一種方法是讓操作器構建數據訪問層,以便它可以在任何存儲層上運行,從而避免雲供應商鎖定。

數據存儲層也出現了類似的變化,部分原因是由於新的、固有的分佈式工作負載的增加以及一組新用戶的出現。有幾個Kubernetes原生存儲解決方案是使用相同的聲明性哲學構建的,並由Kubernetes本身管理,我們將其稱為聲明式數據平面(Declarative Data Plane)。

聲明式數據平面

數據平面由兩部分組成:

  1. 訪問層,主要涉及對存儲的訪問;以及
  2. 數據服務,像複製、快照、遷移、遵從性等。

CSI – 標準的聲明式存儲訪問層

Kubernetes和CNCF供應商以及最終用戶社區已經能夠以CSI的形式實現供應商中立的標準,從而使任何存儲供應商都能夠為Kubernetes工作負載提供存儲。工作負載可以運行在任何類型的容器運行時上 – docker或hypervisor。在某種程度上,一些自管理數據訪問層產品的成功可以歸因於CSI作為一個標準,以及存儲類、PVC、客戶資源和操作器等結構。

然而,CSI將許多核心數據基礎設施實現細節留給了供應商和服務,比如:

  • 數據局部性和高可用性
  • 遵守GDPR或HIPPA
  • 多雲和混合雲部署
  • 分析和了解不同團隊的使用情況

值得慶幸的是,Kubernetes通過自定義資源和操作器的可擴展性支持一種新的存儲技術,這種技術是Kubernetes原生的,有時也稱為容器附加存儲(Container Attached storage,CAS)。CAS以聲明式的方式管理到存儲設備的數據服務。

聲明式(可組合)數據服務

根據應用程序的需求,可以使用許多可用選項之一構造數據平面。Kubernetes和容器幫助重新定義了存儲或數據平面的實現方式。

例如,對於像Kafka這樣的分佈式應用程序,它具有內置的複製、重建和功能 – 本地PV正是數據平面所需要的。在生產中使用本地PV,通常涉及供應、監視和管理備份/遷移 – 數據基礎設施工程師只需要使部署Kubernete原生工具,像操作器(能夠進行靜態或動態配置)、Prometheus、Grafana、Jaeger作可觀測性,Velero – 作備份/恢復。

對於另一組應用程序,可能需要部署能夠執行複製的數據平面 – 在集群內、跨集群、跨區域/雲、快照和克隆。利用自定義資源和操作器,Kubernetes原生項目,比如Rancher、Longhorn和OpenEBS的出現,對抗雲供應商鎖定Kubernetes生態系統,不僅提供一個統一的經驗和工具來管理本地或雲存儲資源,還利用和優化企業已經投資的傳統存儲。

下一代:聲明式數據平面

通過統一的體驗和聲明式接口來管理存儲/數據服務,數據工程師可以以標準的方式與數據基礎設施進行交互。在CSI基礎上,OpenEBS、Velero等項目、KubeMove、SODA基金會(又名Open Data Autonomy/OpenSDS)等標準正致力於為本地和雲實現易用的Kubernetes存儲服務,並正在推進聲明式數據平面(又名Declarative Data Plane,DDP)的標準化。

DDP為下一代分佈式應用程序的DataOps提供了幾個架構上的重要元素:

  • 使自治團隊能夠管理自己的存儲
  • 可擴展的多語種大數據存儲
  • 靜止和運動數據的加密
  • 計算和數據本地性
  • 遵守GDPR或HIPPA
  • 多雲和混合雲部署
  • 備份和遷移
  • 分析和了解不同團隊的使用情況

DDI項目由大型企業的基礎設施團隊支持,這些團隊已經採用了Kubernetes,並且正在使用Kubernetes和OpenEBS等項目來交付:

  • Etcd即服務
  • ElasticSearch即服務
  • PostgreSQL即服務
  • 多種類型的ML流水線(一種很有前途的流水線是來自GitHub的MELTANO)
  • Kafka即服務

這些實現表明企業客戶正在充分利用聲明式數據基礎設施提供的功能。這些企業正在利用DDI在數據層提供的重要體系結構增強,以交付更快、更好和具有競爭力的差異化企業分析。DDI有助於優化基礎設施/成本優化的使用。

聲明式數據基礎設施已經存在

管理數據基礎設施的聲明式(GitOps)方法已經存在。我們最近聽到一家大型企業的高管說,除非技術堆棧是聲明式的,否則它是不可操作的。