随着爱奇艺会员破亿,会员服务从小而快的单一业务系统升级为了按领域划分的微服务模式,满足了业务的高速发展和服务的高流量调用,但是微服务的拆分,系统间的交互越来越多,在需求开发时,协作成本随之增加,问题总结如下:

  • 历史包袱过重,接口管理工具不统一:WIKI、YAPI、Swagger
  • 接口维护成本高,代码和文档需要同时更新
  • 接口联调和测试成本高,由于环境、链路导致的问题,排查难度大,业务复杂的需求可能会延期

基于以上问题,会员团队需要一个平台把接口管控起来,提升研发和测试的效率。

01

   方案调研

比较了现有平台(见下图),都不能满足会员的需求,但是Atlas是公司内部开发的平台,已经有接口管理的基础能力,可以共同开发,在平台上扩展会员需要的功能:代码即文档、一键链路排障、接口规范统一管控、签名和实体自动生成,不仅可以解决会员的痛点,还可以为公司其他部门赋能,避免了重复造轮子。

python 爱奇艺会员 爱奇艺会员接口_依赖关系

Atlas 是一个基于接口管理的业务知识管理平台,提供了统一的接口管控入口、接口规范(OpenAPI3.0)、接口调试和 mock、链路定位、关系图谱等能力,有效地解决了接口文档管理、分享和协作相关的问题。

02

   项目目标

  • 简化开发

Atlas 让前后端数据交互更简单,让团队开发协作更容易。前端同学无需依赖后端开发进度,直接借助 mock 功能即可实现联调。

智能文档

实现代码即文档、文档即代码,文档自动同步代码改动,让文档维护更智能。

高效协作

支持强大的联调、链路问题定位、代码自动生成等功能,前后端协作更高效。支持自动化的依赖分析,各关联方通过订阅方式,可以及时、准确地把握接口变更,通过图谱可以全面掌握影响范围。

03

   解决方案

  01 一键验证  

基于全链路监控系统打通了环境平台内部的链路,实现了在开发和测试阶段可以一键定位环境和调用链路问题的能力,极大减少了研发和测试的排查时间。一键验证功能目前已覆盖了异步任务、RocketMQ 和 API 接口的问题排查。通过下图所示的排查链路,可快速定位异常服务和问题原因。

python 爱奇艺会员 爱奇艺会员接口_开发语言_02

架构设计如下:

python 爱奇艺会员 爱奇艺会员接口_python 爱奇艺会员_03

  02 知识图谱  

系统依赖日趋复杂,研发需要了解自己所开发接口的依赖与被依赖关系,才能保证版本迭代时上下游不受影响。测试需要了解自己所测接口的上下游依赖关系,才能保证 case 覆盖率。为了让这种依赖关系展示的全面、具体,我们使用全链路监控系统自动获取了接口级、字段级的依赖关系,并借助 G6 以图谱的方式展示在 Atlas 上。

python 爱奇艺会员 爱奇艺会员接口_开发语言_04

  03 查询模式  

  • 一键搜索

接口文档、数据库设计、错误码及 UML 业务梳理,都可以在平台首页一键搜索获取,解决了研发按照个人习惯,无固定地址、无固定格式的管理方式,提升了信息获取的效率和准确性。

python 爱奇艺会员 爱奇艺会员接口_java_05

  • 历史追溯+版本对比

接口迭代频繁或是人员更迭时,研发经常需要梳理接口变更的历史。Atlas 提供了同一接口任意分支、任意版本之间的对比能力,让变更和背景一目了然。

python 爱奇艺会员 爱奇艺会员接口_链路_06

  • 订阅及消息推送

业务依赖的接口都可以自行订阅,一旦接口有变更,可以实时获取变更通知,便于及时评估是否对业务有影响。

python 爱奇艺会员 爱奇艺会员接口_依赖关系_07

  04 强化调试  

在使用 postMan 等工具调试时,经常会遇到签名问题阻塞调试,Atlas平台对签名功能进行了拓展,支持以下两种方式:

  1. 签名算法模板,一键下拉选择
  2. 签名算法自定义,粘贴代码片段,动态解析计算

python 爱奇艺会员 爱奇艺会员接口_python 爱奇艺会员_08

动态代码执行实现流程如下:      

python 爱奇艺会员 爱奇艺会员接口_链路_09

04

   系统价值

会员研发和测试已经完全使用该平台,Q3 累计 75 个需求接入,提效显著:

研发提效:平均每个需求可减少 2 个小时的时间,环境链路问题和自测问题彻底解决,并降低了接口维护成本

测试提效:排查链路问题提效 93%(15分钟降1分钟),排查环境问题提效 50%(4小时降到2小时)

05

   后续规划

持续收集日常开发和测试的痛点,开发更多的接口治理工具,助力公司的整体效能提升。下一阶段的功能规划如下:

  • 提炼调试功能
    将调试功能从接口管理中提升至首页,让用户可以不依赖接口信息,直接使用调试功能,并对接一键验证等功能。
  • 代码自动化
    通过 Atlas 提供服务接口的标准 json 数据,以规范数据做为桥梁连接前后端,实现前端代码的自动生成
  • UML 图编辑
    支持用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图在线创建和修改,提升协作的效率(目前一期基本画图功能已上线)

参考阅读:

  • 突破 etcd 限制!字节自研 K8s 存储 KubeBrain
  • 周末小技 | 开发一个Feeds流系统——写扩散模式
  • BIGO骨干网设计与实现(二)
  • Paxos扩展: 偏序rnd = Paxos + 2PC
  • vivo大数据日志采集Agent设计实践