什么是 micro-frontends?
第一次听说 micro-frontends 是在 ThoughtWorks Radars。 简单的说,micro-frontends 就是 Microservices 在前端的应用。
为什么我们需要 micro-frontends?
随着技术和市场需求的发展,我们的应用程序已经变得越来越大了。从很早以前服务端工程师就发现可以通过拆分 Microservices 来减少模块间耦合,降低开发和维护难度。 所以出现了如下架构:
我们注意上图的最右边,Database 和 Backend 已经成功将代码拆分成微服务,但是 Frontend 还是一个大而统一的系统。
形成这种现状有很多原因,具体就不讨论了。 不过,鉴于服务端微服务的的成功实践,前端工程师们也意识到前端的微服务架构也势在必行。 简单列举几个原因:
- 微服务可以减少模块间耦合,降低开发和维护难度。
- 微服务更容易进行任务分配,并行开发,提高生产效率。
- 感谢浏览器的不断进化,即使前端拆分成微服务,也能提供 SPA 的用户体验。
为什么 micro-frontends 没有 Microservices 流行?
原因有很多,简单总结:
- Frontend 项目大体上可分为 site 和 system 两种,site 数量巨大,但功能简单,并不需要微服务架构。system 数量少,且大部分属于内部系统,不对外公开,所以影响力较低。
- Microservices 理论出现更早,项目实践更多。
- Frontend 开发者中初级程序员更多,架构知识薄弱。
什么样的项目适合 micro-frontends?
- 大型,复杂系统。如 XXX 管理系统,一个系统集成了很多模块。
- 对 UI 更新要求不高的系统。
- 标准服务,可重复利用的模块。
refs: