从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用

news2024/11/25 8:23:11

作者:DataTester

用户体验是决定互联网产品能否长久生存的关键,每一个基于产品功能、使用和外观的微小体验,都将极大地影响用户留存和满意度。

对于企业协作平台飞书而言,用户体验旅程从打开产品页面的一瞬间就已开始,这里有一个十分重要的指标——页面秒开率,秒开率是指页面在一秒之内打开的比率。飞书为了提升用户体验,对其各项功能的秒开率优化下了大功夫,通过应用火山引擎A/B测试(DataTester)进行严格的变量控制,落地精准的实验结果,帮助研发团队佐证并明确了秒开率优化方案的收益。

影响秒开率其实有很多种因素,如代码冗余,插件拖累…… 在其中,有一项重要的影响因素是“类加载”。类加载是指当页面被打开时,背后是调用的多个元素的代码,它们会经历验证、准备、解析、初始化等环节后,才能被使用,这个流程是比较耗费时间的。

 

以飞书的一项功能“飞书妙记”加载为例,当飞书整体进行冷启动时,如果用户是首次打开飞书妙记界面,就会伴随着接近1600个类的大量加载,这对页面启动速度有着不可忽视的影响。如何减少如此高的类加载数量对秒开率的影响呢?飞书团队希望尝试采用的方案是:接入SnapBoost方案。

SnapBoost方案的思路是让app能够提前对页面使用到的"类"进行加载,通俗来说,也就是在用户打开页面之前,将耗时较长的部分提前进行加载,当用户在打开页面的时候,这些代码省去了编译和解析的时间,可以直接执行,使秒开率得到提升。

那么SnapBoost方案是否能有效降低“飞书妙记”的加载时间呢?飞书团队采用了火山引擎A/B测试(DataTester)进行方案可行性的重要验证。

本次A/B实验三大指标:

  • 类加载数量

  • Activity切换耗时 :Activity通常指一个单独的屏幕(页面),此指标指在不同页面之间的切换耗时。

  • 可感知耗时 :指用户操作相关动作(点击播放、滑动卡片等)到首帧渲染出来感知到的耗时。

优化前后收益验证:

 

火山引擎DataTester的实验结果,对SnapBoost方案的提升性能假设给予了强有力的佐证,通过SnapBoost方案等一系列优化,飞书妙记的秒开率可以达成37%的优化提升,目前该方案已经成功地进行了全量上线。

“ DataTester是结合A/B测试方法论最好的一个工具。”飞书的研发成员在采访时讲到,在性能优化的A/B实验上,DataTester能提供更加严格的变量控制和更加智能化的实验形式,业务可以便捷地获得有说服力的实验结果。

企业研发场景如何应用A/B测试

飞书的案例是一个A/B实验应用在研发场景的典型例子。市场对于常规A/B测试的常规印象是“产品优化的利器”,如产品页面UI优化、产品策略优化等;但区别于常规印象,火山引擎A/B测试DataTester也可应用在多种研发场景中,包括算法优化、性能优化、模型优化、灰度发布场景等。

DataTester提供了丰富的研发场景模板,依托深入业务打磨的扎实的产品能力,可以帮助企业提升研发层面的效率和决策准确率。

算法优化

各类算法优化是DataTester应用场景最频繁的地方之一,算法开发人员可以通过A/B测试来验证新的算法或者算法优化是否可以提升对应业务指标。抖音的推荐算法、广告算法、千人千面等设置,无一不是经历了DataTester的多轮验证。而包括推荐、搜索、精准广告、精细化运营等涉及到算法的产品和业务也都可以应用A/B测试技术。

性能优化

在产品演进与迭代的过程中,常常会出现由于发展迅速导致的历史遗留问题加重。如代码冗余、分支版本多难维护等情况,产品需要对代码进行清理,对产品组件进行优化,火山引擎DataTester能够帮助验证产品性能优化的结果,避免在优化过程中出现bug导致产品发生严重负面影响。

此外,对于一些影响用户体验的场景,例如观看视频、播放歌曲时的快速加载,这种性能优化的场景在DataTester中也提供了相应的应用模板,业务可以快速上线多种策略并查看其对关键性能指标的影响。

服务迭代

当一些服务前端代码需要进行迭代时,会面临一旦出现问题,对用户范围影响较广的风险。此时也可通过火山引擎DataTester去验证服务的稳定性。例如抖音电商要对商家后台进行升级,改造主要涉及的是多个商家平台基础的接口,他们首先会选择接入DataTester,用A/B测试来实验接口变化后对产品稳定性的影响。

