3.从制定标准到持续监控:7个关键阶段提升App用户体验

导读:产品未来服务更多的用户,不断增加服务和内容,不断优化App的使用体验。服务和内容的好坏、用户在使用过程中的体验,都需要有标准来衡量。在不同的指标优化过程中,每一类指标优化的方案都有不同,将不同的指标优化方案进行抽象及划分,可以得出优化过程中的方法是基本相似的。本文站在App的角度进行剖析,重点介绍App中指标优化相关方法。

如图1所示,指标优化的过程可以拆分为7个关键阶段。分别为制定标准、指标建设、数据收集、数据分析、指标优化、指标评估和指标监控。

图1 核心指标优化过程的7个关键阶段

一、 制定标准

指标标准通常包含:需要优化的指标的定义、如何拆分这个指标、如何统计这个指标,也需要说明对应的技术实现流程及逻辑。

● 指标的定义:例如页面加载的速度指标,即从客户端开始加载页面到页面加载结束的时间,该指标可反映出用户在搜索及浏览过程中加载页面所等待的时间。

● 指标的拆分:例如,页面加载的速度指标可以拆分为客户端开始加载页面、服务端接到请求、服务端处理请求、服务端返回数据、客户端接收数据、客户端解析与渲染数据、页面加载结束7个子指标。

● 指标的统计:通常使用取均值、百分位值和中位数作为大盘数据的计算方法。

● 指标的实现:确定如何通过技术手段来构建该指标。如果无法通过技术手段来构建,那么需要明确该指标所依赖的其他实现方法,以避免在不同环境中产生影响偏差。

二、 指标建设

在指标建设阶段,需要在客户端按照指标相关标准完成指标项的建设工作,这依赖于分组样本设定、数据收集等基础能力。

本节以页面加载速度指标为例,分别借助系统提供的API和自建节点数据的方式在客户端建设页面加载速度指标。

● 借助系统API支持指标建设:以页面加载速度指标为例,系统为开发者提供了一些与页面加载时间相关的数据获取API,如NavigationTimingAPI,来支持指标的建设,它可以在客户端直接使用。

● 自建节点数据支持指标建设:在指标建设阶段,相关的节点在App或在自有服务中实现,需要优化的节点功能的建设则优先使用自研或开源方案。根据优化的程度使用不同层级的系统API,否则在App中会缺少优化的手段。

● 指标建设技术实现与分层:将业务网和辑与指标建设逻辑分层构建,可以提高代码的可维护性和灵活性,使指标建设模块更加专注于数据处理,并为业务提供更好的支持和服务。

三、 数据收集

在App中产生的数据会被上报到服务端,以支持后续的数据分析工作。

● 评估阶段的数据收集:内部评估通常在研发阶段进行,需要在特定场景和设备中模拟特定行为,以产生具有预见性的数据。数据的收集应尽可能覆盖指标流程中的不同节点,模拟用户实际使用场景。

● 发布阶段的数据收集:客户端指标建设完成并发布上线后,数据收集方式就只能等到下次发布新版时再进行定制。为了保证数据分析过程中数据的有效性和降低存储成本,常常收集以下四种数据:对比数据、小流量数据、关键节点数据和全量数据。具体内容参阅《搜索架构之道:App中的搜索系统设计与优化实践》。

四、 数据分析

在数据分析阶段,可以根据收集到的数据,分析理指标当前的关键问题点。

● 数值标准:独立的数据并不能代表App整体的指标情况。使用统一标准来对App的指标数据进行计算及分析,可以避免结果偏差。常见的数值标准定义包括总数、平均数、众数、分位数、中位数、最大值、最小值等。

● 对比分析:对比分析是指将两个或两个以上的数据进行比较,分析它们的差异,从而发现这些数据所代表的分组的变化和规律。对比分析主要分为横向对比、纵向对比两种方法。

● 漏斗分析:漏斗分析指根据需要优化的指标等相关因素确定筛选条件,从而实现对筛选后的数据进行分析和对比。漏斗分析同样依赖于数据指标的建设。

● 趋势分析:趋势分析是根据当前数据信息进行推理,得出数据的未来发展趋势,可以帮助指标相关能力提前进行调整。

五、 指标优化

通常速度类指标的优化,重点关注指标在完整流程中耗时较长旦不符合常规的节点;而稳定性类指标的优化,则需要先对异常进行分类,然后重点关注占比较高的异常。其他

类型的指标优化也类似,优先找到影响面较大、可在短时间内进行有效优化的节点,然后对该节点进行优化。综合不同类型的指标项,指标的优化工作包含以下5大类常见的方法。

● 预处理:预处理优化方法是对用户下一步操作可能产生的任务进行预处理,当用户产生操作行为时,因为预处理的任务已提前执行,剩余的任务相对于完整的任务量变少,资源的消耗和耗时变少,这样就缩短了用户等待时间。

