前台服务架构概述

聊前台服务之前,我先问你一个问题:你每天打开App点个外卖、刷个视频,背后那些让你“点一下就有响应”的东西,到底是怎么组织的?说白了,前台服务就是直接跟用户打交道的这一整套系统。我做了几年后端,遇见过很多团队把“前台”简单理解成前端页面,其实远不止这些。

前台服务定义

前台服务(Frontend Service)并不是特指某个技术框架,而是指那些直接面向终端用户、提供交互能力和业务入口的系统层级。它包括但不限于:

  • 移动端App(iOS / Android)的UI与业务逻辑
  • Web前端(React / Vue / Angular)的页面与路由
  • 小程序、H5、桌面客户端等
  • 连接前后端的中间层(BFF / Gateway)

嗯,这里要注意:很多人把“前台服务”和“前端页面”混为一谈。我个人习惯把前台服务理解为“用户可感知的端到端服务链路”,它既包含UI层面的展示,也包含那些为了支撑UI而暴露的轻量API。举个例子,你刷抖音,看到推荐视频列表的那个接口,虽然它在后端是微服务处理的,但被Gateway包装后直接暴露给App,这就算前台服务的一部分。

核心定义:前台服务 = 用户触点 + 直接支撑触点的API层 + 它们之间的交互逻辑。

典型架构:网关 / API / UI交互

我见过的前台服务架构,这些年基本已经形成一套固定模式。别看每家公司叫法不同,底层逻辑都差不多。下面这张表是我自己常用的对照框架:

层级 职责 常见技术 需要考虑的问题
UI层 展示与交互,组装页面数据 React / Vue / Flutter / SwiftUI 状态管理、页面缓存、多端适配
API层 提供业务接口,聚合后端服务 REST / GraphQL / gRPC-Web 数据裁剪、接口版本、安全认证
网关层 统一入口,路由、限流、鉴权 Kong / Nginx / Zuul / APISIX 性能开销、动态路由、熔断降级
业务服务 核心业务逻辑、数据处理 Spring Boot / Go / Node.js 依赖外部系统、数据一致性

你看这个分层,UI层和API层之间就是典型的前台交互。我在一家出行公司工作时,就遇到过UI层为了展示乘客当前位置,同时调了3个API,结果因为网关层没有做缓存,每次刷新都打到后端,把数据库搞挂了。你想想看,如果当时有Mock回放在UI层进行模拟,开发阶段就能暴露这种问题。

再说说典型的请求流程:用户点击按钮 → UI层调用API → 网关路由 → 业务服务处理 → 返回数据。这个链路里,每一步都可能因为依赖不稳定、数据状态异常而翻车。而Mock回放正好能在这里扮演“替身演员”的角色。

为什么需要Mock回放

你可能觉得:后端不是有单元测试吗?前端不是有模拟JSON吗?为什么非要搞个Mock回放?

我曾经犯过一个大意:在做一个金融App的账单列表页时,前端直接用硬编码的Mock数据开发,后端接口写好了联调才发现——接口返回的字段名和Mock的完全不同,而且数据格式(嵌套结构)也不一样。结果联调了两天才改完,上线还差点延期。

之所以需要Mock回放,根本原因在于前台服务的强依赖性和弱可控性:

  • 依赖外部系统多:前台服务经常要对接第三方SDK、支付、地图、风控等,这些系统你没法在本地搭建全量环境。
  • 状态不稳定:你测试一个“订单已支付”的页面,需要后端真实产生一个支付成功的订单,但测试环境的支付回调往往不可控。
  • 回归成本高:每次前台改版,都得重新跑一遍完整业务流程,手动操作效率极低。
  • 异常场景难模拟:超时、限流、返回非JSON、网络断开……这些在生产环境才能出现的情况,本地很难复现。
我的经验:Mock回放不只是“伪造数据”,它是在录下真实流量的基础上,在测试时播放出来。这样你既能得到真实的数据结构,又能控制返回时机和异常注入,比手写Mock逼真得多。

说白了,Mock回放就是给前台服务装了一台“时光机”和“复读机”。你需要什么场景,就从历史流量里抓一段来回放。我在做打车软件的订单详情页时,就用Mock回放录了100个不同状态的订单(完成、取消、投诉、退款中),每次前端改完代码,几秒钟就能验证所有状态,根本不依赖后端。

避坑指南:刚开始用Mock回放时,我犯过一个问题——录下来的数据里包含了敏感字段(手机号、身份证等)。后来才知道要在录制时做脱敏处理,否则流量库就是个安全炸弹。一定要在上线前做好数据过滤。

现在,你用一张图来理解整个架构中Mock回放的位置和作用:

前台服务架构与Mock回放介入点 用户 👤 UI层(前端) API网关 业务服务A 业务服务B 外部依赖 数据库 Mock回放引擎 💡 Mock回放引擎可以部署在网关层或独立代理层,录制真实请求/响应,在测试时回放替代真实后端。

看到这张图你应该能理解:Mock回放引擎可以部署在网关层,拦截请求后返回录好的响应,而不是真的打到后端服务。这样一来,UI开发和前端联调都无需依赖所有后端服务都处于可用状态。我在项目中遇到过真实案例:新同事接入时,后端环境还没搭好,我们直接把典型的查询接口录下来,前端照样能调通,开发效率提升很明显。

最后总结一下,前台服务架构的核心就是用户 ↔ UI ↔ API ↔ 后端这条链。而Mock回放,就是给这条链加了一个“保险”,让你在面对不稳定、不可控、难以复现的场景时,依然能高效地开发、测试和回归。