知识卡片
后端微服务化后前端仍是单体,会抵消微服务收益
内容
团队把后端拆成多个独立微服务后,如果前端应用没有跟着拆分,后端独立开发、独立测试、独立部署、弹性扩缩容的优势会被前端这个共享瓶颈抵消——比如某个后端服务更新后,前端测试边界不清晰,无法针对单一模块单独发布或扩缩容,前端团队反而成为整体研发进度的制约点。微前端就是把微服务的设计理念延伸到前端:按业务/领域边界把单体前端拆分成若干可以独立开发、独立测试、独立部署、独立运维的小前端应用,再通过一个”拼接层”把它们重新组合回一个完整的用户界面呈现给用户。它与微服务的关键区别在于分工重心不同——微服务解决的是后端服务本身的解耦问题,微前端解决的是这些已解耦的服务在前端重新聚合、呈现的问题,两者是同一套微服务理念在系统两端的对称延伸,而非彼此独立的技术。是否值得引入微前端,核心要看几个信号是否同时出现:用户规模和各业务模块负载差异大到需要单独扩容、前端应用本身已庞大到难以维护、业务或团队技术栈本身要求前端并存多种框架、业务变更只集中在少数模块却仍要每次发布全部前端代码;如果这些痛点还没出现,引入微前端本身带来的部署、测试、组件版本管理复杂度提升,反而可能得不偿失。
参考来源
- 位置:第20章《微前端架构理念与技术实践》"20.1 前端项目的困局""20.2 如何理解微前端""20.4 微前端适合你的项目吗"(源文件:_epub-src/OEBPS/Text/chapter5-1-1.xhtml、chapter5-1-2.xhtml、chapter5-1-4.xhtml)
- 结论依据:原文说明"后端应用被拆分成多个相对独立的微服务,但前端应用仍然是一个大型传统单体……前端团队开始越来越难受……前端应用逐渐开始制约整体研发进度,形成了这种体系结构的瓶颈",并明确"微服务专注于后端服务的解耦,而微前端则关注解耦后服务重新聚合的策略",同时给出五条判断是否适合引入微前端的信号,直接支撑本卡片结论。
- 原始内容:从图20-1中可以看出,后端应用被拆分成多个相对独立的微服务,但前端应用仍然是一个大型传统单体……当然在这里更需要说明下,微服务与微前端的目标是不同的,微服务专注于后端服务的解耦,而微前端则关注解耦后服务重新聚合的策略。