写点什么

从 0 到 1 建立基于大数据的质量平台

  • 2018-03-08
  • 本文字数:3316 字

    阅读完需:约 11 分钟

随着互联网的快速发展,大数据与软件质量的关系越来越密切,从源码撰写、持续集成、测试调试、发布运营,整个流程中大数据无所不在。每个数据关联起来对软件质量中的发现、度量、定位都有着重要的价值。如何从 0 到 1 建立基于大数据的质量平台,利用大数据来改善软件质量?

来自阿里巴巴优酷事业部技术专家万传奇老师将在 4 月 20 ~ 22 日召开的 QCon 全球软件开发大会上分享优酷大数据质量平台建设及线上质量闭环解决方案实践。在大会开始前,我们有幸采访了万传奇老师,提前了解一下优酷大数据质量平台建设背后的技术故事。

受访嘉宾介绍

万传奇(花名“万众”),阿里巴巴优酷事业部技术专家。2014 年进入阿里,负责阿里集团持续集成平台 CISE 、AONE 实验室等开发工作,支撑集团所有事业部的测试任务。并通过整合集团测试工具插件化,中间件 Docker 化等核心工作,积累了丰富的测试经验。

2017 年开始,全面负责优酷质量部平台建设工作,建立起以大数据为基础的视频质量保障体系,高效结合了实时度量、监控、灰度、告警、定位、分析等多项功能,形成一套完整质量保障解决方案,成为优酷业务线以及阿里相关多媒体质量唯一标准。

平台搭建背景

随着优酷技术栈和阿里不断整合,各客户端埋点数据参照集团的方式全部上报,但对于数据的使用,大家多是写个离线 SQL ,或者部分数据对接集团各个横向服务平台来使用。从优酷业务线角度看,没有一个垂直的大数据平台来支撑各业务线,严重影响开发的效率以及数据对业务本应有的强力支持。基于这个背景,团队临危受命,开始了大数据平台的开发工作。

平台搭建过程中“坑”

从技术角度来说,优酷大数据质量平台搭建分为三大部分:实时、离线、检索。

  • 实时框架我们选择了 Blink( Flink )和 Spark Streaming ,两个框架都能很好处理实时需求,我们在 ETL 层面选用了 Blink ,数据计算部分选用了 Spark;
  • 离线部分依托 ODPS 平台,这个平台相对功能强大,适合新人上手,简单的 SQL 就能满足业务需求;
  • 检索部分我们主要依赖 ELK 技术,并将数据存储在 OTS ( HBase )和 ElasticSearch 中用来进行实时离线度量数据查询,也包括了上面说的聚合查询、全文检索等。

在平台搭建过程中遇到不少“坑”,我们也总结了一些经验,主要分为以下两点:

  1. 成本

在开发之前,需要考虑两个成本问题:费用成本和人力成本。

大数据是特别耗费资源的,如果这方面不加以控制,产品的性价比就大打折扣,结合优酷大数据平台的经验,这块一定要强关联业务,比如说在数据预计算处理的时候,需要考虑可选维度或必选维度,亦或是哪些维护可以合并处理,这样在存储上能够极大节省空间。在离线计算过程中,如何抽象出中间表,降低计算复杂程度,节省计算资源。

再说人力成本,这个在中后期表现特别明显,随着平台发展,业务方的需求源源不断涌入,从链路上要对接数据、数据计算、存储、后端接口封装、前端展现等一系列开发工作,这就需要我们明确数据格式规范、对各环节的计算逻辑抽象,支持灵活的配置化工作等,有了通用化作为前提,大数据平台同学就可以专注链路架构上的优化,业务同学深度参与进来,这样非常有利于平台的迭代。

  1. 盲目调参

常规的参数调优,这是大数据工程师必须经历的。对于初次进行大数据平台开发的同学,建议大家不要盲目调参,要看是哪个环节出现了瓶颈,是网络问题,计算资源问题,还是数据倾斜问题等,针对性的进行参数调整,效率会更快。

平台线上质量保证

