当前位置: 首页 > news >正文

[论文阅读] 软件工程 | 微前端在电商领域的实践:一项案例研究的深度解析

微前端在电商领域的实践:一项案例研究的深度解析

arXiv:2506.21297
Exploring Micro Frontends: A Case Study Application in E-Commerce
Ricardo Hideki Hangai Kojo (1), Luiz Fernando Corte Real (1), Renato Cordeiro Ferreira (1,2,3,4), Thatiane de Oliveira Rosa (1,5), Alfredo Goldman (1) ((1) University of São Paulo, (2) Jheronimus Academy of Data Science, (3) Technical University of Eindhoven, (4) Tilburg University, (5) Federal Institute of Tocantins)
Comments: 11 pages, 2 figures (2 diagrams), submitted to the workshop AMP 2025
Subjects: Software Engineering (cs.SE); Distributed, Parallel, and Cluster Computing (cs.DC)

研究背景:前端架构的演进困境与破局之路

想象一个大型超市,所有商品都堆放在一个大仓库里,店员每次找货都要翻遍整个仓库——这就像传统的单体前端架构。随着业务增长,仓库越来越拥挤,找货效率越来越低。而微服务架构就像把大超市拆分成多个便利店,每个店专注于一类商品,效率大幅提升。但这时人们发现,前端界面还像个“大仓库”,与后端的“便利店”脱节了。

这就是微前端架构诞生的背景。2012年微服务兴起后,亚马逊、Netflix等公司通过拆分后端服务提升了系统灵活性,但前端仍停留在单体架构,面临着:

  • 耦合噩梦:主系统与前端紧绑,改一个按钮可能影响整个页面
  • 技术债务:老技术栈如JSP、内部JS库难以维护
  • 开发低效:团队协作像“多人共用一支笔”,代码冲突频发

微前端(2016年提出)试图将微服务理念引入前端,把界面拆分成独立组件(从按钮到完整页面),就像便利店按区域划分零食、日用品区,每个区域可独立补货(开发部署),但对外仍是统一的超市(用户体验)。然而学术研究尚少,工具支持有限,何时该用微前端成了行业难题。

创新点:理论与实践的双重突破

  1. 工业场景的实证研究
    不同于多数理论探讨,论文在真实电商平台(手工艺品市场)落地微前端,用API网关+Backend for Frontend模式解决实际问题,填补了行业案例空白。

  2. 反常识结论的提出
    打破“微前端一定优于单体”的认知,指出:在该公司场景下,微前端并非唯一解,但配合微服务转型能最大化价值,就像“电动车不是唯一选择,但在充电桩普及地区更方便”。

  3. 开发者视角的评估体系
    通过半开放问卷收集一线反馈,发现50%开发者不认可现有架构为微前端,揭示了定义模糊性垂直切片模式的认知冲突,为行业标准制定提供依据。

研究方法和思路:三步拆解微前端落地路径

1. 文献地毯式调研(理论奠基)

  • 扫描学术论文+博客/演讲等灰色文献,绘制微前端“地图”:
    • 核心优势:技术灵活(如用Svelte替代老JS库)、团队自治
    • 关键挑战:分布式系统复杂度、视觉一致性(像不同便利店装修风格需统一)

2. 企业现场实验(实践验证)

  • 对象:某电商平台(化名Company A),原架构为Java单体前端+微服务后端
  • 手术步骤
    1. 搭建网关:用Fastify开发API网关Fortelle,像“前台接待”统一路由请求
    2. 设计系统:创建Veloura规范UI组件,确保各微前端“装修风格”一致
    3. 试点迁移:用Svelte重构搜索页面(选低流量页面降低风险)
    4. 集群化:将多个页面拆分为Brindle系列微前端,共享Brindle Core组件库

3. 开发者反馈采集(效果评估)

  • 设计19题半开放问卷(15开放+4多选),从7个维度评估:
    • 正面:开发速度提升、新技术吸引人才
    • 负面:测试复杂度增加(分布式系统如“多店联动促销”难测试)、入职学习曲线陡

主要贡献:给行业的三份“实用指南”

  1. 场景适配说明书
    明确微前端的“最佳使用条件”:当企业已在推进微服务、需要拆解单体前端时,微前端是“顺势而为”的选择,而非盲目跟风的“万能药”。

  2. 技术落地清单
    提供可复用的技术组合:
    架构模式:API网关 + Backend for Frontend
    技术栈:Svelte(前端) + Fastify(后端) + 设计系统
    实施策略:低风险试点→组件库抽象→批量迁移

  3. 认知纠偏手册
    澄清行业误解:
    微前端不一定要拆页面组件,按业务领域垂直拆分(如 “搜索微前端”“购物车微前端”)同样有效
    没有 UI 的微前端(如数据处理模块)也是合法形态


思维导图

在这里插入图片描述


深入

一、研究概述
  • 目的:探究在工业环境中何时适合采用微前端架构,通过案例研究分析其可行性与效果。
  • 方法:结合学术与灰色文献进行现状调研,在已使用微服务的电商平台(公司A)实施微前端架构,并通过开发者半开放问卷评估。
二、微前端架构背景
  • 定义:将前端拆分为可独立开发、测试和部署的小部件,可在客户端、边缘或服务器端组合,形成统一输出。
  • 与微服务的关系:延续微服务理念,两者常并行实施,可复用分布式系统知识与基础设施。
  • 优势:技术灵活性、团队自治、可扩展性、弹性(局部故障不影响整体)。
  • 挑战:分布式架构复杂性、视觉一致性维护、跨团队治理、代码重复与性能问题。
