面向接口开发的前后端跨团队合作方案

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
简介: 大中型产品研发中,由于参与人员过多的原因,手机应用程序、后端服务研发通常会拆分开,由不同的团队负责。这即促进了专业领域的聚焦,又减少了团队管理与沟通的复杂度。本文旨在提供面向接口开发的前后端跨团队合作方案,从管理和技术两个角度,尝试构建有序的合作模式。

1.问题描述

1.1 背景

大中型产品研发中,由于参与人员过多的原因,手机应用程序、后端服务研发通常会拆分开,由不同的团队负责。这即促进了专业领域的聚焦,又减少了团队管理与沟通的复杂度。

1.2 现象

好现象

  • 内部沟通效率得到提升:手机应用程序、后端服务研发团队内部讨论、传递的信息都是和绝大数人有关的信息;沟通网络效应造成沟通负担得到遏制。
  • 大部分人聚焦内部,少数人做边界沟通,缓解沟通能力的要求。
  • 各自内部迭代速度加速。

坏现象

  • 组织墙阻隔了团队间集体感。
  • 由于缺乏跨组织交流,对合作团队工作认同感降低。
  • 前后端联调滞后,导致项目中后期问题激增,团队氛围恶化,项目延期。

1.3 影响

  • 产品发布节奏放缓。
  • 产品研发成本增加。
  • 技术方案倾向于团队折中、妥协,而非基于产品发展。

2.主因分析

核心原因在沟通阻力增加和利益不一致。

原因 1:沟通阻力增加

  • 术业有专攻,且缺少天天耳濡目染,对跨组织的工作越来越不理解。
  • 因物理和心理两个维度上距离增加,导致小问题得不到及时暴露和解决。如接口的定义、参数的设计、业务逻辑的真正讨论,被延期到集成阶段。
  • 工作排期聚焦内部,对于彼此协调、依赖的事项关注不足。

原因 2:利益不一致

  • 独立 KPI 考核
  • 独立研发计划
  • 前端应用面临海量客户的压力,后端面临多个前端应用需求的压力

3.项目治理方案

  • 建立持续交付的工作模式,以持续交付用户价值为共同目标。
  • 建立跨组织的产品级路线图。
  • 建立以产品经理和系统架构师为核心的跨组织领导体系,拥有决策权和评价权。
  • 后端服务团队的接口人以虚拟角色形式,参与到前端团队的研发管理,包括日会、技术会。
  • 建立面向接口的开发模式。
  • 定期组织跨组织的团队建设活动。

4.实施方案

4.1 组建阶段

  • 明确授权产品经理、产品级架构师
  • 统一研发基础设施,包括接口设计与发布流程
  • 统一沟通工具,制定沟通计划
  • 统一迭代节奏

4.2 实施阶段

  • 保持后端团队代表的有效参与前端团队,需产品经理、架构师监督。
  • 保持按节奏持续发布至测试环境,包括前端、后端,让问题在有限时间内得到暴露和解决

4.3 接口开发技术

方案一:基于 Swagger

基于接口设计、描述框架 Swaggerhttps://swagger.io/),构建基于接口的研发流程。

  • 后端服务即 API 文档,前端团队清晰了解接口能力,利于持续集成。
  • 后端持续发布接口能力,简化 API 文档维护成本。
  • 需要前后端团队遵循开发流程,提高项目的整体效率,而非单次沟通效率。

Swagger - Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset. Find out how Swagger can help you design and document your APIs at scale.
by https://swagger.io/

(1)接口设计阶段

针对业务需求清晰的接口,即通过规划的接口,启动基于Swagger的接口设计。

  • 侧重基于真实服务代码描述接口设计
  • 不做功能的有效实现
  • 将设计通过的接口,发布到测试环境,供前端团队查阅和开发联调

接口设计规范:OpenAPI Specification

https://swagger.io/resources/open-api/

接口设计工具:Swagger Editor

Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. The Swagger Editor is great for quickly getting started with the OpenAPI (formerly known as the Swagger Specification) specification, with support for Swagger 2.0 and OpenAPI 3.0.

https://editor.swagger.io/

  • 使用Yaml语言, 定义好API接口
  • 点击 generate server code, 选择需要的语言, 即可下载自动生成的相关接口的初始化项目
  • 点击 generate client code, 选择需要的语言, 即可以下载自动生成调用这个接口的客户端代码

接口定义查看工具:Swagger UI

Swagger UI 可以将项目接口自动生产具有交互的html页面, 是一个前端页面的自动生成项目. Swagger UI的 demo见: swagger ui demo

(2)接口实现阶段

按节奏逐渐实现接口的能力。

  • 对于已实现的能力,要清晰描述能力
  • 对于在在研的能力,要描述清晰状态

后端服务工程引入swagger的依赖

<dependency> 
  <groupId>io.springfox</groupId
  <artifactId>springfox-swagger2</artifactId
  <version>2.7.0</version> 
</dependency> 
<dependency> 
  <groupId>io.springfox</groupId
  <artifactId>springfox-swagger-ui</artifactId
  <version>2.7.0</version> 
</dependency>

生成API的server stub和client SDK