测试领域有过几个明显阶段,手工测试、自动化测试、再到持续集成,其实不外乎在追求更高的质量,更快的研发效率。但随着移动互联网高速发展,对于质量的要求要远远高于 PC 时代,测试人员的能力也需要随之提升,不仅要对接常规的开发测试需求,还要关注产品效果、线上运维情况等,也就是说测试领域未来需要复合型人才。

我们都知道现在的移动互联网产品迭代速度很快,各类设备的测试都要涵盖到,单从通用的测试角度来说,就要考虑 APP 启动时间、页面响应时间、页面滑动流畅度、崩溃、卡顿、功耗 等等,测试成本非常高,甚至大多数时候又回到了手工测试去验证。那么大数据能为测试带来哪些帮助?

首先,我们将业务关注的数据进行埋点,可以是功能、性能、用户体验、用户行为等等,这样就保证了我们测试的结果和用户感受基本一致,释放了大部分的常规测试手段,如 UI 、性能、接口等。

其次,我们将数据流程分成:线下、灰度、线上三个阶段进行保障,逐级利用真实设备的数据来保证质量,间接释放了多机型测试不充分的问题。拿优酷播放卡顿指标问题来说,用户观看视频出现一个等待圆圈开始到结束,就是一次卡顿,此时数据埋点纪录这个卡顿时长并上报到大数据平台。这样大数据平台就可以对这一指标做出各类质量方面的工作,比如:

  • 一次播放中出现了多少次卡顿、卡顿平均时长是多少
  • 卡顿超过多少的时候会导致用户退出 App
  • 卡顿分布在哪个网络是否有故障
  • 新上线的版本卡顿是否有增加

对应大数据质量平台的功能,就大致分为实时度量、监控告警、数据分析、定位排查、灰度验证等几大部分。

监控告警

传统的监控手段,对于服务器性能指标、调用链路等已经相对成熟,一般发现异常就能够确定原因。在移动互联网时代,质量这个词涵盖的不单单是线上的故障,更多的是体验。如果让用户感知的问题发现不及时或者没有发现,所有的努力都会付之东流。

所以我们的重头放在了客户端埋点数据上,把播放体验相关的埋点数据(卡顿、播放成功率)、性能指标数据(启动时间、 Crash )、关键服务返回数据( CDN 节点数据)、用户行为数据(点击行为、停留行为)等进行分类计算抽象形成 CUBE ,把能够反应在现象上的问题做成监控,来衡量我们的质量到底好还是坏。

在大数据质量平台,涉及到多维度计算,比如一次播放成功率下跌,具体是发生在安卓还是 iOS ?是全国范围还是具体某一个省?是所有移动用户还是联通用户出的问题?这就涉及到了我们如何对维度切片、钻取,维度大了发现了问题也不好定位出原因,粒度小了对于存储计算都是极大浪费。

这就需要结合业务来看,定义必选监控维度,然后将错误数据流通过 ETL 单独切分,落盘到有聚合功能 ElasticSearch 、Druid 中,做到维度进一步细化,把告警从“大面”缩减到“小面”。比如说北京市联通出现了播放成功率下跌,通过聚合发现,出错 CDN IP 高度集中,告警层面就可以直接交给网络服务定位系统去处理了。此外,监控从实时性、准确性、告警条件模型都有一些探索,我们将在 QCon 的分享中和大家做进一步交流。

智能分析

现在各大公司都在做 Trace 相关工作,阿里优酷大数据平台也不例外。在原有的服务端日志收集的基础上,融合了客户端埋点日志、客户端远程 Debug 日志、服务变更操作、以及规范了第三方服务日志( CDN 等)。这样操作有利于统一收集已发现问题的数据;当数据在手,被明确告知是有问题的,我们该如何分析?

首先,如果是错误码,我们一层一层看下去也能解决,但是有一些问题,不是错误导致的。举个例子,某天,我们这收到一个客诉反馈说看视频特别卡,突然出现的,我们查了日志没有任何报错,最后是一位细心的同学发现,用户网络 IP 在北京,CDN IP 被打到了广州。对于这类问题,就是两个 IP 字符串提取并作地域解析匹配即可。

