0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

前后端数据接口协作提效实践

倩倩 来源:OSC开源社区 作者:OSC开源社区 2022-08-31 16:44 次阅读

导读

introduction

在大部分场景中,前后端可以在开发前约定好数据接口,双方能够围绕约定并行地完成开发和自测。然而在大型系统中一些后端模块有时并非直连前端,在它们之间可能包含一些其它模块的处理过程,为了保证数据真实有效,前端需要搭建整套环境来调试渲染效果,导致效率和研发体验不断劣化。本文主要介绍百度商业前端团队结合接口平台和数据直达能力优化前后端协作效率的尝试,有效的提升了团队协作效能。

一、实践方案

GEEK TALK 我们的实践主要分为两大阶段:

1. 协作提效;

2. 质量保障&体验优化。

其中协作提效包括基础能力建设和协作模式升级落地;质量保障&研发体验是在协作提效的基础上,对业务质量保障和极端场景所遇到的问题提出的一些解决方案。

45c2a93e-2862-11ed-ba43-dac502259ad0.png

二、数据直达能力

GEEK TALK 我们团队所维护的后端模块是一个BFF层,负责适配上游和前端模块的数据,和前端业务联系非常紧密。然而由于该层和前端之间还包含了一些策略和聚合的处理逻辑,大家在开发自测过程中没办法直接使用桩数据来预览效果,前端为了调试功能只能维护多套环境,除去环境搭建本身需要消耗大把时间之外,模块连通性排查、资源协调,环境更新都会影响前端的工作效率。 为了减少维护环境带来的精力消耗,我们在实践初期尝试过多次环境管理优化,效果都不是很理想,一方面有限的环境资源始终没办法很好地满足频繁迭代的需要,另一方面环境提供方也疲于应对各种各样的问题,所以我们就想能不能不再维护线下环境,而是将开发测试的工作转移到线上环境上去进行,也就是让后端能够同时处理线上和线下数据请求,使前端在连接线上环境时看到线下数据的渲染结果。 基于这个思路,我们在后端隔离出一套旁支逻辑定时地从Redis拉取线下物料数据和对应的设备信息,其中设备信息是某台手机或者某个浏览器唯一id,当这些设备所对应的请求到达时,后端就把它当作一个特殊请求替换原有请求成线下数据,接着继续之后的处理过程,前端只需要将数据和设备信息写入到Redis就能接收到线下数据的处理结果,这样前端就像在使用一套始终保持最新版本的常驻环境,不会再被各种各样的环境维护问题消耗精力,双方都能在协作过程中更关注业务逻辑本身。

45f641c2-2862-11ed-ba43-dac502259ad0.png

三、升级协作模式

GEEK TALK 借助数据直达能力,我们成功解决了环境维护困难的问题,大幅地提升了联调阶段的效率,但其实我们在开发阶段的协作仍然存在着一些问题。在能力建设初期我们只支持了请求数据的替换,前端没办法在后端代码上线之前开始开发,这样串行的协作模式显然是有问题的,所以我们就想能不能基于数据直达能力扩展出一套常规的桩服务。 为了实现桩服务,我们在需要作为桩输出给前端的数据上添加了特殊标识,当后端识别到携带特殊标识的数据请求时就会跳过后续的处理逻辑,直接返回结果给下游模块。这种替换返回的模式能够让后端在开发前就将线下桩数据交付给前端使用,使前后端能够并行协作。

4614474e-2862-11ed-ba43-dac502259ad0.png

为了减少学习和操作成本,我们将以上所介绍的能力封装成平台提供给团队使用,后端可以按照项目为维度编辑和交付数据,前端可以拿这些数据去和设备做连接,然后直接在app上刷新就可以看到效果。

4623cf0c-2862-11ed-ba43-dac502259ad0.png

四、数据分级

GEEK TALK 为了改造前后端协作模式,我们在开发过程中使用的其实都是桩数据,这样可能会导致数据和最后真实逻辑所输出的结果存在差异,这些差异可能会暴露到线上影响业务功能,所以如果缺少有效的措施去约束数据使用的话,那么质量风险会变得难以控制。 为此,我们将数据的使用根据规则和应用场景划分成三种类型:手动生成、线下后端生成、线上后端生成。

46456ac2-2862-11ed-ba43-dac502259ad0.png

