前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >声明性数据基础设施为数据驱动企业提供动力

声明性数据基础设施为数据驱动企业提供动力

作者头像
CNCF
发布2019-12-04 10:13:26
5750
发布2019-12-04 10:13:26
举报
文章被收录于专栏:CNCFCNCF

客座文章来自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)方法已经存在。我们最近听到一家大型企业的高管说,除非技术堆栈是声明式的,否则它是不可操作的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档