产品运行数据问题,数据埋点,数据分析

大家在开发产品的时候是自己手写数据埋点吗?
例如一款商城产品:
1.用户注册登录:
点击短信验证码的人数,短信发送成功人数,短信发送失败人数
点击第三方登录人数,成功人数,失败人数

2.用户行为数据:
用户浏览了哪些页面,哪些商品,点击了哪些按钮,页面停留时长
点击添加购物车行为的用户数和记录,加入购物车的商品总数,购物车商品添加最多的用户,购物车商品添加最少的用户
用户下单行为总数,下单总数,下单最多的用户,下单商品最多用户,下单商品最少的用户,下单未付款用户,用户手动取消订单的用户,订单超时自动取消的用户
订单支付总数,订单支付成功的用户总数,订单支付金额最高的用户,订单支付金额最低的用户,订单支付失败的用户,还有用户的各种其它行为

有些数据是写业务逻辑的时候本身就可以查询到的,有些数据是与业务逻辑无关的,需要额外为这些行为记录,我想问一下大佬们,这些用户行为监控和分析是后端和业务一起写了吗?还是有第三方数据跟踪分析软件处理。
如果是写在后端,这些高频的数据写入不会影响到程序的效率吗?跟业务逻辑写在一起会不会影响到程序的阅读性

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
Buffett-Cai
最佳答案

与业务不相关的统计,建议单独出接口,前端根据需要调用就行,接口挂了也不影响业务的操作。担心统计对系统性能的影响可以单独做一套专门统计的系统API独立部署,有找到合适的第三方的统计服务也可以用,不过这类统计的需求比较难100%合适的。与业务相关的统计可以在业务系统的项目里封装一些类,在业务的方法里两三行做个调用这个类里面的方法(可以异步操作)。 比如一个用户登陆统计类(短信登陆:UserLoginAnalysis::SMS(int $user_id, bool $login_result, int $at_timestamp))。数据多的话可以把这类数据写到另外的数据库,或者直接用云提供的统计相关服务。 一般来说统计/分析的时候不会用生产环境的数据库,因为真的要统计的时候,一个复杂SQL查询可能要跑好几分钟。最好不要把太多这些行为数据放到业务API使用的生产环境的数据库

2年前 评论
晓飞 (楼主) 2年前
讨论数量: 7

数据埋点的数据是供给运营产品看的,所以应该是由运营产品提供埋点表,有些本可以在数据库中查到的那就在b端考虑excel的导出功能,需要调用时记录的就统一上队列交给异步去干,当然如果是小程序这类的话直接前端上报给微信就好了。

2年前 评论
晓飞 (楼主) 2年前

异步队列,多简单的事

2年前 评论
Buffett-Cai

与业务不相关的统计,建议单独出接口,前端根据需要调用就行,接口挂了也不影响业务的操作。担心统计对系统性能的影响可以单独做一套专门统计的系统API独立部署,有找到合适的第三方的统计服务也可以用,不过这类统计的需求比较难100%合适的。与业务相关的统计可以在业务系统的项目里封装一些类,在业务的方法里两三行做个调用这个类里面的方法(可以异步操作)。 比如一个用户登陆统计类(短信登陆:UserLoginAnalysis::SMS(int $user_id, bool $login_result, int $at_timestamp))。数据多的话可以把这类数据写到另外的数据库,或者直接用云提供的统计相关服务。 一般来说统计/分析的时候不会用生产环境的数据库,因为真的要统计的时候,一个复杂SQL查询可能要跑好几分钟。最好不要把太多这些行为数据放到业务API使用的生产环境的数据库

2年前 评论
晓飞 (楼主) 2年前

laravel 中间件里面可以做点文章,如果你不考虑接口是否成功只是一个行为记录,就只是无脑怼数据进入数据库而已。如果有更深层的考虑还是按@Buffett-Cai 的方案来。

2年前 评论
晓飞 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!