可以看到,数据的约束规则随着项目的推进是逐步收紧的。在开发前期后端能使用编辑生成出的桩数据快速交付给前端,让前端完成单模块开发自测;在联调阶段,我们的数据是由后端所开发完成的代码逻辑生成而来的,由于这部分数据需要保证一定真实性,所以不再支持编辑,这样数据就能够匹配上后端即将上线的逻辑;而在后端上线完成之后,前端能够从线上检索系统采集到真实物料数据,通过扫码等方式进行效果预览,这样同时从数据和代码逻辑两方面保证了真实性。 通过上述对数据分级的规划,我们保证了协作过程在高效并行运转的同时,始终遵循一套流程标准,能够有效地保障了业务的交付质量。

46626ea6-2862-11ed-ba43-dac502259ad0.png

五、优化平台体验

GEEK TALK 经过前面三个步骤的优化,我们在大部分的项目中已经能让前后端解耦协作,然而在一些复杂项目中这套流程反而会降低工作效率,这是因为复杂项目往往需要覆盖的功能点更多,数据组合也相应的更多,我们发现部分项目所需要的数据条数甚至超过两百条,这样后端就要花费大量的时间和精力去录入和编辑数据,在这种极端需求下数据准备时间就成为了效率瓶颈,使得研发体验急剧下降。 为了解决这个问题,我们围绕“片段”概念支持了对数据批量编辑的功能,可以让后端在编辑数据的过程中,将编辑的操作以“片段”的形式保存下来,每一个“片段”包含编辑的位置和值,这些“片段”可以继续应用到多个数据上,这样编辑工作就从多次变成一次,大大减少了重复工作量。

4688b4a8-2862-11ed-ba43-dac502259ad0.png

同时,由于前端需要频繁对同一个功能进行例如版本兼容、标题长度兼容等细分情况的验证,为了更好的支持这种需求,我们支持了“片段”的版本的功能,也就是在保持“片段”操作位置不变的前提下,为“片段”赋予不同的值,前端可以通过切换“片段”的不同版本,快速拿到同个功能下携带不同细节的数据去快速地验证一些兼容效果。

46b089a6-2862-11ed-ba43-dac502259ad0.png

六、总结

GEEK TALK 前后端数据接口协作升级使我们的团队能够更稳定高效地完成产品迭代,团队的项目的平均交付时间减少了50%以上,目前已经有上千次的业务项目基于这套方案完成了开发测试和线上回归工作。我们也在持续不断地探索在如产品视觉验收、销售问题验证等其它方面落地的可能性,希望能在更多的场景下提升团队的协作效能。

END

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2661

    浏览量

    47300
  • 数据接口
    +关注

    关注

    1

    文章

    78

    浏览量

    17824

