如何打造企业专属 A/B 平台?火山引擎 DataTester 开放平台技术揭秘
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
企业为什么需要开放平台
开放平台对于企业与业务来说,做到的不仅是能力的开放、生态的开放,与此同时还要能提供完善的业务解决方案,帮助企业提升效率。
与大规模应用 SaaS 平台的国外企业不同,中国的企业群体更加多元,从规模上,中小微企业和大型企业都有;从资历上,一部分是崛起不久的新秀,一部分是正在数字化转型道路上的老牌企业。因此中国的市场需求相比国外企业而言,要更加多样化、多元化。
无论在工业方面还是在软件方面,统一的标准会让很多中国的许多企业丧失灵活性和效率,而多样化意味着百花齐放,意味着弯道超车的可能性,但与此同时这也意味对于企业服务市场需求的碎片化。
如何解决企业的多元化需求?如何让企业以更低的成本用上更贴合的服务?开放平台不是所有问题的答案,但一定是很多问题的解法。开放的 API 与工具,让企业能够系统地进行更灵活的配置、更方便的集成,甚至有时候无需开发人员介入就可以实现他们的目标。
仔细拆分的话,开放平台能解决企业的以下问题:
整合资源:通过开放平台,不同的企业和机构可以将各自的资源进行整合,形成一个更大的资源池,从而实现资源的共享和重复利用。
降低成本:通过开放平台,企业可以减少开发和维护自己的服务和应用程序的成本,同时也可以减少运营成本。
提高效率:开放平台能够提供标准化的服务和接口,从而加快应用程序的开发和部署速度,提高效率。
在这个背景下,火山引擎 A/B 测试 DataTester 推出了“开放平台”能力,致力于将企业个性化需求的共性抽取出来,然后在共性的基础上满足个性化诉求,通过成熟的产品化能力,大大降低企业服务的应用成本并提升用户使用体验,建立集成化的全家桶解决方案。
DataTester 的开放平台设立,能够吸引更多的开发者和创新者参与到平台的生态系统中,从而为平台提供更多的创新和新功能;企业也能通过开放平台与其他企业和机构建立更紧密的合作关系,共同推动行业的发展,实现合作共赢。
火山引擎 DataTester 如何做开放平台
A/B 测试不仅是做增长的利器,也是企业优化效率、增加决策精确度的有效工具。
我们希望打造出来的 A/B 测试平台并不仅仅局限为一个工具,而是能作为一个能力,可以嵌入到企业中与业务场景深度贴合;能增强企业的一部分核心功能和服务;能在每个企业最核心的场景上,去实现价值的最大化。
火山引擎 A/B 测试(DataTester)作为一个辅助用户增长的工具,在实际使用场景中,已经经常会遇到企业不满足于仅仅在我们的实验平台上去使用标准品的 A/B 测试能力,他们经常还会有一些多样化的需求:
将 A/B 能力与客户自身系统打通,进行一定量的定制
将 A/B 能力集成到客户自身的网站上去,不需要登录火山引擎网站就可以开启实验、看报告
在以往为了应对这些场景,我们采用的方法是堆人力去帮客户来做定向开发,这样不但我们的人力成本 hold 不住,同时由于我们这边标准化缺失,产品策划和研发效率也被拉低。
而 DataTester 的开放平台就是来解决这些问题的。我们提供了较高的平台化的定制能力,并且可以方便的将火山引擎 DataTester 的页面与应用集成到企业的网站中去,以满足企业多元化的需求。目前也已经有逾百的外部企业,接入了火山引擎 A/B 测试的开放平台能力,有了更多的定制化产品的空间。
DataTester 的开放平台在技术上是如何实现的呢?
集成工作台
设计思路
配置化能力
开放平台最朴素的思路是做配置化,DataTester 能够根据客户的需要,以自身已有的能力为基础,去做一些差异化的配置。比如说一些模块的显示/隐藏、默认选择项、文案等等的调整。
最近,DataTester 又新增了一键配置主题色的能力:
但很明显,这种调整能解决最朴素的配置的问题,但是对于多样化的需求,无法很好的满足。原因在于我们对于用户的输出,还是作为一个完整的整体给到对方,对方如果希望新增交互,比如与自身系统联动获取数据,去填充实验名、版本、指标等字段,并按照自己所特有的 UI 去进行交互,这样的需求仅仅通过配置化能力是不能达到的。
搭建能力
于是我们设计了表单搭建能力来应对这种场景。
我们完全将我们每个字段对应的视图组件进行了拆分,用户可以随意的打散、删除、配置,在我们接口必填项约束前提下进行随意的组装和调整。
用户还可以用我们的命令行工具下载组件代码模版,按照自己的需求去开发组件,与自身数据进行对接,然后通过命令行上传到我们的开放平台上,接入进我们的搭建表单中作为一个搭建单元,嵌入到我们的系统中来。搭建能力赋予了 DataTester 平台的可扩展性。
用户进行高度的定制的目标,一定不会是仅仅在 DataTester 网站内部使用。既然已经与自身系统有所联动,这部分视图也必然是直接内嵌在自身系统中最为合适,于是引出了我们的嵌出能力。
嵌出能力
DataTester 设计了完善的开放 SDK 和嵌出鉴权方案,保证用户通过流程化的能力,能快捷地将我们的模块嵌入到自身的网站中,同时保持了便利性和安全性。
集成工作台可以通过完善的引导,进行一站式的定制、发布、嵌出的能力。
当前配置化覆盖范围包括编程实验创编、列表、报告页;搭建覆盖编程实验创编
支持全站主题色定制
通过微前端方式进行嵌出,每一次发布都会沉淀一份前端资源,保证在客户的使用场景下足够稳定,不会因为我们的发布调整导致嵌出的部分失效
前端提供开放 SDK 供客户嵌入资源,后端提供 OpenAPI SDK 供用户接入鉴权
集成工作台架构
OpenAPI
在做产品设计时,我们希望能为 DataTester 提供一个统一的 OpenAPI 管理平台,解决以往的 OpenAPI 申请不灵活,审批链路长,无统一管理界面,无流量控制能力的缺点。
目前,DataTester 已经搭建了一个 DataOpen 的站点,用来承载内外部的 OpenAPI 的管理、申请、流量控制、文档以及调试工作。
整体的授权模式基于 OAuth2.0 的授权模式
OpenAPI 的录入都是使用 graphQL 的语法,所以我们的文档界面完全是靠自动化解析 graphQL 语法而生成的,具有非常规范的格式以及详细的介绍。
联调界面支持自动获取 access token,在前端页面上进行动态调试。用户只需要输入 query 参数或者 body 即可发送请求看到对应的响应结果。
当然,仅仅是 OpenAPI 的管理、流量控制、申请授权、文档和调试的能力已经是比较完善的 OpenAPI 平台了。但这还不够,DataTester 后续还会增加 API 编排的能力,设置产品化的界面。
物料生态
开放组件
开放组件是将 DataTester 中的模块以组件的形式拆分抽象的产物,用户也可以通过这些开放组件搭建自己特有的 A/B 测试平台应用。
DataTester 之所以提供开放组件而非完全让用户使用 OpenApi 来集成,是由 A/B 测试业务本身的复杂度决定的。如果客户完全使用 OpenApi 且自行开发 UI,很难保证产品能力的完整性。
举个例子,如果用户使用 OpenApi,加自行开发指标管理/指标创建组件,那用户势必要理解我们的 DSL 字段。DSL(Domain Specific Language) 简单来讲就是一个 json 格式的文本,来灵活的定义复杂的查询需求,是 analysebase 的查询语法
。
如果用户去自行去学习理解 DSL,并为之开发组件,想开发出一个能力完整且没有 bug 的 UI,那会耗费大量的时间,时间可能要按月算。如果接入我们的开放组件,一天就能调试好,这其中节省的时间,就是开放组件的价值所在。
另一个例子就是流量计算器,用户几乎不可能自己开发,但如果用 DataTester 的流量组件接入,仅需半天时间就可完成。
物料中心
DataTester 的团队前端沉淀了很多基础组件,业务组件,业务模板。业务之间也经常有组件或者模板复用的需求,物料中心就是管理和预览组件的平台。
用户可以通过 DataTester 开放平台的工具方便地上传物料,目前搭建编辑器已经对接物料中心,既可以支持我们自身组件的发布,又可以支持合作方自行开发组件并与我们平台进行集成。
物料中心目前可以完成:
组件的 上传、下载
实时 Demo 预览、组件文档说明
版本管理
支持同步到 npm 等前端通用包管理平台
结语
对于火山引擎 DataTester 而言,当前的开放平台能力在面对企业的个性化需求时,有点类似于“解方程”——企业客户根据各自的业务需求“出题”,我们的团队来负责给他们“解题”并固化为产品方案。对比市面上常规的 A/B 实验平台产品和过往的 DataTester 而言,这无疑是一大进步,毕竟以前很多时候我们都不提供“解题”的能力。
但这种程度依然还不够,DataTester 的开放平台也正在快速迭代的进程中。我们希望把我们的工具、能力进一步迭代,寻找“求根公式”,能够让大多数情况下不需要我们自己下场去解题,而是让企业通过开放平台,就可以得到他们所需的答案。
我们的愿景是打造业界最易用、最科学、最高效的 A/B 实验平台,我们也一直会在这条道路上披荆斩棘、快步前行。
点击跳转 火山引擎A/B测试DataTester 了解更多
版权声明: 本文为 InfoQ 作者【字节跳动数据平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/f0aa78aad8415e8116987cb70】。文章转载请联系作者。
评论