带你全方面了解字节 A/B 实验的文化与工具
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
A/B 测试是在相同的环境下,通过随机的抽样把对照组和控制组进行区分,并分别实行新旧两种策略,结合一定的统计方法来控制随机抽样中带来的随机误差,得出两种策略的对比情况,从而可以准确的对新策略效果进行评估。
A/B 测试具有小流量、低风险、抗干扰的特点,随机控制变量并对结果进行量化,以达到准确的评估效果,具有科学性和严谨性。目前 A/B 测试可以通过一些实验平台来进行大规模应用,通过统计策略的评估方法进行因果推断的新标准。
字节跳动的 A/B 测试平台叫做 DataTester,这个平台在字节内部已经服务了 500 +多条业务线,在线上开的实验总量超过了 150 万个,同时线上运行的实验数有 3 万多个个,并且这些数字仍在持续上涨中。
在字节,A/B 测试是业务决策的基础功能,任何产品上线前都需要做小流量的验证。所有的团队倾向于把产生的每一个新想法都拿去做假设,用一个又一个 A/B 测试去不断验证,甚至是推翻修正,持续的进行迭代,最终推动业务的增长。小到一条站外推送的消息,大到整个技术底层架构的优化修改,都会做 A/B 测试。
在字节,A/B 测试被应用最广泛的是内容推荐、营销活动、运营策略、产品功能以及技术优化这几个方面。“万物皆可 A/B”是字节的理念,甚至是抖音和西瓜视频这两个产品的取名,都和 A/B 测试有关。
字节跳动的 A/B 实验平台长什么样?
DataTester 目前已经正式通过火山引擎对外服务,它基于先进的底层算法,提供科学分流能力,提供智能的统计引擎,实验结果可靠有效,助力业务决策。通过火山引擎对外发布的 DataTester,无论对字节内部还是对外,都使用一样的产研团队和技术方案,其基础功能大致相同。唯一不同的是由于内外部服务的客户不同存在的一些微小差异。
例如对外增加了许多场景化的监控模板,而内部则可能有更多相对高级的功能。因为 A/B 测试的整个系统除了在数据链路上有一些数据产品常见的特征之外,它与业务系统也有更多的连接。
一站式全栈多场景实验平台的 DataTester 框架整体分成了 5 层。