灰度发布

当产品有新功能上线后,如果线上服务一旦出现问题,需要做到及时回滚,DataTester的智能发布能力适配这一场景。产品在新功能上线出现问题需回滚时,只需应用DataTester智能发布能力或关闭实验,或关闭服务端的 TCC 开关,就能将所有流量立即回滚到旧的服务上,保障灰度发布场景下出现问题时的用户体验。

火山引擎A/B测试核心模块介绍

扎实的实验能力背后,是因为有完备产品架构支撑。火山引擎DataTester作为一站式全栈多场景实验平台,产品结构纵深丰富,并可以基于先进的底层算法,提供科学分流能力和智能的统计引擎。

DataTester产品整体分为5层结构:

 

在应用层,DataTester服务的行业非常广泛,除了互联网行业之外,还包括金融、消费品、零售行业、汽车行业,以及泛互联网行业中的细分子领域。这些领域有很多工作场景都可采用A/B测试提效,如广告优化、落地页营销优化和用户推送优化、画布触达优化等实验。

在接入层和会话层,通过DataTester的分流服务能聚合业务的多种线上触点,包括但不限于服务端、客户端、小程序及广告投放平台触点的接入。 中间层是DataTester最重要的功能层,这里可以划分为三大模块:

模块一是实验管理相关模块,包括实验管控,涵盖实验从设计到发布的全流程,也包括实验的报告及其中丰富的数据分析功能,以及相关的实验的工具,这一模块是DataTester最基础的部分。

模块二是智能发布(Feature Flag),A/B测试如何生效不同的策略,如何智能化完成实验的配置、生效和发布,均由这一模块完成。

模块三是A/B测试场景化的应用,DataTester提供了多样化的实验方式和实验模板。

最后的数据层,DataTester除了SDK的采集之外,还支持数据集成的能力,可以集成的数据包括但不仅限于有客户端的用户行为、服务端的埋点,还有业务的第三方平台数据亦可支持。同时DataTester也会产出用户进组的信息,来将业务数据和用户进组数据链接在一起,方便A/B实验的开启。

火山引擎DataTester起源于字节跳动内部的数智实践,在字节内部已经服务了500多条业务线,10余年间在字节跳动开启的实验总量已超过150万次。同时,DataTester现已服务了美的、得到、凯叔讲故事等在内的上百家外部企业,支持了多个行业、多种业务场景的需求,为业务的运行、转化、增长等各环节提供了科学的决策依据,将成熟的“数据驱动增长”经验赋能给各行业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何安装多个node版本(使用nvm)

1、卸载之前安装的所有node 2、下载nvm安装包,下载地址https://nvm.uihtm.com/ 3、安装nvm 4、打开cmd,运行命令 nvm install node版本号,安装对应版本的node 5、打开nvm的安装路径,可以看到安装的对应的node版本的文件夹 6、若有…

K8S之Deployment控制器管理应用(十一)

Deployment介绍 Deployment是最常用的K8s工作负载控制器(Workload Controllers), 是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。 Deployment的主要功能: • 管理Pod,即应用程序 •…

CS1237 数据实测

目录 硬件 测试数据 结论 性能 转换时间 硬件 外部电阻电位器 模拟 传感器信号 测试数据 一下记录数据为ADC原始数据未经过软件滤波 跳动幅度图片DEV_FREQUENCY_10DEV_PGA_1751DEV_FREQUENCY_40DEV_PGA_11562DEV_FREQUENCY_640DEV_PGA_18243DEV_FREQUENCY_640DEV_PGA_644…

Spring:什么是SpringBoot框架?①

前言: 我们说任何一个阶段的技术更迭都是在代码量,代码简洁度,封装后复杂关注度降低上下功夫,不断提升生产力。 Spring已经足够牛了,它的bean容器思想启迪和影响了众多的程序员,奠基引领了技术的发展。 在应…

人工智能直播的趋势分析报告

人工智能直播是指通过人工智能技术来模拟真人直播,通过机器学习和自然语言处理等技术实现。随着人工智能技术的不断发展,人工智能直播在近年来得到了广泛应用。 一、人工智能直播的优势 节省成本:相比传统直播,人工智能直播不需要…

校园垃圾回收处理APP

摘 要:本文开发的是校园垃圾分类回收APP。随着互联网的快速发展,现如今使用互联网对信息进行管理这一方法也被各行各业所使用,因为实现信息管理最好的方式就是建立良好的网络管理平台,并对其进行综合管理。与此同时,A…

C++模板类及其应用

