一、背景
在大数据时代,规范地进行数据资产管理已成为推动互联网、大数据、人工智能和实体经济深度融合的必要条件。贴近业务属性、兼顾研发各阶段要点的研发规范,可以切实提高研发效率,保障数据研发工作有条不紊地运作。而不完善的研发流程,会降低研发效率,增加成本与风险。
数据研发规范旨在为广大数据研发者、管理者提供规范化的研发流程指导方法,目的是简化、规范日常工作流程,提高工作效率,减少无效与冗余工作,赋能企业、政府更强大的数据掌控力来应对海量增长的业务数据,从而释放更多人力与财力专注于业务创新。
二、数据开发流程
鉴于对日常数据仓库研发工作的总结与归纳,将数据仓库研发流程抽象为如下几点:
需求阶段
设计阶段
开发阶段
测试阶段
发布阶段
运维阶段
具体开发流程
需求:与运营产品讨论需求。业务方把需求提交到JIRA,并且和产品沟通过。
PRD评审:产品评审PRD文档。
技术方案讨论:最好是负责人先沟通一个初级的方案,然后找大家一起讨论(可能比直接头脑风暴效率搞,根据负责人的经验来讨论);然后找大家一起讨论。
技术设计评审:设计评审叫上测试。
设计评审的原则是,评审会议应该是设计方案大家基本认同的前提下,做方案的文档。
设计接口:重点准确描述输入和输出。
设计字段:根据需求定义字段,并确定字段指标和获取来源,建立数据字典。
开发:开分支,写代码。做好测试case的建立,然后自测。
代码review:叫上测试和一个其他开发同学,给出review的结果。目的是让其他同学帮忙review其中的逻辑。
提测:给出提测报告,包括罗列测试点。
上线:提前告知运维,提前申请机器资源,根据业务预估好CPU、存储、带宽等资源。
文档:开发完成后,文档记录一下流程以及提供数据表字段说明,方便重构。
数据需求流程

各个角色职责

这个流程针对的是项目是开发,在项目立项的开始,就需要明确各个角色的职责,而且需要和多个角色进行配合。作为数据开发人员,需要协调和各个角色之间的交互:
三、日常数据支撑
除了项目式的开发外,数据开发人员大部分情况下都会面对产品提出来的一些临时性的数据需求,例如拉去一下近半年的销售情况、用户访问情况等等,这部分数据支撑不需要后端配合、可能也不需要进行测试,而是在已明确的数据指标的基础上,定期或者不定期的提供一个数据报表。这部分的数据开发模式相对来说比较简单和快速,但是也需要明确:

指标需求中通常会涉及到下表中的约定项,如果需要自定义约定项,可以在自定义格式列进行填写。


四、注意

对于一些重要指标的定义,就算文档中写了,也要和产品进行确定
开发过程中,文档要规范,先设计在开发
及时反馈
故障处理
故障等级定义:
P0
P1
P2
P3
P4
P0P1级别问题在规定时间内无法解决的,需要该问题的研发同学在问题comments内说明无法在规定时间内解决的合理的解释,并告知该问题具体的解决时间点同时邮件说明。
五、数据监控与告警
背景
监控系统的一般套路:采集->存储->展示->告警。
监控系统对于大数据平台的重要性不言而喻,一般是对大数据整个架构、各个数据的输入输出流、中间件的稳定性、数据的准确性、资源的使用情况、任务的执行情况进行监控。一般的监控告警通过采集告警日志、错误数据、关键词匹配等获取错误的数据进行实时展现并告警。
Grafana
不过最近在使用Flink的时候有一个业务场景,需要对历史数据进行监控,方便查看各个实时任务的表是否有数据产生。所以提供一个python脚本版的监控各个业务表的数据,并做钉钉告警的功能。
介绍
在做实时数据开发过程中,由于对接了不同的业务方,起了多个实时任务的程序,而数据的监控在运维那边,但运维同学只有针对整个集群的监控,对单个作业的监控还没建立起来,所以会初选一些实时任务在集群上runing的状态,但是对Kafka的消费却丢失,而Kafka目前只保留7天的数据,一旦数据丢失,需要通过离线任务去校验,会非常的耗时。
所以在这个背景上,单独做了针对自己输出的业务报表数据的监控,每天输出一些数据产生异常的表,并钉钉告警,方便快速处理。
整体的架构图如下:

如果业务没有离线校验的情况下,如何去监控数据表是否产生。

例如以钉钉告警为例:
1、建立钉钉机器人
钉钉开发文档:https://open.dingtalk.com/document/org/application-types
2、完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
同时指定全设置,一般选择关键词,例如:监控报警等,这个机器人所发送的消息,必须包含监控报警 这个词,才能发送成功。建立成功后显示:

3、编写监控数据库表的脚本:
4、任务结果和监控


这样就可以每天看到昨天的数据是否产生,也可以设置阀值,将没达到阀值的表输出告警,然后方便去排查原因和恢复。
优化
上面的脚本是需要将配置文件写到脚本里面的,如果设计到的业务比较多,那么需要很多人同时修改这个脚本,没法做到数据安全的问题,所以下一步准备将这个配置文件生成一张表,每个人可以通过数据库insert的操作去添加自己需要监控的表。而且除了钉钉告警还可以发邮件。
例如:
Mysql数据条数的检测
1、表结构设计
2、监控脚本
3、处理钉钉发邮件,可以通过自定义的方式发送邮件
不过这个执行过程,需要将要发的文本先下载到本地,然后才能发送,所以一般的执行脚本如下:
扩展
除了python发邮件,Scala和Java也可以直接发邮件,代码如下:
作者:高威链接:https://zhuanlan.zhihu.com/p/146063232
–END–









暂无评论内容