其次,我们结合数据,要建立起一个定位知识库,把历史故障、线上 Bug 、badcase 抽象成我们的定位诊断库。

第三,也是我们现在正在做的一些事情,知识库是人建立起来的,其实这就好比监督学习,但我们想能不能用无监督学习的方式把问题定位出来呢?再举个例子,我们会做一些大型活动,但是有时发现从第一个页面跳转到第二个页面的用户转化率发出警报(只有 10% ),我们会把这一类的用户进行全链路数据检索(不只是服务端日志),然后将各类特征做聚类分析,就会惊奇的发现,绝大部份用户会有共同的特征被聚类出来,问题可能是可能关联一个服务来自于同一台服务器超时引起,也有可能是来自于同样的客户端设备因为页面加载适配问题等。所以说,未来的方向重点在于数据和算法结合起来,挖掘更大的价值。

InfoQ:感谢万传奇老师接受我们的采访,更多精彩内容请锁定 4 月 20~ 22 日的 QCon 北京站。目前 8 折报名倒计时 5 天,立减 1360 元,访问「QCon 官网」查看大会日程安排,与国内外一线技术大咖碰撞思维火花。

2018-03-08 18:004993

评论

发布
暂无评论
发现更多内容

企业服务诞生了第一座企业掘金的数据枢纽——瓴羊港

ToB行业头条

亚洲专业美发行业领军企业汉高中国签约赛博威,以TPM营销费用管理推进企业业务数字化改革

赛博威科技

低代码开发,或许是节约成本更好的选择

树上有只程序猿

软件开发 低代码

今年秋招VS去年秋招!我滴娘啊

王磊

Java

第24期 | GPTSecurity周报

云起无垠

专业ER图工具大盘点,哪款是你的菜?

职场工具箱

ER图 设计数据库模型

初识inBuilder内存计算模块--业务数据同步

inBuilder低代码平台

数据库

测试工作的价值体现

BY林子

软件测试 软件质量 测试的价值 绩效考核

跨国传输的常见问题与对应解决方案

镭速

跨国数据传输 跨国传输 跨国传输软件

可视化流程编排(Bpmn.js)介绍及实践

ZA技术社区

众安科技 众安保险 ZA技术社区 无界山

LeetCode题解:993. 二叉树的堂兄弟节点,BFS,JavaScript,详细注释

Lee Chen

LeetCode

新一代云原生可观测平台之CCE服务监控篇

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 华为云CCE容器服

带你认识一下多模态对比语言图像预训练CLIP

华为云开发者联盟

人工智能 华为云 科技 华为云开发者联盟 多模态对比

软件测试/测试开发丨UbuntuServer环境准备

测试人

软件测试

外贸业务员必学的外贸推广方式

九凌网络

你不知道的ER图秘诀,都在这篇在线教程里了!

职场工具箱

ER图 实体-关系图

ApeCoin DAO猿岛质押游戏系统DAPP开发

薇電13242772558

NFT

如何使用 NFTScan NFT API 在 BNB Chain 网络上开发 Web3 应用

NFT Research

NFT\ NFTScan API 接口

什么样的网站才是利于google等搜索引擎优化的营销型网站

九凌网络

TDengine 3.2.0.0 重磅发布!S3 存储 + IP 白名单正式上线

TDengine

tdengine 时序数据库

我应该删除低质量页面以提高Google排名吗?

九凌网络

文心一言 VS 讯飞星火 VS chatgpt (126)-- 算法导论11.1 1题

福大大架构师每日一题

福大大架构师每日一题

接上回,如何用 LlamaIndex 搭建聊天机器人?

Zilliz

Milvus 向量数据库 ChatGPT LLM

聊点技术|秒级根因定位可能吗?博睿数据将不可能变为可能

博睿数据

运维 监控 可观测性

Databend + lakeFS:将数据版本控制嵌入你的分析工作流

Databend

nebula-br local-store 模式,快速搭建主备集群实践

NebulaGraph

容灾备份

外贸建站优化外贸网站推广的四个技巧

九凌网络

从0到1建立基于大数据的质量平台_大数据_万传奇_InfoQ精选文章