Swagger Codegen can simplify your build process by generating server stubs and client SDKs for any API, defined with the OpenAPI (formerly known as Swagger) specification, so your team can focus better on your API’s implementation and adoption.

(3)接口设计变更

后端人员无需关注Swagger描述文件和接口文档,有需求变更导致接口变化,直接写代码就好了。把调用层的代码做个修改,然后生成新的描述文件和接口文档后,给到前端即可。

方案二:基于阿里云 API 网关

https://www.aliyun.com/product/apigateway

API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成,向合作伙伴、开发者开放功能和数据。https://www.aliyun.com/product/apigateway

  • 提供防攻击、防重放、请求加密、身份认证、权限管理、流量控制等多重手段保证 API 安全,降低 API 开放风险。
  • 提供 API 定义、测试、发布、下线等全生命周期管理,并生成 SDK、API 说明文档,提升 API 管理、迭代的效率。
  • 提供便捷的监控、报警、分析、API 市场等运维、运营工具,降低 API 运营、维护成本。

API 网关功能
  • API 生命周期管理

    • 支持包括 API 发布、API 测试、API 下线等生命周期管理功能。
    • 支持 API 日常管理、API 版本管理、API 快速回滚等维护功能。
  • 全面的安全防护

    • 支持多种认证方式,支持 HMAC (SHA-1,SHA-256) 算法签名。
    • 支持 HTTPS 协议,支持 SSL 加密。
    • 防攻击、防注入、请求防重放、请求防篡改。
  • 灵活的权限控制

    • 用户以 APP 作为请求 API 的身份,网关支持针对 APP 的权限控制。
    • 只有已经获得授权的 APP 才能请求相应的 API。
    • API 提供者可以将调用某个API 的权限主动授予给某个APP。
    • 若 API上架到 API 市场,购买者可以将已购买的 API 授权给自己的 APP。
  • 精准的流量控制

    • 流量控制可以用于管控 API的被访问频率、APP的请求频率、用户的请求频率。
    • 流量控制的时间单位可以是分钟、小时、天。
    • 支持流控例外,允许设置特殊的 APP 或者用户。
  • 请求校验

    • 支持参数类型、参数值(范围、枚举、正则)校验,无效校验会被 API 网关直接拒绝,以减少无效请求对后端造成的资源浪费,大幅降低后端服务的处理成本。
  • 数据转换:通过配置映射规则,实现前、后端数据翻译。

    • 支持前端请求的数据转换。
    • 支持返回结果的数据转换。
  • 监控报警

    • 提供可视化的API实时监控,包括:调用量、流量大小、响应时间、错误率,在陆续增加维度。
    • 支持历史情况查询,以便统筹分析。
    • 可配置预警方式(短信、Email),订阅预警信息,以便实时掌握API运行情况。
  • 自动工具

    • 自动生成 API 文档,可供在线查看。
    • API 网关提供多种语言 SDK 的示例。降低 API 的运维成本。
    • 提供可视化的界面调试工具,快速测试,快速上线。
目录
相关文章
|
4月前
|
前端开发 JavaScript
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
|
6月前
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
711 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
5月前
|
缓存 Devops 微服务
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
|
JSON 前端开发 API
前端与后端的协作与沟通
前端与后端的协作与沟通
631 0
|
7月前
|
前端开发 NoSQL 测试技术
Crossbar 后端开发调试混乱解决方案
Crossbar 后端开发调试混乱解决方案
59 0
|
安全 API 数据处理
API接口技术:架构、设计、安全性与实践
随着数字化和信息化进程的加速,应用程序接口(API)在软件开发和数据处理中扮演着越来越重要的角色。API不仅是不同软件应用程序之间的桥梁,也是软件开发人员和数据科学家进行数据交换和功能调用的关键工具。本文将深入探讨API接口的技术,包括架构、设计、安全性以及实践应用。
|
小程序 前端开发 Java
【平台开发】技术整合思考(四)前后端不分离
【平台开发】技术整合思考(四)前后端不分离
229 0
|
存储 机器学习/深度学习 Kubernetes
前端设计走查平台实践(后端篇)
设计师在进行走查的过程中,肉眼的比对偶尔会忽略一些细微部分,同时也会耗费设计师大量的精力,为了辅助设计同学能够更高效的进行设计走查,本文旨在通过设计走查平台在后端侧的实践总结下对于视觉稿还原程度比对的一些思路。
126 0
|
JSON 自然语言处理 前端开发
跨端架构下客户端侧API维护方案总结
淘宝App搜索业务侧采用的是局部动态化的跨端技术架构,客户端提供丰富的基础能力与视图组件的API,前端负责业务视图搭建与业务逻辑实现。
121 0
|
前端开发 API Windows
【技术干货】使用whistle进行前后端联调
在开发的过程中经常会进行前后端先约定定义接口,然后前后端独立开发,最后进行联调。过程中可能前端先完成开发,此时后端就可以借助前端开发好的页面白屏验证研发的接口与业务逻辑;可能后端先完成开发,前端就可以配置后端地址,直接验证页面逻辑,这里面主要的关键点就在于如何将页面的api请求自定义转发到期望的后端地址以及进行相关的转发逻辑配置。
429 0