在应用层,DataTester 服务的行业非常广泛,除了互联网行业之外,还包括金融、消费品、零售行业、汽车行业,包括泛互联网行业里面的一些细分的子领域。这些客户在日常很多的工作场景中都是可以做 A/B 测试的。这些场景抽象下来主要包括广告优化、落地页营销活动优化和用户 push 流程、画布触达优化的实验。
下面 4 层是 DataTester 怎么去和应用层进行接入来提供服务的。在接入层和会话层。通过 DataTester 的分流服务来聚合客户或内部业务的各种线上触点来进行对接,包括但不限于服务端,客户端,甚至是一些小程序和其他广告投放触点的接入。
外部的主要接入方式是通过 SDK 来进行接入,接入 SDK 的同时也会打通数据上报和数据采集的流程。同时 DataTester 也会通过分流服务,把分流的结果要下发到相应的配置,最后返回给这些应用的服务端或客户端,实现一个接入的过程。
最中间也是 DataTester 最重要的一个功能层。可以划分为三大模块,一大模块是实验管理的相关的模块,包括实验管控、从实验的涉及到发布的全流程,还包括了实验的报告,实验报告里面也包括了非常丰富的分析功能,以及相关的实验的工具。这是 DataTester 最基础的一个部分。
第二块是智能发布(Feature Flag),DataTester 怎么去生效不同的策略,便捷地做实验的配置、生效和发布。第三块是场景化的应用,包括了一些智能化的应用,DataTester 其主要的功能层也是在这一块。
最后的数据层,DataTester 除了 SDK 的采集之外,还支持数据集成的能力,包括但不限于有客户端的用户行为、服务端的埋点,以及一些业务的第三方数据。同时 DataTester 也会产出一个用户进组的信息,来把业务的数据和用户进组的数据链接在一起来,去计算适应的指标。
目前,在外部客户的服务上,DataTester 已覆盖推荐、广告、搜索、UI、产品功能等业务场景,提供从实验设计、实验创建、指标计算、统计分析到最终评估上线等贯穿整个实验生命周期的服务。来自得到、美的、凯叔讲故事 APP 等企业客户,已经通过火山引擎 DataTeser 开启了用数据驱动科学决策的道路。
点击跳转 火山引擎A/B测试DataTester了解更多
带你全方面了解字节 A/B 实验的文化与工具的更多相关文章
- vue ios自带拼音全键输入法模糊查询兼容性问题
ios的自带拼音全键会在输入框中输入拼音,直接在输入框用@keyup="autoInput()"的话,在监听输入事件的时候安卓显示正常, ios就会出现输入显示数据不灵敏 解决办法 ...
- “全栈2019”Java第三章:安装开发工具IntelliJ IDEA
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 让自己写的电子笔记连文带图全平台兼容(MarkDown图片显示兼容)
目录 一.工具使用 语言使用:MarkDown 简介 使用原因 使用方法 软件使用:Typora 简介 环境设置搭建 1)搭建图床 2)配置PicGo 3)配置typora 4)测试 图片上传测试 平 ...
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...
- sql数据库带补全终端命令
mysql pip install mycli pgsql pip install pgcli 都是python脚本,记录备忘.
- iOS-系统自带navigationController-最全设置
// 导航栏背景色 self.navigationController.navigationBar.barTintColor = [UIColor orangeColor]; // 设置push出来的 ...
- MySQL十种锁,一篇文章带你全解析
MySQL有两个核心的知识点,索引和锁.前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁. 1 为什么要加锁? 当多个事务并发操作同一批数据的时候,如果不加锁,就无法保 ...
- 最强最全干货分享:Android开发书籍、教程、工具等
最全干货分享,本文收集整理了Android开发所需的书籍.教程.工具.资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益. 入门<Learning Android(中文版)& ...
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
dedecms即织梦(PHP开源网站内容管理系统).织梦内容管理系统(DedeCms) 以简单.实用.开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,近日,网友 ...
- 带你开发一款给Apk中自己主动注入代码工具icodetools(开凿篇)
一.前言 从这篇開始咋们開始一个全新的静态方式逆向工具icodetools的实现过程.这个也是我自己第一次写的个人认为比較实用的小工具,特别是在静态方式逆向apk找关键点的时候.兴许会分为三篇来具体介 ...
随机推荐
- idea java项目启动后访问html页面乱码
最近在做一个较久的项目,用的还是servlet+html(jsp),代码拉到本地后运行,访问登录页login.html既然乱码,先看个乱码的效果 怎么样,是不是很经典的乱码,别着急,我们一点点来分析乱 ...
- 提升运维效率:轻松掌握JumpServer安装和使用技巧
前言 JumpServer 是一个开源的跳板机的解决方案,提供了对远程服务器的安全访问.会话录制和审计.用户身份管理等功能,适用于需要管理机器资源&大量服务器资源的情况. 本文将在分享 doc ...
- Java SPI机制学习之开发实例
原创/朱季谦 在该文章正式开始前,先对 Java SPI是什么做一个简单的介绍. SPI,是Service Provider Interface的缩写,即服务提供者接口,它允许开发人员定义一组接口,并 ...
- Python 如何实现合并 PDF 文件?
在处理多个 PDF 文档时,频繁地打开关闭文件会严重影响效率.因此,对于一大堆内容相关的 PDF 文件,我们可以先将这些 PDF 文件合并起来再操作,从而提高工作效率.比如,在传送大量的 PDF 文档 ...
- ST 表
ST 表 定义 ST 表是用于解决 可重复贡献问题 的数据结构,通俗来说,一般可以解决区间查询问题. 区间最值和 \(gcd\) 我们以最大值为例,然后可以再推广到最小值和区间 \(gcd\) 首先你 ...
- 开源推荐,灵活多变功能强大的CMDB
一个完善的基础资源数据库是我们构建运维自动化上层应用的基础,所以构建CMDB系统成了有想法在DevOps运维自动化领域有所发展的企业离不开的重要一环,但受制于每家企业不同的内外部环境.资源配置以及管理 ...
- UNCTF-Crypto wp
2020年 easy_rsa 题目 from Crypto.Util import number import gmpy2 from Crypto.Util.number import bytes_t ...
- VScode 中利用virtualenv建立 Python 虚拟环境
! https://zhuanlan.zhihu.com/p/638114885 VScode 建立 Python 虚拟环境 主要目的:创建一个与默认 python 版本不同的 python 虚拟环境 ...
- windows查看GPU信息(nvidia-smi)
一般在使用windows系统的电脑时,想要了解GPU的使用情况时,我们通常会打开任务管理器去查看.但是这种方式一般只能看到简单的情况.那么我们想要了解更多的情况的话,该怎么办呢.可以在cmd中输入nv ...
- 使用Redis实现一个分布式的全局ID
当然实现方式有很多中,这里主要是记录一下使用Redis的实现方式 import lombok.extern.slf4j.Slf4j; import org.springframework.beans. ...