量化日常工作指标
你工作很高效,如何证明?你做了很多优化,是否有效?
为了回答这些问题,最有力的就是用数据来支持,所以需要将自己的工作量化。
量化的工作总共分为两层:业务需求和代码质量。
一、需求统计
需求统计包括完成率和用户满意度评分。
1)完成率
公司每双月会开一次需求讨论会,罗列本双月的需求。
我会以这份列表为基础,自己再开一份在线列表,记录所有需求的状态,并且会将不在此列表中的零碎需求也记录。
这份列表有 5 列,包括需求名称、线上BUG数、功能点数量、状态和备注。
其中状态又包括设计、提测、上线、延期等,可以一眼就能反映出需求所处的阶段。
线上BUG数就是字面意思,而功能点数量是 QA 提供的,他们在写测试用例时就会有这个数据。
我的需求完成率是按提测状态来统计,而不是上线状态。
因为有时候是需要多端联调的,经常会碰到协作方因为种种原因无法配合联调或延期。
提测是指 QA 可以验收需求,所以要说明此处的联调问题并不是指我们写好界面,然后等服务端给接口。
而是比如我们完成管理后台的前后端功能,提供数据源,服务端没有时间处理这批数据,类似于这种场景。
2)用户满意度评分
这是一张问卷调查,收集大家对我们组工作的反馈,对当前存在的问题可以做出针对性的优化。
需要填写所处部门,需求类型(后台或活动),是否达到预期,维度包括成果、沟通、响应等。
最后还有两个可选项,就是填写意见或建议,以及最想表扬的同学及其理由。
若是正面反馈,那自然很好;若是负面反馈,那就要总结.
二、核心指标看板
核心指标主要与代码质量有关,包括异常状态码接口、慢响应、前端错误、白屏和首屏时间等,以折线图的形式描述趋势变化。
因为我们组维护着大量的 Node 服务,所以指标中就会包含多个服务端数据。其中慢响应作为我们组的北极星指标。
所谓北极星指标,也叫第一关键指标,是指在产品的当前阶段与业务/战略相关的核心指标,一旦确立就像北极星一样指引团队向同一个方向前进。
1)状态码接口
状态码是指报 500、502、503 和 504 的接口,其中 500 是代码错误,我们可以通过日志做排查。
在 500 的错误码中,监控接口占据了 94% 左右,主要是因为上传的数据量太大导致报错,服务端限制 1M,最终在上传时就做大小限制。
还有一个占据了 6.2% 的错误接口主要是逻辑不够严密,边界条件没有处理好,修复后就降到了 0。
502 是转发到错误的后端服务,503 是没有转发,都是 Nginx 的问题,如果大量报,那就要找运维了。
504 是由后端服务出问题导致的超时引起的,例如数据库因为一条耗时的查询语句而被挂起。
2)慢响应
慢响应是那些响应时间超过 2 秒的接口,一种是内部逻辑慢,另一种是受调用的接口影响而变慢。
第一种就可以我们自己解决,第二种就需要找协作组配合解决了。
有一个占了慢响应 67.4% 的监控列表接口,属于前者,在内部会查询一张 430W 的大表 6 次。
优化手段也很直接,就是减少查询次数,降到 1 次,慢响应次数一下子减少了 95%。
还有个举报接口,也属于前者,这张表也比较大,增加查询条件,触发索引,就立竿见影的把速度提上来了。
该慢响应次数一下子减少了 90%。这两个接口优化后,慢响应总占比从 0.23% 降低到 0.1%。
3)前端错误
前端错误就是通过监控系统搜集到的错误日志,分为脚本错误和通信异常。
脚本错误就是 JavaScript 的异常,例如用 undefined 当对象读取属性。
一个项目中的脚本错误在修复后,从高峰的4073降低至246,减少了93.96%,进一步的保障项目质量。
通信异常其实也是 500、502 和 504 接口,之前的接口异常数量会包括静态资源以及内部的服务调用。
而此处的通信异常只包含从客户端发起的那部分接口,可以简单理解为其子集,不过有时候发现 502 和 504 的统计两边会有略微差异。
4)白屏和首屏时间
白屏就是等待白屏的时间(FP),首屏更确切的说是首次有意义的内容加载时间(FMP)。
之前做过一套性能监控系统,白屏比较好计算,而首屏比较复杂,我们这边采用最简单的埋点的方式。
也就是手动的在某个阶段记录首屏时间,比较麻烦的是需要将线上页面逐个添加,不过也没多少个,所以还能接受这个笨办法。
以首屏为例,1 秒内占 72%左右,2 秒内占 19% 左右,若以 1.2 秒为边界的话,那优化的空间还是蛮大的。
初步排查后,发现主要慢在 DOM 解析,这让我蛮诧异的,经过 Chrome DevTools 的性能分析后,定位到了脚本尺寸上。
加载的脚本有点多,并且有一个 chunk-vendors.js 脚本还比较大,下载时间有点长。
因此在加载和运行时就会延长 DOM 的解析,影响白屏时间。
相关文章
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 看我如何连夜自建网站背刺我的求职对手们
- GaussDB拿下的安全认证CC EAL4+究竟有多难?
- 华为云开发者官网首页焕新升级,赋能开发者云上成长
- 从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值
- 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
- 华为云区块链三大核心技术国际标准立项通过
- 云小课|帮您高效快速上传组件至私有依赖库
- 一文详解GaussDB(DWS) 的并发管控和内存管控
- MemArts :高效解决存算分离架构中数据访问的组件
- 论文复现|Panoptic Deeplab(全景分割PyTorch)
- 动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏
- 云小课|云小课带您快速了解LTS可视化查看
- Karmada跨集群优雅故障迁移特性解析
- 学会二阶思维,你就能像巴菲特一样思考了
- “如何实现高效的应用交付”鲁班会开发者训练营厦门站进行时
- 深度解析KubeEdge EdgeMesh 高可用架构
- 提升80%上云集成效率, TA是如何做到的
- 5分钟搭建图片压缩应用
- HDC.Cloud Day | 全国首场上海站告捷,聚开发者力量造梦、探梦、筑梦