概述
究竟什么是中台, 业界并没有一个标准答案, 各个厂商都有自己的定义. 笔者比较认可的一个定义是 ThoughtWorks 提出的"企业级能力复用平台". 各个领域涌现出很多中台产品, 如业务中台, 搜索中台, 数据中台等. 其中数据中台这个词汇越来越多的出现在视野中, 从百度指数中可以看到这一趋势.
本文, 介绍有赞的数据中台产生的背景和建设思路. 简单来说, 有赞的数据中台解决的是"有赞的数据资产的加工和复用", 这里提到了数据中台的两个重要功能: 数据加工和数据复用, 分别由数据技术中台和数据资产中台解决. 数据技术中台主要解决数据的加工问题, 在众多大数据组件中,帮助数据开发者简化开发过程,提高开发效率. 数据资产中台主要是解决数据复用的问题, 要做到数据复用, 数据口径的统一是重中之重. 双管齐下, 提高对前台业务的支撑效率.
二. 数据团队面临的挑战
数据团队面临的挑战主要有两方面:
2.1 业务挑战
有赞是一家服务商家的 SaaS 公司, 服务数百万各行各业的商家, 提供电商解决方案. 有赞数据团队的服务对象主要是各个前台业务线, 所以一切故事的开始来源于业务团队. 因为业务特点决定, 目前有赞的数据需求有以下特点:
2.2 技术挑战
业务线各种各样的数据需求, 给数据团队提出了很多挑战, 主要体现在两方面:
组件多, 维护成本高
软件行业"没有银弹"在大数据领域显现的淋漓尽致. 在有赞的大数据技术栈中, 针对不同的场景, 分别维护着众多的大数据组件. 如数据基础组件的 HDFS, YARN 组件;离线计算元数据组件 HIVE META, 离线计算引擎 HIVE, Spark SQL, Presto;实时计算框架 Storm, Spark Streaming, Flink 等. 这些还只是组件本身并不包括组件配套的鉴权, 安全, 脱敏, 质量相关的服务.
开发门槛高
比如,针对最普通的实时计算场景,任务的开发者通常考虑以下几个方面问题:
对于没有相关经验的同学, 需要查阅多种组件的文档, 势必会有开发成本高的困扰.
三. 数据中台
按照产生顺序, 数据中台主要包括:
3.1 数据技术中台构建
所以, 技术上的复杂性, 带来了开发成本高的问题. 所以易用性的本质是为了提效, 数据技术中台由一些列工具型平台构成, 最主要的几部分如下:
基础组件运维管控
上文也有提到, 大数据基础组件种类繁多, 概括下来可以分为三类:
每类组件的管控需求都不尽相同, 比如在线存储组件对 rt, 可用性要求较高; 实时计算组件对延迟, 积压问题比较在意; 离线计算组件对数据吞吐能力要求较高, 但是因为是分布式计算,所以对慢盘, 慢任务需要有特别关注, 否则很容易一个节点拖慢整个集群.
运维管理好大数据组件, 做好动物管理员, 本身就是一件类似数据运营的工作, 找到系统的北极星指标, 关注它, 使用它来帮助做系统的优化.
总结下来, 做好数据组件的管理需要解决以下问题:
数据开发平台
数据开发平台关注的是数据的加工, 是数据开发用户(数据产品开发同学, 数仓开发同学, 业务线数据开发同学)最频繁接触到的产品, 数据开发平台主要包括两个平台型产品, 分别解决离线和实时场景的数据加工需求.
关于这两个平台, 有更具体的文章介绍(见参考文章),这里不在赘述.
数据资产管理平台
数据资产管理平台主要解决数据资源的管理, 数据资产遍布在各个大数据组件中, 有 hive 的表, 有 hbase 的表, 有 druid 的 datasource, 有 kafka 中的流, 各个组件的管控系统很难互相打通, 所以需要一个统一的数据资产管理服务, 来统筹大数据资源的管理.
总体说来, 数据资产管理平台关注的是数据的静态状态, 比如 Hive 的库表/字段, HBase 的表, Kafka的 Topic. 提供以下几方面的工具:
数据指标管理
如果说数据平台关注的是数据的加工/转换,既数据任务的管理; 数据资产管理平台关注的是具体的数据表和字段的质量和血缘; 那么指标库管理的就是数据指标的口径统一和复用. 在有赞, 我们通过指标库系统来管理数据指标的口径.
概括来说,数据指标被分为原子指标和派生指标. 原子指标为不可再分割的基础指标, 由数仓团队统一开发和管理, 原子指标数据一般落在数仓的 DW 层. 但是往往业务方需要的指标, 原子指标并不能满足, 所以业务方需要在原子指标的基础上再次加工成派生指标. 比如 交易数据中 gmv 是原子指标, 微商城业务最近 30 天的gmv 指标就是派生指标 wsc30dgmv.关于指标库, 后面会有单独的文章介绍.
统一数据服务
数据开发平台,资产治理平台,指标库只是解决了数据的加工和口径的统一的问题. 产出的数据并不是真正对外可用的. 绝大多数场景, 都需要数据开发的同学, 将加工后的数据, 通过数据交换组件, 导出到线存储服务中, 然后再开发数据接口, 供前台业务同学调用. 这里在线存储服务到接口这一层, 传统的业务支撑方式中存在大量的重复开发. 针对这个问题, 我们设计统一数据服务, 用户通过配置模板的方式, 生成数据 API 服务, 简化开发流程. 有赞的统一数据服务目前刚刚上线, 已经支持 10+业务场景, 后面会有单独的文章介绍.
3.2 数据资产中台构建
3.1 节中介绍了偏技术视角的中台, 涵盖了大数据的技术架构. 但是数据中台远不止技术设施,更主要的是数据资产的建设和组织, 因为对业务方而言,业务方更关注的是有哪儿些数据自产可以使用,而不是通过什么底层技术实现.
大数据团队提供的数据资产主要有以下几类:
在用户数目上, 目前离线数仓承接了大多数的数据需求, 这里仅仅对离线数仓展开介绍. 离线数仓中数据的开发主要发生在数据开发平台上, 包括数据 etl 导入任务, 数据开发任务, 数据 etl 导出任务,任务流的管理和调度. 借助于指标库和数仓开发规范做数据的加工. 整个开发过程中, 数据开发平台,数据质量管理,指标库平台会通过对命名, 指标的查重等手段来强制一些开发规范的执行, 从根本上解决数据指标口径一致和数据复用等问题.
有赞离线数据资产如上图中蓝色部分, 从底向上分为三层:
公共数据层
公共数据层主要承载数仓建模中的 ODS 层和 DW 层, 数据的开发和口径管理由数据仓库团队负责. 数据的开发和口径管理严格按照数仓开发规范和指标管理规范,提供公共的原子指标的开发.
垂直业务域数据层
垂直业务域数据层, 树妖曾在数仓建模中的 DM 层, 数据的开发和口径管理由业务方的数据开发同学负责. 业务方同样根据数仓开发规范和指标管理规范, 完成派生指标的开发.
数据服务层
数据在离线数仓中开发完毕后, 通过数据开发平台的 ETL 导出任务导出到在线存储层, 然后自行封装或者通过统一数据服务,提供在线数据接口.
这一分层在实时数仓中同样适用, 本文不展开
三. 总结&展望
有赞数据中台并不是一蹴而就, 而是面临着业务和技术上的挑战逐渐成长到现在, 当然还有很多待完善的地方, 比如指标库,统一数据服务还处于刚刚起步阶段. 后面有赞数据中台的建设将主要集中在成本,数据资产管理&复用,实时数仓等方面发力, 帮助我们的商家和业务方挖掘更多数据价值.