● 精简:精简的思路相当于基于功能有效性的前提,把功能相关的流程、任务、资源及代码等因素进行优化,确保以极致的方式实现能力的构建。精简的思路在客户端及服务端都有应用空间。

● 延时调度:优化延时调度的思路是优先执行重要任务,将非关键路径中的任务分配到其他阶段。

● 并行计算:并行计算的思路将一个任务拆分为多个可并行执行的任务且并行执行,以达到在一个时间段内高并发地使用硬件资源。

● 策略优化:策略优化主要指对系统提供的优化相关能力进行调度、应用、拆分及组合等不同纬度的优化。

六、 指标评估

这个过程主要包含指标建设的有效性评估、指标优化方案的有效性评估和版本迭代的指标例行评估。

● 指标建设的有效性评估:通常在指标建设阶段完成后进行,重点评估与指标相关数据的有效性。该评估基于指标的定义,导在评估指标数据收集的准确性。通常,需要根据指标的标准,评估该指标中每个节点的取值和计算是否正确。

● 指标优化方案的有效性评估:通常在指标优化阶段完成后进行,重点评估优化方案对指标的影响。有时也会出现需区同时评估指标数据和优化方案的情况,此时应优先评估指标数据的有效性,然后再进行优化方案的评估。

● 版本迭代的指标例行评估:版本迭代的例行评估工作一般在每个版本开发完成或测试阶段进行,重点在于发现功能迭代过程中间接因素变化对指标产生的影响,通常使用自动化的方式来执行,

七、 指标监控

指标监控机制的建立旨在防止指标劣化和及时发现线上指标的异常。该机制依赖于指标数据的上报,通过自动化机制完成指标数据的计算,并按照预设的形式将计算结果展示给相关人员,以便于查看指标变化、发现指标异常、定位异常产生的原因并采取有效的止损措施。常见的监控方式分为两种:报表和预警。

报表通过结构化数据和图形的形式来呈现指标变化情况。一般通过连续的指标特征生成

图表,用于例行的指标数据查看和汇报工作。报表既需要有概括性的信息,也需要支持按用户分组、按时间及空间维度进行对比分析查看。同时,还需要支持按设备、时间、系统和网络等不同细分类的查询和展现,以发现相关因素带来的指标变化,来更好地支持决策。

预警主要通过对比发现某一个或基一组指标的变化,当发现不符合预期的指标变化时,

将异常信息通知给团队相关人员。指标对比的方式主要为绝对值对比和相对值对比。绝对值对比通常是为指标设定一个阈值,一旦指标数据触发这个阈值,就会产生预警,相对值对比则需要一个参照值,基于参照值的变化幅度触发预警。

本文摘编自《搜索架构之道:App中的搜索系统设计与优化实践》(书号:9787111764595),经出版方授权发布,转载请保留文章来源。

《搜索架构之道:App中的搜索系统设计与优化实践》是一本以搜索业务为主线,深度解读超级App构建与优化的策略、流程、方法、技巧和作者近20年心得精华的著作。本书覆盖了App从诞生到成为超级App的过程中技术架构层面所面临的所有核心挑战及其解决思路。

作者简介

刘俊启,百度前资深研发工程师、百度前App架构师、百度前OC&Swift编码委员会主席、腾讯研发工程师,国内App研发先行者。2005年入职盛大·数位红,参与了Game-V(中国第一个无线游戏娱乐运营平台)的研发工作(NOKIA S60平台)。之后作为初创团队成员,负责多款S60平台的App研发。2009年开始转战iOS平台,负责推进公司产品技术栈向iOS平台迁移。

◆ ◆ ◆ ◆ ◆

往期推荐

<>

鸿蒙大势已定,用了10年干了欧美同行30多年干成的事!搭载鸿蒙生态的设备超过 10 亿+
<>

<>

蚂蚁国际事业群P9们整理的技术硬实力、架构力和领导力工作法,强大到可怕!
<>

<>

余承东豪言华为智驾的总算力,超过第二名+第N名的总和!完全有信息战胜特斯拉的FSD
<>

<>

字节跳动大模型训练被实习生攻击,最新回应来了
<>

相关推荐
辻戋41 分钟前
从零实现React Scheduler调度器
前端·react.js·前端框架
徐同保43 分钟前
使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错:
前端·react.js·前端框架
Qrun2 小时前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp2 小时前
全局 npm config 与多环境配置
前端·npm·node.js
JELEE.3 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery
AI小小怪4 小时前
在Linux服务器上安装CVAT (Docker 28.5.1)
运维·docker·容器·数据标注·cvat
TeleostNaCl5 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
唐兴通个人5 小时前
人工智能Deepseek医药AI培训师培训讲师唐兴通讲课课程纲要
大数据·人工智能
梦里不知身是客115 小时前
spark读取table中的数据【hive】
大数据·hive·spark
前端大卫6 小时前
为什么 React 中的 key 不能用索引?
前端