原文标题:前后端数据接口协作提效实践

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    eBPF技术实践之virtio-net网卡队列可观测

    在系统领域中,最具挑战性的问题通常是组件之间的边界定位。其中,virtio-net前后端的定界尤为困难。当网络报文从内核发送到virtio-net后端,或者从virtio-net后端发送到内核
    的头像 发表于 11-14 11:18 50次阅读
    eBPF技术<b class='flag-5'>实践</b>之virtio-net网卡队列可观测

    SOLIDWORKS 2025:更有效的协作和数据管理

    在当今快速变化的商业环境中,有效的协作和数据管理已成为企业成功的关键。作为CAD领域的领军者,SOLIDWORKS始终致力于为用户提供优越的三维设计与工程解决方案。随着SOLIDWORKS 2025的发布,这款旗舰软件在协作和数据管理方面实现了重大突破,为用户带来了良好体
    的头像 发表于 10-08 16:52 202次阅读

    前后端数据传输约定探讨

    1 目的 稳定可靠,降本增效   前后端数据传输约定旨在提升系统稳定性、可靠性,降低线上线下bug率;并提升研发效率、降低沟通成本、降低延期率。是确保项目前端和后端开发顺利进行的重要规约之一,定义了
    的头像 发表于 07-08 19:10 197次阅读
    <b class='flag-5'>前后端</b><b class='flag-5'>数据</b>传输约定探讨

    重磅!英特尔发布intel3制程至强6能核处理器,赋能数据中心能升级

    、横向扩展工作负载带来性能与能的双重提升,同时携手金山云、浪潮信息、南大通用,以及记忆科技等多家生态合作伙伴,分享基于该处理器的端到端创新解决方案,及其在诸多领域的实践成果与应用价值。
    的头像 发表于 06-07 10:38 4551次阅读
    重磅!英特尔发布intel3制程至强6能<b class='flag-5'>效</b>核处理器,赋能<b class='flag-5'>数据</b>中心能<b class='flag-5'>效</b>升级

    浅析我国数据中心配电系统的能耗及能水平

    发展速度也非常迅猛。一系列实践证明,数据中心的建立以及发展等具有非常重要的现实作用。为更好的突出数据中心的核心功能,充分全面的明确数据中心的能耗,同时切实有效的提升它的整体能
    的头像 发表于 04-09 16:09 307次阅读
    浅析我国<b class='flag-5'>数据</b>中心配电系统的能耗及能<b class='flag-5'>效</b>水平

    什么是模拟前端和模拟后端 模拟前端与模拟后端的区别

    模拟前端和模拟后端是电子系统设计中的两个关键部分,它们在信号处理过程中扮演着不同的角色,各自具有独特的功能和重要性。
    的头像 发表于 03-16 15:21 2281次阅读

    模拟前端和后端的区别

    模拟前端和模拟后端在电子系统设计中各自扮演着重要的角色,它们之间有着明显的区别。
    的头像 发表于 03-15 15:59 916次阅读

    模拟后端是什么意思

    模拟后端,在软件开发和测试领域,通常是指使用工具或技术来模拟实际后端服务的行为。这样做的主要目的是在项目开发过程中,当后端服务还未就绪或暂时无法访问时,前端或其他依赖后端的系统能够继续
    的头像 发表于 03-15 15:58 616次阅读

    什么是接口测试?如何开展接口测试

    接口其实就是前端页面或APP等调用与后端做交互用的,有朋友会问,我的功能测试都测好了,为什么还要测接口呢?
    发表于 03-14 14:15 497次阅读
    什么是<b class='flag-5'>接口</b>测试?如何开展<b class='flag-5'>接口</b>测试

    浅析我国数据中心配电系统能耗及能水平

    发展速度也非常迅猛。一系列实践证明,数据中心的建立以及发展等具有非常重要的现实作用。为更好的突出数据中心的核心功能,充分全面的明确数据中心的能耗,同时切实有效的提升它的整体能
    的头像 发表于 03-11 15:48 304次阅读
    浅析我国<b class='flag-5'>数据</b>中心配电系统能耗及能<b class='flag-5'>效</b>水平

    TOPCon电池降本思路解析

    由于TOPCon电池效率超预期追赶HJT电池,2022年~2023年市场选择了TOPCon,且预计未来TOPCon的生命周期会依然维持5~6年。虽然TOPCon工艺技术已经趋于成熟,但是仍有降本
    的头像 发表于 02-19 13:11 1155次阅读
    TOPCon电池降本<b class='flag-5'>提</b><b class='flag-5'>效</b>思路解析

    详解PyTorch在MPS后端的新特性

    大家好,我叫Kulinseth,我在苹果的MPS团队工作,今天我将讨论PyTorch中MPS后端的改进。接下来,我将介绍MPS后端进入Beta Stage的新功能。我们添加了一些新功能,如支持分析器、自定义内核和MPS开发者API,这些都是MPS
    的头像 发表于 12-15 10:57 2197次阅读
    详解PyTorch在MPS<b class='flag-5'>后端</b>的新特性

    芯片设计分为哪些步骤?为什么要分前端后端?前端后端是什么意思

    芯片设计分为哪些步骤?为什么要分为前端后端?前端后端分别是什么意思? 芯片设计分为前端和后端两个主要步骤。前端设计由逻辑设计和验证组成,后端设计则包括物理设计与验证。这样的分工有利于更
    的头像 发表于 12-07 14:31 3529次阅读

    基于springboot和vue框架的Java

    和Vue项目的环境,并展示从前端到后端的完整开发流程。接着,将重点关注前后端分离的开发模式,并介绍如何通过RESTful API进行数据交互。最后,将分享一些实践中的经验和技巧,以及对
    的头像 发表于 12-03 15:15 946次阅读

    springboot前后端交互流程

    Boot 进行开发时,前后端交互是一个非常重要的部分,本文将详细介绍 Spring Boot 前后端交互的流程。 前后端交互的基本原理 在前后端交互的过程中,前端负责向
    的头像 发表于 11-22 16:00 1998次阅读