更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

日前,在 WOT 全球创新技术大会上,火山引擎 DataTester 技术负责人韩云飞做了关于字节跳动 A/B 测试平台的分享。DataTester 是字节跳动内部应用多年的 A/B 实验平台,平台自建立至今,承载了字节 500 余个业务线的 A/B 实验任务,累计已开展过 150 万次实验,现在字节跳动每天会新增实验 2000 余个,同时在 DataTester 上运行的实验有 3 万余个。

字节跳动内部有着非常浓厚的数据文化和实验文化,抖音、今日头条的名字都经由 A/B 测试确定,而 A/B 测试也是整个研发链路上的必经一环。本文将以字节研发流程中的两个个案例,介绍 A/B 测试在研发全流程中的角色。

1.产品系统重构

今日头条是一款信息类互联网产品,它会基于数据挖掘的推荐引擎向用户推荐文章。今日头条早期的信息流服务是使用 Python 的一项单体服务,但随着字节业务发展的迅速,今日头条的流量也迎来了爆发式增长,产品在性能工程上的复杂度也在急剧升高。

为了优化产品,使之更加适应大流量下的响应,今日头条的信息流业务设计了一次大规模服务化重构:语言选型从 Python 切换到了 Golang,从单体服务架构演变成了分层的微服务架构。

但这个重构设计,是围绕产品性能方面的技术指标展开的,但对于用户体验的影响和业务目标的影响,却无法通过短期观察得到结论。为了避免复杂的新系统上线后,降低头条用户的产品使用体验,因此在重构方案设计完毕后,今日头条业务花费了 6 个月以上的时间,开展了新方案和旧方案对比的 A/B 测试,总共进行过几十次 A/B 实验,多点开启灰度测试,并不断分析结果、迭代方案,确认改进点对业务数据指标的影响。

在半年多之后,这个复杂的新系统终于结束了 A/B 测试,并推全上线。上线后的新系统对今日头条大部分全局指标几乎无影响,甚至一些关键指标取得了显示正向的结果。

2.产品 Bug 修复

这个案例是字节直播产品的场景。该产品在设计了新的精排模型,原本期望是想召回模型学习到更多信息,提前做一些召回符合用户兴趣的内容,提升部分产品关键指标。但在实际操作中,由于模型配置出现了 Bug,上线失败。

因此,该直播产品的团队针对这个 Bug 进行了修复,但只能采用使精排模型变得更复杂的方案。新的功能虽然已经成功跑通,但由于模型更加复杂,对于用户产品体验负向影响的风险会随之升高。

为了验证新开发的功能对用户体验的影响,该团队使用 DataTester 开启了 A/B 测试,他们将用户分为新用户组、老用户组分别开启实验,通过数据观察发现,新的功能对于新用户的而言没有什么实质性影响,新用户的使用时长、留存等指标依然是在一个特定区间波动;但在老用户组的实验数据中,他们发现老用户在内容人均阅读时长上,有了 0.3%的显著提高。虽然 0.3%是一个看起来不大的数字,但对于字节产品的用户体量而言,这种幅度的提升,在用户内容消费时长上的实质提升很大。

上述两个案例是 DataTester 在字节跳动应用的缩影,实际上,在字节整个的研发流程中,开发、上线、BugFix、优化、重构,A/B 测试都会作为基础设施中的一环,来服务于整个研发流程。除此之外,A/B 实验也广泛应用于字节跳动业务的方方面面,从产品命名到交互设计,从改变字体、弹窗效果、界面大小,到推荐算法、广告优化、用户增长...... 可以说,DataTester 已经融入在字节的每一个业务和每一项决策中。

DataTester 当前已通过火山引擎面向外部企业开放服务,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型。目前,火山引擎 DataTester 已经服务了美的、得到、凯叔讲故事等在内的上百家标杆客户,将成熟的“数据驱动增长”经验赋能给各行业。

点击跳转 A/B测试 DataTester了解更多

