本文整理自火山引擎开发者社区 Meetup 第四期演讲|字节跳动大规模埋点数据治理优秀实践( 二 )


其次 , 如果没有资产的辅助设计 , 每一个埋点录入都要从0到1去实现一遍 。 但是埋点设计通过资产辅助设计可以变得很简单 。 因此 , 我们认为埋点设计才是thesinglesourceoftruth , 这是我们整体设计的核心 。 下面来看看用户如何在我们的系统设计埋点 。
字节跳动流量平台的产品辅助设计基于灵活的模型支持、设计资产积累、设计辅助 , 可以方便每一个用户定义高质量数据 , 让用户愿意在系统进行设计和评审 。
设计完埋点 , 我们在埋点开发上也有对应的工具来服务来发 。 下面是我们的一段演示:
当用户要设计埋点时 , 可以通过ID找到要开发的埋点 , 通过点击即可插入代码 。 同时 , 系统支持VSCode等主流编辑器 , 针对不同语言和代码风格自定义代码模版 , 还有类型校验、编辑切换等 。
埋点测试
埋点测试比QA要难很多 , 看的是一串数字、类型的值等 。 在字节跳动流量平台系统中 , 可以依托埋点设计中的规则辅助测试 , 针对类型、取值、必填等自动验证 , 并且可以一键生成报告 。
我们是怎么去做好测试这件事的呢?重点还是前面提到的做好埋点设计 。 只有设计周全 , 才能积攒足够的规则进行自动化测试 , 因此埋点设计方案非常重要 。
埋点设计者会在方案设计时制定一系列的约束规则 , 我们会依托这些约束规则生成一系列相匹配的测试用例 , 并在测试过程中进行自动匹配、测试 。
埋点测试时 , 测试者手机扫码即可将服务器和浏览器建立连接 , 在App上操作后 , 流量平台可以实时接收到对应的埋点数据 。 因为已经有测试用例 , 规则执行引擎便可以自动匹配执行并得到结果 , 再通过验证结果推送服务实时推送至浏览器 。
埋点测试后 , 用户可以通过报告生成器可以一键生成报告 , 发送给RD进行修改或者DA进行验收 。 这样就完成了整个测试流程 。
本文整理自火山引擎开发者社区 Meetup 第四期演讲|字节跳动大规模埋点数据治理优秀实践
文章图片
埋点存量治理
在生成了大量的埋点之后 , 我们需要进行存量埋点数据的治理 , 具体涉及SLA、成本、合规以及数据质量等方面 。 为什么还要进行存量埋点数据的治理呢?我们有这样一些观点:
数据不一定都是重要的 。 因为业务都不一定总是重要的 。 数据并不总是有用的 。 比如活动下线了 , 埋点就要下线 , 否则付出了成本却没有收益 。 数据不一定总是合规的 。 随着数据隐私的重要性越来越高 , 合规要求也在不断更新变动 。
对于存量埋点数据的治理 , 也有一些痛点 。 对于治理负责方来说 , 数据越来越多 , 而对数据的实时性要求却越来越高;随着数据量暴增 , 成本也急剧增加 , SLA等级越来越慢;用户隐私也越来越重要 。 对于治理实施方来说 , 他们可能不敢治理 , 不愿治理 , 也不懂治理 。
我们梳理了用户的需求 , 发现是这样几层:
用户层:自动化识别埋点是否有用 , 流程化引导埋点的分级和下线 。 统计层:做到数字化、货币化 , 治理大盘清晰可知 , 埋点成本准确无误 。 甄别层:通过的血缘图谱 , 对实时统计、离线报表、行为分析、推荐系统等做实时决策 。 执行层:从APP端到数仓全流程 , 强兜底 。 链路层:需要高效、稳定、完整的链路方案解决治理难题 。
针对这些需求 , 我们是怎么做的呢?
埋点分级/无用埋点甄别
埋点血缘和离线血缘抽取不太一样 。 离线血缘是点与点之间的血缘 , 但埋点血缘关注的是内容与点的血缘 , 它需要知道一张表的哪些行的信息有用 。 这是完全不同的一个领域 , 没有任何前人的经验可以借鉴 , 我们在埋点血缘做了几个方面的事情: