不可忽视的前端监控

不可忽视的前端监控

背景

前端监控是相对于后端监控提出的,是指从用户端的角度来检测系统的可用性。前端监控一般分为两类,一类是事件监控,另一类是错误监控。由于用户端复杂度的上升和精细化运营的需要,前端监控的重要性在不断提高。本文中的前端也泛指所有用户端。

用户端复杂度上升

随着移动互联网的快速发展,互联网产品获取流量的渠道越来越多样化。从早期的搜索引擎,到后来的应用市场,再到O2O领域的线下流量,还有寡头应用的流量二次分发,流量来源在哪里,产品的用户端就要做到哪里,这样导致用户端随着流量来源的多样化而越来越复杂。

通常是一个后端对接iOS、Android、公众号、移动Web甚至小程序等多个用户端,每个用户端的功能可能大部分是相似的,但是各有侧重。这种情况下只做后端监控是远远不够的。

精细化运营需要

随着移动互联网人口红利期的结束,行业进入需要精耕细作的下半场。各公司逐渐告别之前粗放式的发展状态,从每个环节挖掘增长点和利润空间。这就需要我们在技术方面加强周边保障系统的建设,提升全流程业务运行的效率与稳定性。

四种质量保障方式

功能测试的局限性

对于传统的开发流程,保障产品质量的手段是上线之前的功能测试和上线之后的缺陷反馈。

对于前端而言,很多问题只在特定的使用条件下出现,而随着用户端复杂度的上升,条件组合会越来越多,使用测试用例覆盖所有情况成为不可能完成的任务。

拿用户当测试

由于功能测试只能覆盖少部分用例,很多产品缺陷是在上线之后根据用户反馈来修复的。所谓“拿用户当测试”并不是开玩笑,而是在功能测试的局限性背景下的一种现实做法。但是真正找到开发者反馈问题的用户比例是极低的,我们除了被动地等待反馈问题之外,还要主动地发现问题,这也就是我们做监控的意义所在。

幸存者偏误

一般情况下我们都会对后台的关键指标做监控,监控的对象通常是访问量、订单量等业务指标,或者后台机器的内存、响应速度、错误日志等运维信息。

只在后端做监控会导致对于系统可用性的判断存在严重的幸存者偏误。很多错误产生的环节是在用户发出请求到后台之前,这类错误显然不能通过后台监控发现。还有一种情况是,如果用户端有兼容性问题,那么就会发现来自某个渠道的订单量少,但是无法确定是这个渠道本身的用户量少,还是这个渠道的用户因为缺陷而流失了。

功能测试只能覆盖小部分用例,用户反馈出来的缺陷也只是有限的个例,只有前端和后端监控并重,我们才能全面地保障线上产品的可用性。

从用户端的角度看可用性

从用户端的角度来看,一个应用的信息流动过程大致如下:

这其中的每一个环节都可能产生缺陷:

  • 到达环节
    • CDN资源加载错误
    • 资源响应超时导致用户跳出
  • 渲染环节
    • 排版错乱
    • 白屏或者模块缺失
    • 元素隐藏或遮盖
  • 交互环节
    • 无法选中某些元素
    • 无法取消/删除/退出
  • 请求环节
    • 请求参数错误
    • 网络连接失败
    • 返回格式不正确
    • 性能太差导致用户放弃
  • 反馈环节
    • 结果无法确认,造成页面假死或者重复提交
    • 提供错误提示

这一系列环节中,只有后端交互的部分能够用常规的后端监控覆盖到,其它环节的监控往往是缺失的。

从用户端的角度来看可用性,以上任何一个环节出问题,对于用户都是不可接受的。而后端监控只能覆盖一小部分环节,多数环节需要我们把前端监控做细才能保障可用性。

从统计学的角度看可用性

由于用户端的复杂度不断上升,我们面临的偶发性缺陷,局部性缺陷等难以复现的问题会越来越多。

用户端作为一个高度碎片化的系统,在任何个例上可用都不意味着整体可用,可用性问题实际上是按各种环境因素展开的概率问题。

例子:一个按时间分布的偶发问题

影响可用性的环境因素:

  • 地区 - CDN或者接口服务的可用性有地域差异
  • 时间 - 部分业务逻辑受时间影响,包括本地时间、服务器时间、时区等因素
  • 渠道 - 除了产品的主App之外,还可能有公众号、浏览器应用、交叉推荐、运营推广等各种合作渠道
  • 版本 - 新老版本永远共存,可能产生兼容性问题
  • 账户 - 新用户与老用户,注册账户与第三方账户
  • 操作 - 用户的操作方式可能是专业人员意想不到的

传统的“反馈、复现、调试”的缺陷处理方法很难应对概率性问题和难以复现的问题。我们可以通过前端主动上报监控信息的形式,收集更全面的用户端数据,用“打点、观察、分析”的方法,以统计学思维处理概率性的缺陷,而不是直接还原现场深入细节。

总结

随着用户端复杂度上升和精细化运营的需要,我们要更加重视前端监控系统的建设。做好前端监控,我们就能补全质量保障体系的缺失环节,避免只有后端监控导致的幸存者偏误。

建设前端监控系统需要我们转变思维方式,以用户端的角度来看待整个系统的可用性,并且用统计学的思维方式来应对疑难问题。

后续的文章中我会具体讲解如何建设前端监控系统,以及如何更好地利用监控系统保障业务发展。

编辑于 2017-02-07

文章被以下专栏收录