剖析字节案例,火山引擎 A/B 测试 DataTester 如何“嵌入”技术研发流程的更多相关文章

  1. 火山引擎 A/B 测试产品——DataTester 私有化架构分享

    作为一款面向 ToB 市场的产品--火山引擎A/B测试(DataTester)为了满足客户对数据安全.合规问题等需求,探索私有化部署是产品无法绕开的一条路. 在面向 ToB 客户私有化的实际落地中,火 ...

  2. 还原火山引擎 A/B 测试产品——DataTester 私有化部署实践经验

      作为一款面向ToB市场的产品--火山引擎A/B测试(DataTester)为了满足客户对数据安全.合规问题等需求,探索私有化部署是产品无法绕开的一条路.   在面向ToB客户私有化的实际落地中,火 ...

  3. 火山引擎 DataTester:让企业“无代码”也能用起来的 A/B 实验平台

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当数字化变革方兴未艾,无代码正受到前所未有的关注.Salesforce 的数据显示,52%的 IT 部门表示,公司 ...

  4. JuiceFS 在火山引擎边缘计算的应用实践

    火山引擎边缘云是以云计算基础技术和边缘异构算力结合网络为基础,构建在边缘大规模基础设施之上的云计算服务,形成以边缘位置的计算.网络.存储.安全.智能为核心能力的新一代分布式云计算解决方案. 01- 边 ...

  5. 火山引擎 DataLeap:揭秘字节跳动数据血缘架构演进之路

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...

  6. 火山引擎 DataLeap:3 个关键步骤,复制字节跳动一站式数据治理经验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理. ...

  7. 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性

    通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的 ...

  8. 火山引擎 DataLeap 的 Data Catalog 系统公有云实践

      Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...

  9. 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

      摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...

  10. 火山引擎 DataLeap:一家企业,数据体系要怎么搭建?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 导读:经过十多年的发展,数据治理在传统行业以及新兴互联网公司都已经产生落地实践.字节跳动也在探索一种分布式的数据治 ...

随机推荐

  1. webservice soap hessian

    http://www.blogjava.net/freeman1984/archive/2010/01/20/310198.html http://www.cnblogs.com/JeffreySun ...

  2. JavaScript 语法:流程控制语句

    作者:WangMin 格言:努力做好自己喜欢的每一件事 JavaScript流程控制语句的三种基本结构:顺序结构,选择结构,循环结构 顺序结构 从上到下执行的代码就是顺序结构,程序默认就是由上到下顺序 ...

  3. 20.7 OpenSSL 套接字SSL加密传输

    OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的.SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性.在 SSL/TLS 协议中,加密算法是其中最核 ...

  4. linux系统centos7安装docker

    1.Docker官网安装地址 https://docs.docker.com/engine/install/centos/#prerequisites 2.离线安装下载地址 https://downl ...

  5. 纯css步骤条编写

    .steps { position: relative; margin-bottom: 30px; counter-reset: step; /*创建步骤数字计数器*/ } /*步骤描述*/ .ste ...

  6. games101-2 透视深度插值矫正与抗锯齿分析

    透视深度插值矫正与抗锯齿分析 深度插值的差错原因 透视深度插值公式推导 games101中的错误 msaa与ssaa简要定义 games101中ssaa的实现 games101中msaa的实现 深度插 ...

  7. 【问题解决】unable to do port forwarding: socat not found

    问题复现 前阵子应公司要求做华为云平台的调研,写了一篇文档包含将华为云CCE下载kuberctl配置及使用kubectl转发流量到本地的操作. 今天一早上同事就发来一个错误界面,说是Java远程调试转 ...

  8. 【UniApp】-uni-app-网络请求

    前言 经过上个章节的介绍,大家可以了解到 uni-app-pinia存储数据的基本使用方法 那本章节来给大家介绍一下 uni-app-网络请求 的基本使用方法 步入正题 首先我们打开官方文档,我先带着 ...

  9. python操作redis集群、redis主从+哨兵

    主从+哨兵 from redis.sentinel import Sentinel if __name__ == '__main__': # 哨兵监听的别名,这个就是你redis配置中的名字 serv ...

  10. 手写滑动同步滚动进度条jq插件

    因需要一种滑动显示内容,并且带可拖动的进度条,即下面这种效果 找了很多插件,总有地方不能满足需求.于是决定自己手写,下面为完整源码: swiper.js 1 $.swiperCalculator = ...