C模板类及其应用 在本文中,我们将探讨C中的模板类及其应用。模板类是一种通用的编程技术,它允许您创建可重用的代码,同时保持类型安全和高性能。我们将通过以下几个方面来介绍模板类: 文章目录 C模板类及其应用什么是模板类&…

tomcat集群下的session共享和负载均衡(apache实现)

环境 操作系统:windows tomcat1:Apache Tomcat/7.0.52(8085) tomcat2:Apache Tomcat/7.0.52(8086) jdk:1.8.0_251 apache-http:httpd-2.2.17-win32-x86-no_ssl&#xff0…

rabbitmq集群搭建

rabbitmq集群 环境初始化配置集群配置集群节点通信配置节点加入集群 常用命令集群搭建避坑 节点IPrabbitmq01(磁盘节点)192.168.200.80rabbitmq02(内存节点)192.168.200.81rabbitmq03(内存节点)192.168.200…

【Android开发基础】四大组件之一Service(服务)的应用场景及使用(以实时聊天为例)

文章目录 一、引言1、什么是服务?2、应用场景3、其他类同 二、生命周期三、基础使用1、创建服务2、注册服务3、启动服务 四、进阶使用(实时聊天)1、实现效果2、数据流图3、服务部分 一、引言 1、什么是服务? Service(…

路径规划算法:基于海洋捕食者优化的路径规划算法- 附代码

路径规划算法:基于海洋捕食者优化的路径规划算法- 附代码 文章目录 路径规划算法:基于海洋捕食者优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能…

nginx系列第五篇:nginx中相关通信总结

目录 1.master进程监听socket 2.master和worker进程通信机制 2.1通信渠道 2.2通信方法 2.3通信内容 2.4子进程事件处理 3.epoll封装 4.linux系统下信号查看 1.master进程监听socket nginx在master进程socket bind listen,accept在通过epoll在子进程中控制&a…

ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

本案例为一个 threejs 的特效网页,大小球体进行包裹,外球体为透明材质,但是进行了线框渲染,使其能够通过外球踢查看其内球体。 注:案例参考源于互联网,在此做代码解释,侵删 本案例除 ThreeJS 外…

Kafka原理

生产者原理解析 生产者工作流程图: 一个生产者客户端由两个线程协调运行,这两个线程分别为主线程和 Sender 线程 。 在主线程中由kafkaProducer创建消息,然后通过可能的拦截器、序列化器和分区器的作用之后缓存到消息累加器(Rec…

uniApp 页面通讯统一解决方案

文章目录 往期回顾统一解决方案uni.on和eventChannel之间的选择如何设置触发器最终范例距离 往期回顾 uniapp 踩坑记录 uni.$on为什么不能修改data里面的数据 uniApp页面通讯大汇总,如何页面之间传值 统一解决方案 uni.on和eventChannel之间的选择 uni.on和eve…

61082-041502PLF(0.80mm)40 位置 连接器 插座,G846A050210T1HR 集管和线壳 WTB 1.00 PITCH

61082-041502PLF(0.80mm)FCI紧凑型Bergstak连接器提供广泛的堆叠高度和电路尺寸,以支持广泛的夹层,板堆叠通信,数据和工业应用。 连接器类型:插座,外罩触点 针位数:40 间距&#xff…

浅谈互联网搜索之召回

一、背景 在搜索系统中,一般会把整个搜索系统划分为召回和排序两大子系统。本文会从宏观上介绍召回系统,并着重介绍语义召回。谨以此文,希望对从事和将要从事搜索行业的工作者带来一些启发与思考。 二、搜索系统召回方法 不同于推荐系统&…

6月6号软件资讯更新合集......

Yao 0.10.3 正式发布,拥抱 AIGC 时代! ChatGPT 解锁了新的人机交互方式,人类可以与电脑直接交流了!AIGC 时代已经到来,万千应用正在升级或重构,Yao 提供了一个开箱即用的解决方案,可以快速开发…

迷茫了3年:做完这个测试项目,我终于决定辞职!

2023年早已过半,来个迟到的年中总结,说实话,2023,很迷茫,然后过的非常不如意,倒不是上一年的职业目标没达到,而是接下来的路根本不知道如何走。在没解决这个问题之前,或者说没搞清楚…

Web3.0概念

学习web3您需要先掌握 JavaScript node React 后续 我们将学习一门新的语言 叫 Solidity 他是一种只能合约语言开发 我们利用web3将不再依赖后端 而是连接只能合约开发 首先 我们先不用急着写代码 还是要概念为先 首先 我们来对比 WEB1.0到3.0的概念 首先 web1.0 更多处于信…