干货 | 如何打造企业专属A/B平台?火山引擎DataTester开放平台技术揭秘

技术

picture.image

本文为火山引擎DataTester开放平台研发负责人的一场公开演讲整理。 内容 详细介绍了 作为国内A/B实验平台引领者的 DataTester「开放平台」能力的技术实现 ,以及如何通过「开放平台」使产品功能更加灵活化和定制化,以贴合企业在高速发展背景下的多元需求。

picture.image

文 | 海龙 来自字节跳动数据平台DataTester团队

「何为开放平台」?

关于这个问题,

我问了问时下很🔥的 ChatGPT,

他是这么回复我的:

picture.image

提炼了一下ChatGPT的关键词,基本每个标题都包含了: 赋能,生态,合作,协同,数字化...

百度百科对“开放平台”的解释是这样的,在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做 Open API, 提供开放 API 的平台本身就被称为开放平台。

通过开放平台,网站不仅能提供对 Web 网页的简单访问,还可以进行复杂的数据交互,将它们的 Web 网站转换为与操作系统等价的开发平台。 第三方开发者可以基于这些已经存在的、公开的 Web 网站而开发丰富多彩的应用。

到此为止,我觉得对于开放平台的解释就比较到位了,ChatGPT 侧重的是「道」,百度百科版的讲的是「术」,术与道相结合的去看,对开放平台的理解就比较全面了。

picture.image

开放平台对于企业与业务来说,做到的不仅是能力的开放、生态的开放, 与此同时还要能提供完善的业务解决方案,帮助企业提升效率。

与大规模应用SaaS平台的国外企业不同,中国的企业群体更加多元,从规模上,中小微企业和大型企业都有;从资历上,一部分是崛起不久的新秀,一部分是正在数字化转型道路上的老牌企业。因此中国的市场需求相比国外企业而言,要更加多样化、多元化。

无论在工业方面还是在软件方面,统一的标准会让很多中国的许多企业丧失灵活性和效率,而多样化意味着百花齐放,意味着弯道超车的可能性,但与此同时这也意味对于企业服务市场需求的碎片化。

如何解决企业的多元化需求?如何让企业以更低的成本用上更贴合的服务?开放平台不是所有问题的答案,但一定是很多问题的解法。

开放的 API 与工具,让企业能够系统地进行更灵活的配置、更方便的集成,甚至有时候无需开发人员介入就可以实现他们的目标。

仔细拆分的话,

开放平台能解决企业的以下问题:

1.整合资源: 通过开放平台,不同的企业和机构可以将各自的资源进行整合,形成一个更大的资源池,从而实现资源的共享和重复利用。

2.降低成本: 通过开放平台,企业可以减少开发和维护自己的服务和应用程序的成本,同时也可以减少运营成本。

3.提高效率: 开放平台能够提供标准化的服务和接口,从而加快应用程序的开发和部署速度,提高效率。

在这个背景下,火山引擎A/B测试 DataTester 推出了“开放平台”能力, 致力于将企业个性化需求的共性抽取出来,然后在共性的基础上满足个性化诉求, 通过成熟的产品化能力,大大降低企业服务的应用成本并提升用户使用体验,建立集成化的全家桶解决方案。

DataTester 的开放平台设立,能够吸引更多的开发者和创新者参与到平台的生态系统中,从而为平台提供更多的创新和新功能;企业也能通过开放平台与其他企业和机构建立更紧密的合作关系,共同推动行业的发展,实现合作共赢。

picture.image

A/B 测试不仅是做增长的利器,也是企业优化效率、增加决策精确度的有效工具。

我们希望打造出来的A/B测试平台并不仅仅局限为一个工具,而是能作为一个能力,可以嵌入到企业中与业务场景深度贴合;能增强企业的一部分核心功能和服务;能在每个企业最核心的场景上,去实现价值的最大化。

火山引擎A/B测试(DataTester)作为一个辅助用户增长的工具,在实际使用场景中,已经经常会遇到企业不满足于仅仅在我们的实验平台上去使用标准品的A/B测试能力, 他们经常还会有一些多样化的需求:

将A/B能力与客户自身系统打通,进行一定量的定制

将A/B能力集成到客户自身的网站上去,不需要登录火山引擎网站就可以开启实验、看报告

在以往为了应对这些场景,我们采用的方法是堆人力去帮客户来做定向开发,这样不但我们的人力成本 hold 不住,同时由于我们这边标准化缺失,产品策划和研发效率也被拉低。

而DataTester的开放平台就是来解决这些问题的。 我们提供了较高的平台化的定制能力,并且可以方便的将火山引擎DataTester的页面与应用集成到企业的网站中去,以满足企业多元化的需求。

目前也已经有逾百的外部企业,接入了火山引擎A/B测试的开放平台能力,有了更多的定制化产品的空间。

DataTester的开放平台在技术上是如何实现的呢?

/ 集成工作台 /

设计思路:

1.配置化能力

开放平台最朴素的思路是做配置化,DataTester能够根据客户的需要,以自身已有的能力为基础,去做一些差异化的配置。 比如说一些模块的显示/隐藏、默认选择项、文案等等的调整。

picture.image

最近,DataTester又新增了一键配置主题色的能力:

picture.image picture.image

但很明显,这种调整能解决最朴素的配置的问题,但是对于多样化的需求,无法很好的满足。 原因在于我们对于用户的输出,还是作为一个完整的整体给到对方,对方如果希望新增交互,比如与自身系统联动获取数据,去填充实验名、版本、指标等字段,并按照自己所特有的 UI 去进行交互,这样的需求仅仅通过配置化能力是不能达到的。

2.搭建能力

于是我们设计了表单搭建能力来应对这种场景。

