本文作者: 丁立
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不稳定、质量不高的问题,并且设计一套完整的端侧全链路追踪能力,完美助力大数据用户画像、实时归因/离线归因分析、漏斗分析、大数据推荐场景。
曙光埋点从埋点设计、到大前端(iOS、Android、H5、RN等)开发、以及埋点校验&稽查、再到埋点数据使用的全链路服务,让客户端的埋点变得真正的好用。目前已经广泛应用于云音乐各个主要APP。
行业难点&痛点
- 埋点开发成本高:端侧埋点开发,往往是逐个坑位进行,坑位上大量且重复的参数,开发成本高昂;
- 埋点精准度低:资源曝光埋点,复杂度高且精确低,缺少全站统一的曝光策略;
- 埋点模型不稳定:mspm以及x-path形式的埋点,单独坑位以及自动坑位方案,很难保障埋点模型的稳定;
- 链路追踪能力弱:端侧没有链路追踪能力,往往需要借助数据侧对离线数据进行复杂分析得来,成本高;
- 埋点质量管控难:从设计、开发,再到验证、以及上线,QA人力来保障成本大、收益小。
特征
- 高性能虚拟树:曙光埋点提出了埋点对象和虚拟树(后面称VTree),view声明成一个对象,原始view树高性能的导出一颗VTree,VTree构建了我们整个曙光埋点方案的基石;
- 埋点内容结构化:借助于VTree,我们的埋点内容是结构化的,是具备自我描述能力的,天然具备了上下层级关系,继而做到埋点内容承载坑位、内容、上下层级关系,从而得出有意义的、稳定的spm(Super Position Model)以及scm(Super Content Model);
- 全站统一的曝光策略:跨多端统一的资源曝光策略,做到所见即曝光开始,不可见即曝光结束,大大减轻了开发人员的开发成本和出错几率;
- 全链路追踪能力: 端侧强大的链路追踪能力,100%可追踪用户日志的操作链路关系,完美助力大数据实时归因分析、离线归因分析、漏斗分析、大数据推荐场景,做到不限深度,不限广度的数据分析能力;
- 完整的埋点迭代管理:强大的埋点迭代管理平台,专门承载互联网app快速迭代场景,完整管理历史记录和多版本并行;
- 多机制的埋点质量保障:线下埋点校验做到开发埋点免去了QA人力,同时保障了埋点上线质量;线上数据稽查保障以全自动的方式发现线上埋点问题;
- 全平台覆盖:覆盖iOS、Android、RN、以及站外内H5,而且极易的可扩展Flutter、weex等其他平台。
更多信息可以参见文章 云音乐曙光埋点:还原数据理想国
使用曙光
曙光埋点覆盖了iOS、Android、H5、RN,以及埋点管理平台(easyinsight平台),BI分析师在埋点平台设计埋点VTree,端侧开发人员以极低的开发成本、声明式的开发方式导出VTree,结合easyinsight平台的上线前埋点校验以及线上数据稽查,即提高了开发效率,又保障了埋点质量。
更加详细的曙光埋点使用,参见 曙光埋点-文档
行业对比
曙光 与 x-path系列
x-path系列方式的埋点,比较有代表性的是Mixpanel(游戏)、GrowingIO、网易HubbleData、以及美团,主要特点是强化无痕埋点,埋点坑位后关联,数据后处理;适用的场景主要是一些UI复杂度低,比较固定的场景,这样可以使得从view原始树生成x-path,用来唯一标识一个埋点坑位变得可行。比如典型使用场景是按钮的点击、页面的曝光等场景,对高精度的资源位曝光有些无力。其中美团在自有动态化方案业务场景做可视化埋点,曙光目前也在H5活动场景支持可视化埋点。
但是缺点也很明显,就是不适用复杂业务场景,埋点模型不稳定,对于埋点质量要求特别高的业务来说无法使用该方案。埋点坑位后关联,数据后处理,成本也很大,使用也诸多不便。
功能 | 曙光 | x-path系列 |
---|---|---|
VTree可视化 | 支持(贯穿全流程) | 无 |
可视化埋点 | 支持H5 | 支持(美团) |
埋点内容结构化 | 层级化 & 可高度定制 | 平铺(参数冗余、信息量少) |
埋点模型稳定(spm&scm) | 高度稳定 | 低(后关联) |
端侧开发成本 | 一般(声明式) | 低 |
全链路链路追踪 | 强大(统一范式) | 一般(依托大数据后处理) |
全平台统一的曝光策略 | 抹平列表&非列表;全平台统一; | 弱化曝光埋点 |
埋点校验&数据稽查 | 强大(可视化校验 & 线上稽查) | 弱 |
曙光 与 坑位mspm系列
坑位mspm系列的埋点方案,是目前行业内大多数公司采用的方案,比如腾讯、字节、快手、美团、以及早期的云音乐;该方案埋点坑位独立,往往通过机器生成的 mspm 字符串来标识埋点坑位,但是通常mspm都是无意义的字符串。这个方案可灵活适应各种复杂业务场景,并且依托大公司强大的大数据能力,也可以实现很不错的漏斗分析、数据归因等能力。
但是客户端开发/维护成本高,特别是资源位曝光埋点,做不到端内列表、非列表策略统一,更做不到全平台策略统一,实现起来又比较困难,这也是最容易产生bug的地方。由于端侧不参与链路追踪,精确归因能力大数据侧比较困难,没有统一范式来统一处理。
功能 | 曙光 | x-path系列 |
---|---|---|
VTree可视化 | 支持(贯穿全流程) | 无 |
埋点内容结构化 | 层级化 & 可高度定制 | 平铺(参数冗余、信息量少) |
端侧开发成本 | 一般(声明式) | 低 |
全链路链路追踪 | 强大(统一范式) | 一般(依托大数据后处理) |
全平台统一的曝光策略 | 抹平列表&非列表;全平台统一; | 弱化曝光埋点 |
曝光埋点高精度 | 高精度(处理遮挡) | 弱 |
埋点校验&数据稽查 | 强大(可视化校验 & 线上稽查) | 弱 |
曙光 与 四段式spm
四段式spm是在坑位mspm系列
的基础上,赋予spm层级关系(站点.页面.区块.区块内)信息,阿里大量使用该方案,早期云音乐也做过这方面的尝试;该方案让埋点坑位有一定的意义,在埋点管理过程中也更加方便一些。
但是四段式也就限定了形式,灵活度降低,也缺少端侧明确的VTree结构,对于埋点稳定性、埋点校验/数据稽查、埋点内容结构化,都有一些能力局限。
功能 | 曙光 | x-path系列 |
---|---|---|
VTree可视化 | 支持(贯穿全流程) | 无 |
埋点迭代管理 | 可视化、适用迭代并行 | 一般 |
埋点内容结构化 | 层级化 & 可高度定制 | 平铺(参数冗余、信息量少) |
端侧开发成本 | 一般(声明式) | 低 |
全链路链路追踪 | 强大(统一范式) | 一般(依托大数据后处理) |
全平台统一的曝光策略 | 抹平列表&非列表;全平台统一; | 弱化曝光埋点 |
曝光埋点高精度 | 高精度(处理遮挡) | 弱 |
埋点校验&数据稽查 | 强大(可视化校验 & 线上稽查) | 弱 |
云音乐落地
由于曙光埋点可以带来的这些好处,截止到目前为止,云音乐APP已经全面拥抱曙光,覆盖几乎全部的P0/P1业务场景,从双端客户端、H5、RN等,到数仓、大数据推荐等,已经全数切换到曙光。
依托于稳定的VTree结构,以及强大的埋点校验&埋点数据稽查,QA人力已完全释放,数据相关Bug也大幅下降,已经很长时间没有出现过由于资源曝光不精确而导致的数据问题了。
社区
dawn 计划建设一个关于端侧埋点的开放社区,如果你对客户端侧埋点或者埋点数据分析感兴趣,请与我们联系,或者可以在 dawn-discussions 跟我们进行交流。
- Github:https://github.com/eventtracing/dawn
- 官网与文档:https://eventtracing.github.io
- 欢迎加入微信官方答疑群
最后
本文发布自网易云音乐技术团队,文章未经授权禁止任何形式的转载。我们常年招收各类技术岗位,如果你准备换工作,又恰好喜欢云音乐,那就加入我们 grp.music-fe(at)corp.netease.com!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net