产品运行数据问题,数据埋点,数据分析
大家在开发产品的时候是自己手写数据埋点吗?
例如一款商城产品:
1.用户注册登录:
点击短信验证码的人数,短信发送成功人数,短信发送失败人数
点击第三方登录人数,成功人数,失败人数
2.用户行为数据:
用户浏览了哪些页面,哪些商品,点击了哪些按钮,页面停留时长
点击添加购物车行为的用户数和记录,加入购物车的商品总数,购物车商品添加最多的用户,购物车商品添加最少的用户
用户下单行为总数,下单总数,下单最多的用户,下单商品最多用户,下单商品最少的用户,下单未付款用户,用户手动取消订单的用户,订单超时自动取消的用户
订单支付总数,订单支付成功的用户总数,订单支付金额最高的用户,订单支付金额最低的用户,订单支付失败的用户,还有用户的各种其它行为
有些数据是写业务逻辑的时候本身就可以查询到的,有些数据是与业务逻辑无关的,需要额外为这些行为记录,我想问一下大佬们,这些用户行为监控和分析是后端和业务一起写了吗?还是有第三方数据跟踪分析软件处理。
如果是写在后端,这些高频的数据写入不会影响到程序的效率吗?跟业务逻辑写在一起会不会影响到程序的阅读性
与业务不相关的统计,建议单独出接口,前端根据需要调用就行,接口挂了也不影响业务的操作。担心统计对系统性能的影响可以单独做一套专门统计的系统API独立部署,有找到合适的第三方的统计服务也可以用,不过这类统计的需求比较难100%合适的。与业务相关的统计可以在业务系统的项目里封装一些类,在业务的方法里两三行做个调用这个类里面的方法(可以异步操作)。 比如一个用户登陆统计类(短信登陆:
UserLoginAnalysis::SMS(int $user_id, bool $login_result, int $at_timestamp)
)。数据多的话可以把这类数据写到另外的数据库,或者直接用云提供的统计相关服务。 一般来说统计/分析的时候不会用生产环境的数据库,因为真的要统计的时候,一个复杂SQL查询可能要跑好几分钟。最好不要把太多这些行为数据放到业务API使用的生产环境的数据库