我们完全将我们每个字段对应的视图组件进行了拆分,用户可以随意的打散、删除、配置,在我们接口必填项约束前提下进行随意的组装和调整。

用户还可以用我们的命令行工具下载组件代码模版,按照自己的需求去开发组件,与自身数据进行对接,然后通过命令行上传到我们的开放平台上,接入进我们的搭建表单中作为一个搭建单元,嵌入到我们的系统中来。搭建能力赋予了DataTester平台的可扩展性。

picture.image

用户进行高度的定制的目标,一定不会是仅仅在DataTester网站内部使用。既然已经与自身系统有所联动,这部分视图也必然是直接内嵌在自身系统中最为合适,于是引出了我们的嵌出能力。

3. 嵌出能力

DataTester设计了 完善的开放 SDK 和嵌出鉴权方案, 保证用户通过流程化的能力,能快捷地将我们的模块嵌入到自身的网站中, 同时保持了便利性和安全性。

picture.image

集成工作台可以通过完善的引导,进行一站式的定制、发布、嵌出的能力。

当前配置化覆盖范围包括编程实验创编、列表、报告页;搭建覆盖编程实验创编

支持全站主题色定制

通过微前端方式进行嵌出,每一次发布都会沉淀一份前端资源,保证在客户的使用场景下足够稳定,不会因为我们的发布调整导致嵌出的部分失效

前端提供开放 SDK 供客户嵌入资源,后端提供 OpenAPI SDK 供用户接入鉴权

集成工作台架构:

picture.image

/ OpenAPI /

在做产品设计时,我们希望能为DataTester提供一个统一的 OpenAPI 管理平台,解决以往的 OpenAPI 申请不灵活,审批链路长,无统一管理界面,无流量控制能力的缺点。

目前,DataTester已经搭建了一个 DataOpen 的站点,用来承载内外部的 OpenAPI 的管理、申请、流量控制、文档以及调试工作。

picture.image

整体的授权模式基于 OAuth2.0 的授权模式。

picture.image

OpenAPI 的录入都是使用 graphQL 的语法,所以我们的文档界面完全是靠自动化解析 graphQL 语法而生成的, 具有非常规范的格式以及详细的介绍。

picture.image

联调界面支持自动获取 access token,在前端页面上进行动态调试。用户只需要输入 query 参数或者 body 即可发送请求看到对应的响应结果。

picture.image

当然,仅仅是 OpenAPI 的管理、流量控制、申请授权、文档和调试的能力已经是比较完善的 OpenAPI 平台了。 但这还不够,DataTester后续还会增加API 编排的能力,设置产品化的界面。

picture.image

/ 物料生态 /

1. 开放组件

开放组件是将 DataTester 中的模块以组件的形式拆分抽象的产物,用户也可以通过这些开放组件搭建自己特有的 A/B 测试平台应用。

DataTester 之所以提供开放组件而非完全让用户使用 OpenApi 来集成,是由A/B测试业务本身的复杂度决定的。如果客户完全使用 OpenApi 且自行开发 UI,很难保证产品能力的完整性。

举个例子,如果用户使用 OpenApi,加自行开发指标管理/指标创建组件,那用户势必要理解我们的 DSL字段。DSL(Domain Specific Language) 简单来讲就是一个 json 格式的文本,来灵活的定义复杂的查询需求,是 analysebase 的查询语法。

如果用户去自行去学习理解 DSL,并为之开发组件,想开发出一个能力完整且没有 bug 的 UI,那会耗费大量的时间,时间可能要按月算。如果接入我们的开放组件,一天就能调试好,这其中节省的时间,就是开放组件的价值所在。

另一个例子就是流量计算器,用户几乎不可能自己开发,但如果用 DataTester 的流量组件接入,仅需半天时间就可完成。

picture.image

2.物料中心

DataTester 的团队前端沉淀了很多基础组件,业务组件,业务模板。 业务之间也经常有组件或者模板复用的需求,物料中心就是管理和预览组件的平台。

用户可以通过 DataTester 开放平台的工具方便地上传物料,目前搭建编辑器已经对接物料中心,既可以支持我们自身组件的发布,又可以支持合作方自行开发组件并与我们平台进行集成。

物料中心目前可以完成:

组件的 上传、下载

实时 Demo 预览、组件文档说明

版本管理

支持同步到 npm 等前端通用包管理平台

picture.image

picture.image

对于火山引擎DataTester而言,当前的开放平台能力在面对企业的个性化需求时,有点类似于 “解方程” ——企业客户根据各自的业务需求“出题”,我们的团队来负责给他们“解题”并固化为产品方案。 对比市面上常规的A/B实验平台产品和过往的DataTester而言,这无疑是一大进步,毕竟以前很多时候我们都不提供“解题”的能力。

但这种程度依然还不够,DataTester的开放平台也正在快速迭代的进程中。我们希望把我们的工具、能力进一步迭代,寻找“求根公式”,能够让大多数情况下不需要我们自己下场去解题,而是让企业通过开放平台,就可以得到他们所需的答案。

我们的愿景是打造业界最易用、最科学、最高效的A/B实验平台,我们也一直会在这条道路上披荆斩棘、快步前行。

picture.image

产品介绍

火山引擎 A/B 测试,限时免费,立即申请!

A/B 测试,摆脱猜测,用科学的实验衡量决策收益,打造更好的产品,让业务的每一步都通往增长。火山引擎首度发布增长助推「火种计划」,火山引擎 A/B 测试作为「火种计划」产品之一,将为您免费提供 2 亿事件量和 5 万 MAU,以及高达 12 个月的使用权。后台回复数字“8”了解产品

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

26
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论