编辑推荐: |
本文主要介绍了传统数据开发遇到的挑战、TBDS基于DataOps数据开发实践
及TBDS DataStudio金融行业落地等。
本文来自微信公账号TBDS产品团队,由火龙果软件Linda编辑、推荐。
|
|
一. 传统数据开发遇到的挑战
以数据为中心的项目(如数据仓库、数据湖等)如软件项目一样,在规模和复杂性变得越来越大的时候,其执行会变得更加困难,使用传统的开发方式会面临着诸多挑战:
开发工具多样,开发过程中需要多工具多平台切换,影响开发效率
数据流水线长且复杂,管理和维护代价高
数据开发和分析割裂,不同角色之间协同效率低。
不支持协同开发,线下模式的代码开发和版本管理在多人协同开发过程中存在代码不一致等问题
数据质量低,缺少完整的数据测试、测试问题发现太晚或数据质量一般在事后考虑使得最终分析团队拿到的数据无法使用
生产问题修复成本高,缺乏测试自动化导致在生产中遇到问题进行大量的临时补救,造成返工和引发客户投诉
然而这些问题在软件工程领域得到了解决,在此情况下,DataOps的概念被提出,其借鉴了DevOps的原理,试图从DevOps吸取经验应用于数据领域,以增强数据流水线(Data
Pipeline)的管理和实践,改善数据质量,降低数据管理成本。
二. TBDS基于DataOps数据开发实践
随着DataOps概念的兴起,以及公司内外客户和合作伙伴关于DataOps相关需求的反馈,我们在TBDS大数据工具产品上如何落地DataOps理念有了初步的探索。
1、DataOps敏捷开发理念
DataOps是一种协作数据管理实践,将数据开发、管理、分析、运营融为一体的方法论,通过更好的协作和自动化来改善组织对于数据的使用。敏捷、协作、自动化和价值导向是DataOps的核心理念,也成为驱动数据中台良好运转的关键。
DataOps借鉴了DevOps的原理,是关于人员、流程和工具的结合,其中人员和流程体现的是组织文化和团队协作,工具关注的是数据领域开发、测试、部署的自动化。
2、TBDS DataStudio产品架构
TBDS作为端到端的企业级大数据解决方案产品,在产品设计上也借鉴DataOps的实践方法,在最新的5.2.0.0版本即将推出基于DataOps理念的工具产品“TBDS
DataStudio”,其作为TBDS新推出的一站式一体化数据开发管理平台,致力于用户在同一个在线集成环境下完成数据的开发、编排、测试、调度、发布和运维,目前已支持对接多种引擎,包括TBDS基础引擎(TDW组件),以及面向JDBC接口的MPP数据库(如TBase、Gbase、Greenplum等)和RDBMS数据库(如Mysql、Oracle等),整体产品架构如下:
当前TBDS DataStudio已经在金融行业数据中台项目中深度使用,详情参考下面章节“TBDS
DataStudio金融行业落地”。
3、TBDS DataStudio的DataOps特性
TBDS DataStudio1.0作为第一个版本当前聚焦数据开发全链路能力的打通和一体化开发体验,为了方便的介绍TBDS
DataStudio在DataOps敏捷开发下的产品特性,我们先来简单回顾下DataOps的开发过程。
DataOps借鉴DevOps的思路,但两者的开发过程也不尽相同,因为数据流水线(Data Pipeline)是数据生产的核心,从下图可以看出DataOps相比DevOps多了“编排”环节。
下面我从敏捷数据开发全流程介绍TBDS DataStudio的DataOps特性。
(1) 关于开发
用户的开发工作主要在开发空间模块完成,开发空间是DataStudio数据开发的资源准备区,用于开发和管理脚本资源,包括数据集成脚本(ETL)和数据计算脚本(SQL、Shell等),并为用户提供资源文件在线开发、调试、日志查看、变量配置、上传、下载和批量导入导出。
一体化开发和管理:TBDS DataStudio将不同类型代码和脚本的开发方式统一在一套环境下,其中对ETL类提供可视化拖拉拽开发方式,并对所有开发资源(包括jar、zip等)进行集中化管理。
数据开发模式:TBDS DataStudio通过开发空间和编排空间均可以实现代码的开发和测试,满足在数据开发过程中不同公司数据团队的组织划分和协作需求,这里我们支持两种开发模式:
1)敏捷开发模式:开发和工作流编排一体化开发模式,开发人员直接在编排空间先完成流程设计,并按节点实现代码的开发和测试。该方式适用于小型团队敏捷的需求。
2)标准开发模式:对数据开发人员区分脚本开发(如SQL或ETL)和工作流编排角色,脚本开发人员专注在开发空间完成个人承接的脚本任务的开发和单元测试,并对开发脚本有统一规范的组织和版本管理,编排人员按照按照业务流程编排工作流任务,完成调度配置,两角色相同协同。该方式适用于中大型团队。
代码的版本管理:开发空间完成的资源文件支持按照目录树按需选择导入和导出,方便用户集成到自有版本系统做版本管理,未来DataStudio开发空间会集成Git等版本控制系统,实现开发资源的统一存储和版本管理。
脚本一键转任务:在标准开发模式下,开发空间编写的脚本可通过任务导入的方式一键转换为工作流任务,减少复杂配置,提高效率。
辅助性数据开发:除了正常的开发功能支持外,DataStudio为开发人员提供平台统一的元数据库和函数(包括系统和自定义)查看的快捷入口,并支持与编排空间和调度一致的变量引用方式,辅助开发提升效率。
(2)关于编排
TBDS DataStudio的编排空间为用户提供了完善的任务编排能力,支持可视化任务开发、配置、编排和周期调度,底层支撑引擎为Guldan(前身为lhotse),在Guldan已有功能的基础上我们新增加事件调度和批量工作流编排的功能,以满足用户复杂的业务场景。
事件调度:支持通过外部事件驱动任务实例运行,事件调度全流程由触发程序、触发事件和监听任务组成,首先在事件管理模块根据业务定义触发事件,然后在任务的调度配置属性上配置该事件的监听并成为监听任务,此时监听任务启动后需要等待事件到达才可运行,此时可通过触发shell或触发接口两种方式生成时间,驱动监听任务执行。
批量工作流编排:为简化用户工作流和任务的创建以及复杂的任务依赖配置,TBDS DataStudio支持通过Excel的上传方式批量生成和配置任务以及工作流依赖,除了新建配置外同时也支持配置和依赖的更新,满足大规模任务编排场景,对于1000+工作流任务和依赖的配置可分钟级完成,大大简化用户配置的工作量。
任务版本管理:提供工作流任务的引用脚本和配置的版本新建删除、对比和切换。
变量引用:支持静态和动态参数引用,动态参数以时间为主,支持灵活的时间运算,静态参数包括项目参数、工作流参数和任务参数,变量值支持引用动态参数。
分支控制:提供工作流分支判断驱动下游任务的功能。
(3)关于测试
DataOps自动化测试是保障数据质量和提升分析和运维效率的关键,其针对用户提交的代码配合CI工具基于规则进行自动化测试,包括输入测试、业务逻辑测试和输出测试,一般来说,数据ETL处理链条比较长且业务逻辑复杂,自动化测试工具尝试通过多种规则的组合模拟ETL加工逻辑,最终实现测试目的。
当前TBDS DataStudio主要聚焦在数据开发过程中的测试,基于开发空间和编排空间可以完成基于ETL代码和脚本手动的单元测试以及工作流的集成测试。
单元测试:在开发空间编写测试用例代码,业务代码改动后通过手动和批量进行运行测试。
集成测试:对跨项目跨环境的工作流任务通过可视化DAG图功能进行一键运行测试。
未来DataStudio会提供完整自动化测试用例编写和执行的功能,并与CI工具打通,提升测试自动化效率。
(4) 关于部署
完成脚本开发和工作流测试后将进入到生产发布的环节,TBDS DataStudio支持开发生产环境一体和分离的两种模式下的任务发布,发布变更类型包括新增、修改和下线。
开发生产一体:对于小型或敏捷团队一般基于项目隔离的方式在同一套TBDS平台下实现数据开发和生产运维,在此情况下,用户通过项目参数区分开发和生产因子,通过DataStudio提供的发布工具完成开发项目到生产项目的发布。
开发生产分离(物理隔离):正常大型或数据管控严格的组织一般需要生产和开发环境物理隔离,此情况下,用户使用DataStudio的工具导出数据项目的发布包(包脚本、配置和参数等),并从生产环境导入即可完成发布。
TBDS DataStudio的新版本已经在规划增量发布的能力,为敏捷项目团队提供更有力的支持。
(5)关于监控
TBDS DataStudio当前主要是针对运行工作流任务进行监控,包括支持全平台和各项目空间下的任务执行统计分析和跨项目跨工作流的全链路任务执行监控。
任务监控大屏:包括任务和实例的不同维度的统计和趋势分析以及运行耗时排名分析等
全链路监控和运维:
支持全景视图查看任务执行依赖关系,方便做任务的影响分析、问题追溯和定位。
支持跨项目跨工作里全链路任务重跑,提高运维效率。
三. TBDS DataStudio金融行业落地
TBDS DataStudio产品在设计之初除了对行业发展趋势和竞品进行分析和调研外,我们也深度参与了公司内外合作伙伴与客户需求和解决方案的调研与沟通,并在今年某农商行数据中台项目上首次落地。
该农商行通过数据中台建设项目加快金融科技数字化转型,推进数据、科技、业务紧密深入融合,同步实现数据开发和数据服务的统一管理,提升数字化对业务发展的支撑能力,整体解决方案如下:
该农商行数据中台的技术底座以腾讯大数据云平台TBDS 为核心,配合多样化的大数据套件,可以在实现统一的数据开发平台、统一的分布式数据模型、统一的数据资产运营的同时,更好地完成离线批处理、实时流处理等任务,降低用户数据加工处理的成本,为各种应用场景提供更好用的数据,提升用户体验。
|