# 介绍
在前端和客户端研发和测试过程中,环境问题一直困扰着我们,缺乏数据或数据管理不善都会导致研发整体效率低下。
在面对这些问题的时候,我们认为核心点主要有三方面,数据源问题、场景问题、生命周期问题。拥有稳定的、有可迭代能力的数据源是项目研发的关键,数据源实际上就是一个个服务端接口,而大多接口都是有种状态的,此时我们还需要解决场景管理的问题。另外,随着研发流程进行我们通常会进入日常联调、集成测试、灰度发布等周期,所以数据的提供应该始终是一个持续过程。
# 数据源问题
研发期数据缺失,研发同学与服务端根据产品需求,或者已有服务,约定业务交互字段。此时研发同学会根据业务字段创建可以用来 Mock
的数据,数据源需要满足如下几个原则:
- 标准化:由于终端几乎都基于同一层面的数据协议,各业务在数据交互上的通用性足以满足统一的要求,这里杜绝的个性化引入数据源而增加学习成本和 backup 成本
- 非侵入:数据源注入不侵入业务代码本身,也就是说业务逻辑的代码不会感知数据来自哪里
- 去中心:无中心服务依赖,工程本地即有数据备份,任何人可离线开发
# 场景问题
在面向复杂业务时,最常讲到的就是场景问题,除富交互编辑器一类的业务外,展示型业务的复杂往往意味着场景多,场景组合情况多,业务流转过程中分支多。组合场景的情况很容易遗漏关键场景,而且不好管理。一旦多人交叉协同时,前后交互字段有调整导致信息流反复,追溯成本变高。
- 可管理:场景数据需要可维护和管理,支持场景数据的语义化和基本的增删改
- 版本化:场景数据需要与业务逻辑一样,具备可版本化能力,场景数据以明文形式在当前工程中集成
# 生命周期问题
研发期的数据相对好解决,但从研发全环节覆盖的视角看待这个问题时,需要考虑后续
的问题才能从整体上解决。
- 可迭代:场景数据可以随项目通过 Git Flow 管理,并作为交付必要部分
- 一致性:数据源应该由上一个周期延续,并在系统集成测试时对接真实数据源
- 文档化:一致性使得接口文档维护不再散乱、滞后,接口文档自动生成并保持迭代能力是最优解
- 可测试:无论是进行交付前的函数单元测试、UI 单元测试,还是测试期的系统集成测试都需要依赖可组合数据源,集成测试阶段稳定性要求高,需要数据源服务对外围服务做屏蔽
# 其它问题
- 录入成本:数据源人工初次录入成本较高,尤其是在联调期应该支持由请求快照自动录入
- 问题排查:生产环境应该支持切换数据源,支持代理和快照记录
根据上面的问题分析和研发经验沉淀下来的方法律,Macaca 团队设计并实现面向研发全周期的数据环境方案 - Macaca DataHub,具备可持续和去中心化等特点。
Macaca DataHub 是支持研发全周期的数据环境解决方案