火山引擎韩云飞:数据驱动的ROI将是无限的测试基本上也是整个研发环节的必经环节。那么如何在研发体系中有效应用数据驱动呢?日前,在火山引擎主办的WOT全球创新技术大会上,火山引擎DataTester技术总监韩云飞从“研发过程中无处不在的数据驱动”、“如何建立一个数据驱动平台”三个方面进行了探讨。可持续的数据驱动文化”和“数据驱动的投资回报率”。一方面,带来了以“构建数据驱动的新型研发体系”为主题的精彩分享。现整理如下,希望对您有所启发。无处不在的数据驱动字节跳动在整个研发过程中,数据驱动无处不在。首先以火山引擎的AB测试为例,探究数据驱动的开发过程。火山引擎A/B测试有着悠久的历史。抖音、今日头条等名称已经过A/B测试。今天,西瓜视频的名字也经过了A/B测试。我有幸参与了这件事。咸蛋视频”,如果没有AB测试,也许现在用的是“咸蛋视频”这个名字。平台自成立以来,承载了500+业务线和150W+总实验的能力,每天新增2000+实验,同时跑3W+的实验,AB测试怎么支持这么大的实验,这么大的并行度呢?首先在数据层,我们有一个SDK,收集我们端的埋点和埋点服务器上的点,包括用户进群的信息。在数据集成方面,我们其实有大量的用户业务数据和第三方数据,我们通过数据集成的能力进入到我们的系统中。功能层面,进一步分为几个模块,首先从整个实验的设计,实验的配置,调试,数据上报,包括结论的得出,到线上发布,这些都在respo下由实验控制的模块的nsibility。做一个实验最重要的就是评估报告,所以我们实际上在实验报告中提供了执行的测试,统计的分布,实验数据的趋势,以及一些指标的配置。能力还有很多,这里就不一一赘述了。另外我们也提供了一些有用的工具,包括实验受众管理,因为有时候我们会针对特定的用户群体做实验,比如我的新用户,某个城市的用户,甚至说它有一些用户画像。还有业务目标管理。随着越来越多的业务线打通,我们想积累可复制的经验,可能用来提高留存率或其他业务目标,进一步拆解成面向业务的做什么,最后通过建立指标间的关系和实验,其他业务线以后会做类似的事情,或者同一个业务线在第二年就到了,可以考虑之前针对这个指标做过哪些实验。此外,我们还提供端到端的实验模板,包括针对不同场景的编程实验、多链路实验、可视化实验、推送操作实验。在接入层,我们其实是提供SDK和分发来连接各种业务系统,包括会话层的server和client,还有一些其他的小程序给B。在应用层,我们提供针对不同行业的解决方案,包括,for比如,泛互联网。泛互联网其实分为更细的内容、电商、社交、工具。金融其实包括银行、证券、保险,都用到了这个能力。包括消费大的行业,如家电、消费、汽车行业等。接下来我们就来看看如何在研发过程中使用数据驱动。开发新功能的正确姿势是什么?假设PM提出了一个需求,如果我们想给抖音增加一个“熟人标签”,在数据驱动的情况下,我们要怎么做呢?产品审核流程结束后,我们会加两个东西,一个叫埋点设计,一个叫AB方案设计。其实从珠三角计划一开始,大家就可以猜到,它可能会提供不止一个计划。Tab,是加在顶部还是底部?正是该策略应该是什么样子。这是一件不确定的事情。草率的决定可能会对整个抖音生态造成很大的影响。所以其实还是要试验,先小范围试验,小流量试验。我们可能有这样的计划。比如我们有V1群和V2群,加上熟人标签。此时通过验证各自的过程时长等指标得到最终的实验结论,发现V2组更优,社会价值提升更显着,于是全面启动了该方案。复杂的系统重构如何做好?今日头条是一个综合信息平台。今日头条早期的信息流服务使用单一的Python服务。随着业务的快速发展和流量的爆发式增长,业务工程的复杂度也在急剧上升。为了更好地支持长期的业务发展,信息流做了大规模的面向服务的重构:语言选择从Python切换到golang,单一服务架构进化为分层微服务架构。过去,人们在重构时,更多地关注质量、性能等技术指标,认为这样就够了,但实际上却忽略了用户体验和业务目标。如此大规模的重构,设计和实现的时间并不长,但要保证重构后的信息流服务在各项业务指标上不被破坏。做AB测试用了半年多的实验。经过十次AB测试,分析业务指标的影响,大部分全局指标几乎没有影响,甚至部分关键指标为正,完成了这个复杂系统的大规模重构和上线。错误修复不应该在修复后立即发布吗?这是直播现场。先介绍一下整个直播的实验背景。抖音的UniversalEmbedding在精化模型中使用,使用了一些特征。我们也在召回阶段使用这些特征,让召回模型可以学到更多的信息,提前做一些符合用户兴趣的召回。对于某些内容,保持召回率和精细排序一致可以提高一些指标。这个想法很好,但是由于配置问题,文章的部分内容特征获取失败,这个功能没有成功上线。现在这个功能已经修复了,修复后会直接上线吗?其实大可不必。你会发现这个bug非常隐蔽,不会引起用户明显的感知,但是你的系统和你想象的不一致。就算修好了,不修真的不好吗?我不这么认为,因为系统本身太复杂了。如果加上这个功能,如果没有什么用,反而让系统变得更复杂,那可不是什么好事。更不用说下行风险了。所以我们还是用AB测试。我们分别对新用户和老用户进行测试,发现对新用户没有实质性影响,指标有波动。这是可以理解的,新用户可能没有太多的功能可以使用。对于老用户实验,我们发现他的人均展示量和人均阅读量都有0.3%左右的显着提升。这个数字可能不高,但是对于抖音的身体来说,增加这么多其实已经很大了。线上发布如何更安全、更顺畅?再说一个在线发布的例子。比如在整个微服务中,上游服务调用下游服务时,很多流量直接打到每台机器上。在某些情况下,这样做可能会出现问题。比如新机型上线时,该机型需要机器承载,测试阶段的流量显然远小于实际上线时的流量。然后上线的时候能不能直接发流量,上线过程中重启机器会不会带来一些不好的影响,这些都需要AB去测试。因此,我们针对线上场景,将AB的能力开放给基础设施部门。首先将目标服务按照预配置进行切分,分为不同的集群,比如有AB的集群,有基线版本的集群。集群拆分后,调整平台的OpenAPI开始实验。实验中配置了env等一些环境参数。上游服务会通过RPC框架和我们的AB进行交互,可以读取具体的环境参数,然后正确的调度自己的流量到对应的下游集群。在这个过程中,需要多少流量,分配多少台机器,开发者可以通过OpenAPI将这两个东西连接起来,得到适当的处理。整个在线升级,包括重启机器,都可以非常流畅丝滑。SQL优化让人秃头,怎么破?再比如SparkSQL的优化。如果你想做好优化,你需要知道如何设置映射器、缩减器和执行器的数量。内存不足,序列化结果过大等大错误。其次,SQL运维优化会消耗大量的人力。随着数据量的增加,随着整个逻辑越来越复杂,其执行的环境也会发生变化。一个好的优化可能并不总是正确的。可能需要随着数据量的增加和环境的变化不断调整,以后可能会变差。我们的一些SQL专家非常强大。他的SQL优化经验可以写成书,他写的SQL确实比一般水平好很多倍。但是让每个同事都具备优化SQL的能力既不现实也没有必要。有什么更好的方法来做到这一点?我们的大数据同学想到了AB测试。AB测试在数据提交阶段引入,任务启动时可以开启优化列表。在这个过程中,我们的团队开发了一个优化引擎,叫做DataOptimizer,它会根据task不断优化,比如它的历史执行状态,环境Data等,最终会让你做一些调优,调优后看效果。最后我们发现这个优化后的系统比专家经验好5%。AB测试是研发全流程的基础设施。所以,刚才的案例串联起来,开发、上线、BugFix、优化、重构。你会发现在整个研发过程中,其实AB测试可以像存储、计算、网络一样,作为一个基础设施服务于整个研发过程。通过刚才的例子,大家应该更加清楚如何在日常研发过程中将其应用到我们的工作实践中,成为我们的得力武器。建立可持续的数据驱动文化第二部分介绍了如何根据我们以前的实践在公司中建立可持续的数据驱动文化。前面讲了很多案例,其实是想让大家有更深刻的认识。通过如此大量的实践,可以获得一些小知识,即如何建立可持续的数据驱动文化。字节跳动的数据驱动文化是如何建立起来的?我个人认为三点非常重要。价值观:鼓励以数据为先,价值观来自企业基因。是整个公司的价值在引导数据驱动的东西吗?是否鼓励和允许做数据驱动,不会违背价值观。其次,我们会有一些平台和工具来支撑大家日常数据驱动的工作。第三,在机制流程上,我们有一个叫LaunchReview的机制,保证大家在日常生活中不会变形,是真正的数据驱动,不是假数据驱动。我分别介绍这三个部分。首先,价值观的第一部分是从整个企业的基因上鼓励大家去数据驱动。这里我截了几个我们字节圈的截图。这个例子是上次出差遇到一个老头,他很关注互联网,喜欢浏览抖音。他问了很多问题。但他也提到,竞品的自动播放不需要刷卡,但冬天很冷,可能没有暖气,可能更舒服一些。也有创作者提出了这样一个功能,就是我们公司鼓励大家提出想法,包括和用户交流。大家直接说你其实可以做一个AB测试,或者我们可以把这个反馈给抖音的相关业务部门,让他们做这样的尝试,看看是否有利可图,或者很人性化。所以我们实际上鼓励每个人都有不同的想法。第二个例子其实和这个有点相似。抖音自动播放结束后,向上滑动的功能其实和上面的需求很像。其实已经在做了,有同学说希望能加入这次内测先体验一下。还有两个更生动有趣的例子。我们在北京有很多工作区,有一个公募基金工作区。有一天,行政部门更换了马桶座圈,一些学生反映这看起来很尴尬,很麻烦。我们的行政同学在下面回复。其实这个事情就是我们在做一个AB测试,是一个非常小的流量。只是这位同学运气不好,可能刚好撞到实验组。我们的行政同学跟进解决了这个问题。事实上,你会发现那些远离研发过程的序列,比如管理,正在积极参与,并且已经在尝试将数据驱动的概念应用到他们的生产中。我认为我们需要做更多的研究和开发。其次,你已经形成了很多笑话。比如你在内网发帖,“我要做可口可乐鸡翅,放可口可乐还是百事可乐?”其实这个问题是突然问你的,你可能不太会回答,至于哪个口味更好,你需要自己去试一试。有同学说要自己在家考AB。数据平台:从数据应用上把门槛降到最低刚才我们讲了价值观和企业文化,接下来我们讲第二个,我们需要一个好的工具。之前的分享讲了底层基础设施,如何把数据弄进去,大家可以直接看到数据,如何管理数据等等。到目前为止,我们要强调的是,我们在数据应用层做了很多工作,降低了大家使用的门槛。下面举三个我们数据应用层工具的例子。比如我们的DataFinder其实就是一个用户行为分析的工具。它在降低标准方面有两个典型的功能。一种称为场景模板。根据不同的业务场景,甚至不同行业的需求,它可能有40多个模板。公司来了之后,可能一开始不知道怎么设置看板。这个模板会给大家参考,告诉大家怎么操作,怎么搭建支付转化的看板。其次,我们也提供对看板的洞察,也就是我们其实在背后使用了一些AI的能力。此数据假设存在一些波动。我们告诉你,它可能真的会波动。虽然每天都有波动,但与聚类点还是有一些偏差的,发现它可能有一些有趣的方面,我们会告诉你这个东西,我们会帮你分析这一点,也许它可能不完全正确,但也许我们会有一个概率保证。但它相当于取代了你原来的一些手动分析功能。我们的DataTester是AB测试的工具,同时也提供了可视化编辑的能力。我们接入SDK后,我们的一些PM和运维同学可能会直接在网站上更改其Slogan和按钮。文案,甚至一些颜色,都可以做一些所见即所得的AB测试。在操作和访问方面也是如此。我们连接了很多渠道。运营成长中的同学来到我们的平台,可以直接测试不同的推送时机,不同的推送文案,不同的推送频率。你可以尝试你想到的一切。还有DataWind,它是一个BI工具,它提供的其实是可视化的拖拽式分析。在这个平台之前,写SQL的人很多,但是不会写SQL的人还是比较多的。我们通过拖放需要的数据,比如它的一些指标和维度,来创建一个数据集,直接使用。它还提供了一些更智能的能力,例如自动归因,帮助您找出哪些维度的变化导致了整个数据集以及数据仪表盘中的一些增长/减少。总之,这些能力是在帮助大家降低门槛。上线回顾:首发业务岗位的科学决策过程。LaunchReview是字节的传统。公司业务线的负责人会根据每个人的行为做出科学的决策。具体过程如下。每隔一周或者两周,我们部门就会召开这样的例会,大家会对一些算法迭代实验或者产品实验进行总结分析。中间会有部门负责人、业务方、同行等很多人过来听,大家提问互动。但最终还是要由部门的一号人物来做决定,决定能不能上线。有时实验是积极的,但未必一定会成功。如果有些指标是正的,但是一些比较重要的地方没有起色,甚至可能让整个系统变得更加复杂,但是收入增加的不够,就上不去,所以我们要考虑更好的计划。有时候你会发现是负数,你也可以访问,为什么你也可以访问?大家会判断,可能会损失一些时间,甚至影响一部分广告收入,但是用户体验变好了,或者对这个阶段的产品很重要。说不定这件事情能够落实,需要部门业务一号位的领导才能做到平衡。总结起来,这个过程体现了以下几点。复习文化:复习需要天天做,天天做,我做的这件事情有什么价值,什么是SWOT。保持信息透明:我要上网了,怎么办,为什么,5W1H到底是什么,大家要时刻保持信息透明。比如推荐系统有那么多工程师在改进,现在是一个非常黑箱的系统,但是对于部门的头号或者非常核心的负责人来说,他还是需要非常清楚一些关键的是如何实现的。它里面的东西工作。的。全局视角:其实通过这个机制可以保证大家每次上传一个新的东西的时候,都会想这个东西加到我现有的系统中之后,整个系统会是什么样子,可以帮助业务一号。1放眼全局,这样在加入新的改进后,才能做出更全局最优的决策。经验沉淀:通过这种比较开放的会议,鼓励大家参与,互相学习。或许抖音已经有所进步了。收益可以无限放大。数据驱动VS信仰判断:正面的可能不会列出,但负面的可能会列出。数据驱动并不是唯一的。数据驱动意味着你要在商业价值信念和数据驱动之间做出平衡和判断。就是辅助人们进行科学决策。数据驱动的ROI我们讲了如何建立数据驱动的文化,但是在降本增效的背景下,如果要实现数据驱动,它的ROI应该是多少?值得做吗?数据驱动的成本先说成本。首先是三件事:一是要在企业文化上进行数字化、智能化转型。这里我用的是智力的“智”,而不是数字的“字”。这是不同的。我们不能只有数据,还需要数据来真正驱动业务。如何将数据与业务相结合,辅助决策。二是要在研发全过程进行数字化、智能化转型。因为很多互联网公司、科技公司非常重要的流程就是做产品研发和业务研发。最后能不能在核心流程中进行数据驱动,而不是让大家在错误的方向上越走越远,这个也是很重要的。第三,要落实以上两点,需要构建数据驱动的基础设施。这里有两种方法。一种是自行建设,可以根据自己的实际情况进行,另一种是外部采购。帮助企业实现价值。一句话概括,你要让整个企业成为数字原生企业,这就是你付出的代价。当企业数字化智能化,意味着企业进化得更好,这本身就是一种收益。这里再分享一个小故事。我们之前有一个用户,后来他从A公司辞职,去创业,去了B公司,刚到B公司就购买了我们的产品,后来我们经常和他交流,为什么会想到用我们的产品这么快?他说,他们对工具还是很挑剔的,比如企业办公的Lark,产品设计的Figma,AB测试的DataTester。他解释说,除了好用之外,还可以间接帮助他们筹集资金。投资人对工具的挑剔印象深刻,这最终反映了团队的品位、能力和前景。数据驱动收益说完了,我们来看收益。数据驱动营收,一句话,“帮助业务团队低损耗小跑到正确的方向!”首先,它可以刺激创新并增加收入。只有每个人都有企业的主人翁意识,才能贡献出自己的想法,激活这个企业的发展,才会有更多的创新出现。其次,我们可以低成本的试错,也就是降低试错的成本,提高人的效率。比如需要两个版本才能通过AB测试。看起来成本会增加,其实不一定。可能你拍的那个版本根本没用,甚至带来了比较大的负面影响。这种损失更大。通过在非常小的范围内进行此类验证,我们可以降低成本并提高人员效率。与此对应的,可能会有一定的损失,而损失对应的好处就是你可以继续做出正确的决策,不需要做AB测试,但谁能保证你永远是对的呢?所以数据驱动器是有损耗的,但它的损耗是可以接受的必要成本。第三,数据驱动可以积累大家的经验,最终提升整个团队的决策力。我们刚才讲的LaunchReview,其实就是让整个团队共同做决策,最后通过数据驱动实现一个决策的平民化和公平化。最后,我们在整个研发过程中做的大部分事情,收益都是可以量化的,这样我们就可以知道哪些改进对业务更有帮助,最后可以授权给我们公司的管理团队,让每个人都能拥有更好的管理科学辅助。这就是我要谈的整个数据驱动的好处。嘉宾介绍了韩云飞火山机数据测试仪技术总监韩云飞火山机数据测试仪技术总监。负责火山引擎企业级实验平台团队,致力于打造业界最先进、易用的实验平台,将A/B测试变成驱动业务增长的新基础设施。从0到1,参与了字节跳动内部实验平台Libra的建设,服务于抖音、今日头条等500多个业务线;对外发布了火山引擎A/B测试DataTester等产品。