三、公司A的原有架构问题
问题类型具体表现
架构耦合主系统(Java单体)与前端系统紧密耦合,单体为唯一入口点,成为单点故障。
技术陈旧使用JSP、Sass和内部JavaScript库,部分技术已 deprecated(如Aquarelle的关键库)。
开发体验差前端开发者需接触后端代码,部署时间长,架构侵蚀严重。
四、微前端实施过程
  • 关键组件
    • API网关(Fortelle):作为系统入口,处理路由、验证和安全。
    • 设计系统(Veloura):规范UI标准,强化品牌视觉一致性。
    • 试点项目(Nuvelle):验证技术选型与开发实践。
    • 页面迁移(Brindle):从单体迁移搜索页面等,形成微前端项目集群。
  • 技术栈:Svelte(前端框架)、Fastify(后端框架)、Brindle Core(开源组件库)。
五、当前架构与成效
  • 架构变化:通过API网关实现前端责任分散,垂直微前端迁移页面,新架构支持新产品前端快速开发。
  • 开发者调查结果(8名受访者)
    • 积极方面:62.5%有超10年经验,开发速度提升,技术吸引力强。
    • 挑战:50%不认可当前架构为微前端,测试复杂度高,系统整体理解难度大。

关键问题

1. 微前端架构的核心优势与挑战分别是什么?
  • 答案:核心优势包括技术灵活性(各部分可选用最合适工具)、团队和项目自治(便于开发、测试与持续交付)、可扩展性(应用与组织层面)以及弹性(局部故障不影响整体)。主要挑战有分布式架构带来的复杂性(涉及多个项目与多样技术)、确保各服务视觉一致性、跨团队治理难题(尤其当不同团队共享服务或业务领域时),以及性能问题(源于代码重复、共享依赖和接口组合时的数据传输量)。
2. 公司A在实施微前端架构时采取了哪些关键措施?
  • 答案:公司A实施微前端架构时,首先创建了Fortelle作为API网关,充当系统入口,处理用户请求的路由、验证和安全功能;其次开发了Veloura设计系统,包含颜色、间距、字体和图标等标准,以强化公司视觉 identity;接着通过Nuvelle项目作为所选前端技术的概念验证,验证了文件组织、支持库和代码约定等实践;最后基于Nuvelle创建Brindle项目,将特定手工艺品材料搜索页面从单体迁移到新架构,并逐步扩展到其他页面。
3. 开发者调查对微前端架构的认知与影响有哪些关键发现?
  • 答案:调查发现,一半参与者不认为新架构是微前端实现,主要因文献中定义多强调将页面拆分为视觉组件,而公司采用垂直切片方式,且缺乏对该方式的明确引用。在影响方面,测试性和招聘/入职流程受负面影响较大,分布式系统的端到端测试更复杂,服务碎片化使系统整体理解困难,需更多适应时间。同时,新架构也有积极面,如使用新兴架构吸引开发者,系统拆分为小服务可能便于必要时逐步引入,但分布式系统固有复杂性又可能延长入职流程。

总结:微前端的“适用场景画像”

解决的主要问题

  • 破解了电商平台“单体前端与微服务后端脱节”的矛盾
  • 验证了“微前端+微服务”组合在技术复用、团队效率上的优势
  • 揭示了“架构选择需匹配企业现有技术演进节奏”的本质

核心成果

这篇论文像一把“场景匹配尺”,告诉业界:微前端不是“非黑即白”的选择,而是当企业面临单体技术债务、微服务转型中、需要前端团队自治时的“性价比之选”。公司A的案例证明,其成功关键不在于微前端本身,而在于与现有微服务基础设施的“无缝咬合”。

http://www.lqws.cn/news/561979.html

相关文章:

  • Linux软件的安装目录
  • 【面板数据】省级电商指数与地级市电子商务交易额数据集(1990-2022年)
  • OpenLayers 下载地图切片
  • Docker安装MinIO
  • 概述-4-通用语法及分类
  • 【go】初学者入门环境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意
  • 案例开发 - 日程管理系统 - 第一期
  • Redis 实现分布式锁
  • 【C++进阶】--- 继承
  • 鸿蒙 Grid 与 GridItem 深度解析:二维网格布局解决方案
  • 复杂驱动开发-TLE9471的休眠流程与定时唤醒
  • Python训练营-Day44-预训练模型
  • Java中的异常及异常处理
  • JDK17的GC调优
  • SpringCloud Stream 使用
  • Youtube双塔模型
  • 第27篇:SELinux安全增强机制深度解析与OpenEuler实践指南
  • eTools 开源发布
  • 如何在 Ubuntu 上通过终端或在 VirtualBox 中安装 GCC
  • 佳能Canon PIXMA G1020打印机信息
  • scGPT-spatial 复现
  • KS值:风控模型的“风险照妖镜”
  • Transformer结构--输入编码(BPE,PE)
  • Java面向对象(一)
  • JVM 之双亲委派机制与打破双亲委派
  • 【软考高项论文】论信息系统项目的进度管理
  • 【C++】简单学——类和对象(实现双向循环链表)
  • Python基础(吃洋葱小游戏)
  • Java Optional 详解:优雅处理空指针异常
  • 顺序表应用实践:从通讯录实现到性能优化深度解析