QCon 2022·上海站 | 学习笔记9: 关于 API 文档驱动研发模式的探索与实践

简介: QCon 2022·上海站 | 学习笔记9: 关于 API 文档驱动研发模式的探索与实践

关于 API 文档驱动研发模式的探索与实践

陈子煜

得物商家前端负责人

自我介绍

  • 2015毕业于Rutgers University
  • 曾就职 Epic、字节跳动、蚂蚁集团
  • 得物商家前端负责人, Mooncake平台项目PM

迭代中的效能瓶颈分析

前端迭代流程

沟通成本: 信息互换、变更触达

  • 需求确认、技术方案设计需要反复沟通确认
  • 研发过程中,方案的变更需要及时沟通

依赖: 数据依赖

  • 前端应用数据驱动,据”来渲染页面依赖服务端返回的“数
  • 测试过程中依赖“造数工具”复现场景进行回归

流程痛点

前端位于链路的最上游,因此需要付出最多的协作成本

  • 数据依赖服务端,在所有下游服务开发完成后,才能获取到数据
  • 开发过程中,任意下游服务发生变动,都有可能影响到前端应用
  • 联调过程中严重依赖服务端、测试造数来进行场景的调试
  • 出现问题,测试永远先从前端应用开始排查
  • ......

文档驱动流程相关介绍

API Mandate

能不能造个轮子解决协作问题?如果可以,基于什么来造?

Jeff Bezos’ API mandate

  1. Data and Capabilities must be exposed through APIs
  2. Team Communications must be through APIs
  3. There can be no side channels/shortcuts
  4. Technology choice is secondary
  5. APIs must be externalizable

API文档驱动

基于API文档在Mooncake平台完成协同,各职能团队独立完成工作

  • 生产端: 通过idea插件、cli等工具快速生成API文档
  • 消费端: 基于API文档完成文档驱动研发流程
  • 生态: 向内部其他平台、工具提供接口文档信息

API文档信息

基于文档完成协作,需要解决哪些问题?

  • 信息互换
  • 变更触达
  • 数据依赖

API文档信息 为什么写

  • 该接口本次迭代相关的如PRD链接等 需求信息
  • 从研发协同平台同步和该需求相关的 研发人员信息,接口发生变更时能够 及时触达相关人

API文档信息 写什么

接口的基础信息字段,包含但不限于:

  • 出入参数
  • 字段备注
  • 文档备注
  • 文档评论
  • ......

以迭代维度记录接口的历史 版本信息,包括但不限于:

  • 变更原因
  • 变更时间
  • 变更人
  • ......

API文档信息 写什么

支持对历史版本diff,快速定位到变更的 字段,主要应用于前后端信息交换的场景


API文档信息 要怎么用

  • 基于单测用例即文档的理念,让用例当作文档的一部分。每一条用例即该接口的一个使用场景
  • 平台同时也支持用例的执行、结果查看等

用例详情描述了该场景的具体信息, 包含但不限于:

  • 用例负责人信息
  • 用例的断言信息
  • 接口的上下游调用链路信息
  • ......

文档驱动下前端的研发流程

前端构成

最终产物 = 前端交互&渲染逻辑(API返回数据)

UI = render(data)


  • 前端研发流程
  • 文档生态 – API Mock
  • 文档生态 – API Mock 数据Mock
  • 文档生态 – API Mock Mock场景
  • 前端如何文档驱动
  • 构建mock场景完成自测
  • Mock数据的生产依然依赖于服务端接口定义
  • 防腐层(ACL)
  • 前端研发流程变化

落地成果

  • 不止于前端 – 文档生产 基于IDEA插件快速上传接口
  • 不止于前端 – 服务端文档驱动 Mooncake文档代替飞书文档
  • 不止于前端 – 服务端文档驱动流程 提供Dubbo/GRPC Mock能力,解决服务端跨团队协作效率问题
  • 不止于前端 – 服务端文档驱动流程 服务端、测试协同完成的类TDD流程
  • 不止于前端 – 流程融合

后续规划

houxu.png

目录
相关文章
|
20天前
|
敏捷开发 测试技术 API
云效产品使用常见问题之代码仓库不支持API文档如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
2月前
|
XML JSON 安全
借助API接口实现自营商城上货采集,无货源模式采集商品
在无货源模式的自营商城中,通过API接口实现商品采集是一个高效且灵活的方式。这种方式允许商家直接从供应商或其他电商平台的API接口中获取商品信息,然后将这些信息导入到自己的商城中,无需自己拥有实际的库存。
|
2天前
|
缓存 负载均衡 API
微服务架构下的API网关性能优化实践
【5月更文挑战第10天】在微服务架构中,API网关作为前端和后端服务之间的关键枢纽,其性能直接影响到整个系统的响应速度和稳定性。本文将探讨在高并发场景下,如何通过缓存策略、负载均衡、异步处理等技术手段对API网关进行性能优化,以确保用户体验和服务的可靠性。
|
5天前
|
存储 缓存 JavaScript
深入理解RESTful API设计原则与实践
【5月更文挑战第7天】在现代Web服务开发中,表述性状态传递(REST)是一种广泛采用的架构风格,用于构建可扩展的网络应用程序接口(APIs)。本文将探讨RESTful API的核心设计原则,并通过具体实例展示如何实现一个符合REST约束的后端服务。我们将讨论资源的识别、客户端-服务器通信模式、无状态性、以及统一接口的重要性,并探索如何使用当前的流行技术栈来实现这些概念。
|
5天前
|
测试技术 API 开发工具
📑教你如何编写一份 API 文档
API 文档是开发者理解和使用API的关键,它提供详细的说明、代码示例和调用过程,帮助创建无缝集成。好的API文档能提升开发人员体验,减少上手时间和维护成本,同时促进产品迭代。API有面向团队、合作伙伴和最终用户三种类型。编写文档时要考虑受众,提供清晰的概述、教程、认证信息、端点定义、状态码和错误码示例。维护更新与API同步的文档至关重要,遵循通俗语言、参考文档、示例和专人负责等最佳实践,确保全面性。GitHub、Twilio和Dropbox的API文档是良好示例。
|
5天前
|
JSON API 数据格式
淘宝商品评论数据获取:从API调用到应用实践
在电商的世界里,用户评论是洞察商品质量的一扇窗。淘宝,作为中国最大的在线购物平台,其海量的商品评论数据尤为宝贵。本文将带您走进淘宝商品评论数据的获取之旅,从API调用的基础知识到实际应用的代码示例,一探究竟。
|
16天前
|
前端开发 Java 测试技术
IDEA 版 API 接口神器来了,一键生成文档,贼香!
IDEA 版 API 接口神器来了,一键生成文档,贼香!
46 0
|
23天前
|
消息中间件 缓存 算法
构建高效的后端API:优化方法与实践
随着互联网技术的迅速发展,构建高效的后端API已成为现代软件开发中的重要挑战。本文将探讨一些优化方法与实践,以帮助开发人员提高后端API的性能和可靠性。我们将讨论如何通过缓存、异步处理、数据库优化以及代码优化等方式来提升后端API的响应速度和吞吐量,从而为用户提供更好的体验。
|
1月前
|
XML API 数据格式
【Qt 学习笔记】QWidget的enable属性 | API的介绍
【Qt 学习笔记】QWidget的enable属性 | API的介绍
28 0