在我长期的固有认知中:为了收集和上报网站交互过程中 JavaScript
的报错信息和其它相关数据,我们一般会采用自研或者第三方的SDK
,也可以简单理解为埋点
。这也是为了方便生产问题的排查,做到可溯源。
但是,在前一段,和隔壁组的同事交流时,我发现了一个有点东西
的系统--Rejouer
。这个系统可以做到完整复现用户的操作行为,类似于录屏
的功能,起初我还真的以为他们就是给我放了一个录屏
,后来发现没那么简单。
本文也是在和这位同事探讨的过程中得到的一些启发。
业务背景
不要重复造轮子!
这是我一直以来的信念。轮子的出现必定是要为业务服务。那么Rejouer
出现的背景是什么呢?
痛点
我们来回顾一下日常处理线上问题的场景:
上面图片中的是一个正常处理线上问题的流程。我们一般会通过之前埋入的一些业务打点,根据用户uid
去追溯问题,这样基本可以解决大部分的线上问题。但在实际的业务场景中,总是会出现一些奇奇怪怪的问题:
环境差异
:客户版本和配置差异内容传递不完整
:在上图第 2 步中,出现信息传递不对称,造成问题无法复现敏感性
:上图第 4 步中出现本地无法复现,咨询客户,但又涉及较为私密的信息,用户不愿录屏复现的场景客户数据差异
:即使用户愿意录屏,但可能由于服务抖动,用户此时再次走流程也无法复现- ...
除了上面提到的这些问题,还有一个影响线上问题解决速度最致命
的:链路过长!!