大白话聊聊互联网产品怎么去做数据埋点?

来自:程序员私房菜(微信号:eson_15),作者:AIData

在互联网产品上线之后,产品和运营人员需要即时了解产品的使用情况,有多少用户,用户使用了哪些功能,停留时长,使用路径等等。要回答这些问题,需要有数据,不能拍脑袋想当然。数据怎么得到呢?埋点就是采集数据的重要途径。


数据埋点不是新名词,在电脑网站出来之后就有统计工具,站长们很熟悉的谷歌、百度统计等工具,通过在 HTML 页面中嵌入它们提供的 js 代码实现数据采集。


多说几句,无论谷歌、百度还是其它的 Web 页面统计工具,技术实现原理通常都是由 Web 服务器端通过代码的方式向浏览器返回一张 1*1 像素的透明图片(在网页上人眼看不到这张图片),图片的过期时间设置成立即过期,这样每次打开页面浏览器都会去请求这张图片,服务器端就可以记录下请求数据。明白了原理,自己也可以写一个简单的统计工具。


在设计埋点方案之前需要确定收集哪些数据,将这些需求汇总,产品、运营、技术一起确定埋点方案。从埋点位置划分,可以分为:前端埋点和后端埋点。


   1. 前端埋点


顾名思义,就是在用户可见的那端(APP、网页、PC客户端、小程序)嵌入数据采集代码,像一些第三方的统计工具,比如友盟等,前端嵌入它们的 SDK,调用 SDK 提供的接口采集数据。


前端埋点能收集到用户在界面上的操作轨迹,这些数据后端没法收集,比如用户点击了哪个按钮,打开了哪些页面,页面之间的跳转次序等。目前常见的前端埋点技术,有下面三类:

1)代码埋点


谷歌统计、百度统计、友盟等都是代码埋点的例子。在前端代码里嵌入数据采集代码,比如在APP启动时嵌入,在按钮点击事件里嵌入等。


代码埋点的优点是控制精准,采集的数据项精确。缺点:首先是需要开发人员到处添加采集代码,添加和修改的工作量大;其次变更采集策略,需要发布新版本,代价巨大;此外对于APP来说还有耗电、消耗数据流量、丢失数据的风险。


2)可视化埋点


从上面可知,代码埋点的缺点很多,最大的缺点是变更需要开发人员修改代码,不灵活。为了改善,有的公司开发出了可视化埋点技术,产品与运营人员通过GUI界面,鼠标点击的方式随时调整埋点位置,增加、取消埋点,再也不需要开发人员的介入,而且不用发布新版本。


技术实现原理:基本原理就是将埋点位置信息做成可配置的资源,通过在后台管理端上操作生成这些配置,客户端启动或者定时从服务器端获取这些配置,客户端根据最新的配置采集数据,发送给服务端。


3)无埋点


原理跟可视化埋点几乎一样,唯一的不同就是,无埋点是先把所有控件的操作数据采集下来,发给服务器,数据分析人员在后台管理端设置对哪些数据进行分析。由此可知,这个方案收集的数据量巨大,增加了网络传输和服务器存储负担。


无埋点比可视化方案优势的地方是收集的历史数据齐全,可以回溯分析过往数据。


2. 后端埋点


后端埋点就是在服务端嵌入代码,收集数据,由于是在服务端采集数据,可以避免前端埋点的以下一些问题:


客户端采集数据,为了尽量减少对用户体验的影响,需要对采集的数据压缩、暂存,为减少移动端的数据流量,一般只在网络状况良好的情况下向服务器发送数据,因此数据会有延迟,丢数据等弊端。而在服务端采集数据,数据在内网传输,数据传输的即时性强,丢失数据的风险小。


客户端采集数据,如果要增加采集点或变更采集方案,需要修改客户端代码,这就需要发布新版本,受发布周期的影响,而且通常很多用户并不会及时更新版本,将导致新方案不能覆盖所有用户。在服务端采集数据则没有这些问题。


通过以上比较,实施时尽量采用后端埋点,除非后端没法采集到所需要的数据。


3. 工具选择


国内不少数据服务公司提供了数据采集、分析工具,初创公司可以选择使用它们的服务,不过最好选择可以独立部署的提供方,方便控制,防止数据泄漏。


总结一下,数据埋点需要根据需求而定,灵活使用以上方案,扬长避短。

推荐↓↓↓
人工智能与大数据
上一篇:贝叶斯、概率分布与机器学习 下一篇:让机器玩游戏的强化学习(附github)