火山引擎数据飞轮:实验平台微服务架构是如何炼成的?

在数智化浪潮的推动下,不断迭代升级的数据产品正在为企业转型提供更强助力。

以业务决策场景为例,过往“拍脑袋”的经验式决策正在被A/B实验所替代。在A/B实验工具的帮助下,企业可以通过不同策略下的效果数据选择更优的策略方案。这也是火山引擎数据飞轮模式所提倡的——即用数据消费实现决策环节的科学与智能。

“数据飞轮”是火山引擎基于字节跳动数据驱动的实践经验,所提炼的企业数智化升级新模式。它倡导企业扩大数据消费,将数据消费贯穿到企业的各个业务场景中,从而实现数据流与业务流的充分融合,最终实现业务价值的提升。

在上文提到的业务决策场景,火山引擎提供了A/B测试DataTester产品,该产品不仅服务了字节内部500+业务,同时也服务了美的、得到、博西家电、凯叔讲故事等上百家外部企业。其在适应内外服务场景,满足业务复杂需求的过程中,已演化了一站式实验管理与场景化特型实验等全方位实验能力。

为了更好地服务内外部企业,DataTester从内外融合、微服务架构调整两方面进行了产品结构的优化。在内外融合实践上,团队以“基于外部版本补齐内部版本能力;采用复用方式确保迭代正常进行”为融合原则,对产品、代码以及技术团队等方面展开了全方位融合。

以研发团队和代码仓库的融合为例,原本内外纵向分离的团队转变为按照模块的横向划分,内外平台的相同模块合并为一个小组,进行后续开发;在代码仓库方面,内外的单体服务则整合为现有的一套微服务群的代码仓库。

迭代节奏异步的内外平台融合后,架构升级挑战随之而来。于是,沿着“划分子域、梳理子域间依赖、切换语言、实验管理子域先行探索,兼容多数据源、明确上线方案”的链路,DataTester展开转向微服务架构的实践。

首先,在DDD的指导下进行子域划分,大体按功能划分出实验管理、实验指标、配置中心等8个子域。通过明确子域间运行依赖关系,进而明确可并行的工作,缩短了项目周期。

在语言切换上,团队决定将服务语言从Python向Golang切换。此外还划分出BaseExperiment、ExperimentPlugin 和 ExperimentExtension 三个模块,进行实验子域先行探索和管理。在内外融合和拥抱微服务架构的重构链路下,DataTester团队明确了“对外部版本采取整体替换上线;对内部版采取分模块替换上线”的上线方案。

在微服务架构调整后,使用DataTester的企业能更好进行科学决策,实现数据飞轮驱动下的降本增效。

目前,数据飞轮已在互联网、金融、消费、汽车等多个行业历经实践,它为企业带来一种数据赋能业务的新视角,加速企业数智化转型。