写点什么

太平洋保险 CIMS 系统微前端实践

  • 2018-06-30
  • 本文字数:1777 字

    阅读完需:约 6 分钟

什么是微前端(Micro-Frontends)

微前端的概念最早由 ThoughtWorks 在 2016 年底提出,是一种将微服务推广到前端的设计理念。( https://micro-frontends.org/),目前的趋势是构建一个功能丰富且功能强大的浏览器应用程序,也就是位于微服务架构之上的单页应用程序(SPA)。

随着时间的推移,大家会发现前端独立开发团队开发的表现层会变的越来越难以维护,这就是我们所说的大前端以及大前端遇到的问题。

微前端是大前端之后的一种概念,所谓大前端,即将传统中归于后端的服务器脚本和模板划归到前端。所谓微前端,即将大前端包含的前端和后端(一般指 nodejs 部分)纵向合并、横向打散,形成完整的 E2E 的微“大前端”。

微前端可以有效的降低前端的代码复杂度和更加灵活的解耦,甚至可以很好的组合当前流行的各种前端框架,例如 Vue,React,Angluar。同时, 微前端服务可以有自己的独立生命周期。

项目背景

太平洋保险 CIMS 系统作为 CMDB 系统的升级替代品,在包含了 CMDB 的所有功能之外,还对自动采集、自动发现以及关联关系的构建提供了简单有效的支持。

项目前期采用 AngluarJS1.6 版本作为前端 SPA 的实现。随着业务需求的不断变化单页面应用已经非常难维护十几个团队提出的各种定制化需求。

CIMS 作为生产板块的核心系统,需求方来自 IT 的各个团队,包括:应用运行团队、需求架构团队、生产调度团队、服务器团队、网络团队、通讯团队、安全团队等十几个团队,对接集团内的十几个系统,针对如此多的需求和对接工作,项目组考虑过重写前端的可能性,但是由于前期积累下来的个性化需求修改较多,如果贸然重写前端,填过的坑可能还要再填一次。同时也考虑过采用 CS 形式的小程序来满足各个团队的个性化需求,但是考虑到后期小程序的升级维护成本和分发等问题,此方案也被放弃。最终项目组决定在 CIMS 系统中使用前端插件的形式进行个性化扩展,这也就是 CIMS 系统微前端的设计雏形。

CIMS 项目的演进历史

以下是项目组在最近一年的系统演进过程中完成的来自不同需求方的需求图表,在人员还有略微减少的情况下,大家可以通过这个任务完成曲线看到,项目组从 17 年下半年的平稳运行,到 17 年底 18 年初的任务挤压,再到如今的任务加速完成,系统的架构调整起到了非常重要的作用:

为了能够更好的完成不同业务团队提出的不同需求,系统进行了以下系统演进:

微服务之前的系统演进,在这里就不做赘述,有很很好的文章可以参考。针对从微服务架构演化到微前端进而完成系统全面微服务化的架构演进,CIMS 项目组通过如下几步完成:

  • 完善了 OpenAPI 和 Webhook 接口,实现 pull 和 push 模式;同时开发了开放平台,模块开发者可以直接通过注册个人的开发者账号完成独立应用的开发。
  • 开发了一套独有的智能动态路由组件,并完成了功能闭包。对轻应用进行动态智能引流。
  • 开发了一套独有的应用商店系统,对轻应用进行前台化的控制与管理。
  • 实现了统一认证中心,针对独立应用进行二级权限认证。
  • 与集团容器平台对接,为不同轻应用的独立部署提供必要条件。
  • 对现有页面进行框架修改,达到无缝嵌入功能。
  • 改造完成后,在用户无感知的情况下,下图中叠加的三个页面使用了 VUE、AngluarJS 以及一个页面即有 VUE 又有 AngluarJS 的前端设计方案,每个应用都是一个 E2E 的独立程序完成独立功能,业务数据通过 OpenAPI 和 WebHook 获取,同时通过智能动态路由进行路由转向。针对某一个团队的个性化需求,再也不用整个大前端打包发布了。

总 结

在过去的几年,大量地前端项目已经使用 Angular、Vue、React、Ember 等框架重写。使用哪种框架,对于一个前端项目来说,差别并不大。从零启动一个前端项目是一件容易的事,但是问题的关键在于,我们不可能不断地重写前端项目。

于是,对于前端项目来说问题变成了,如何去维护一个前端项目。如果一个项目中的前端开发人员水平参差不齐,但是没有辅以有效的代码改善方式,如 CheckStyle、Code Review、测试 等等。那么,未来它必是一个痛苦的遗留系统。

微前端的提出与尝试, 是前端技术发展的必然趋势。非常荣幸的是太平洋保险 CIMS 项目引领了这一趋势,相信在不久的将来,会有更多的系统不约而同的进行微前端的尝试与实践,为了可以让后来者可以更好的少走弯路,项目组也在努力的提炼现有技术套件,争取早日可以完成业务无关性抽象。将微前端技术以标准框架的形式,对外输出给更多的项目与组织。

感谢覃云对本文审校。

2018-06-30 16:462858

评论 1 条评论

发布
用户头像
希望有更详细的文章,我们公司的一个项目目前快崩溃了,就如文末说的,前期开发追求快,人员水平参差不齐,又没有有效的代码改善方式,项目业务逻辑又超级复杂…积重难返的感觉,又没有资源和时间,现在苦不堪言……微前端不知道能不能解决这种问题,用微前端方式重构
2018-11-09 23:47
回复
没有更多了
发现更多内容

Java自定义DNS解析器负载均衡实现

FunTester

负载均衡 性能测试 接口测试 DNS FunTester

阿里云服务器搭建halo博客从0到1

乌龟哥哥

阿里云 2月月更 halo博客

2022-02微软漏洞通告

火绒安全

微软 网络安全 终端安全 漏洞修复

2022年的元宇宙,你该知晓些什么?

CECBC

声网AI降噪测评系统初探

声网

音视频 RTE 技术详解

亚信科技AISWare AntDB数据库在运营商核心业务系统的联合实践分享

亚信AntDB数据库

5G AntDB intel 亚信科技

springcloud五大核心组件

编程江湖

PingCode Wiki 权限设计之ACL

PingCode研发中心

项目管理 开发 acl PingCode 页面权限

[JAVA冷知识]什么是逆变(contravariant)与协变(covariant)?数组支持协变&逆变吗?泛型呢?

山河已无恙

Java 2月月更

语义级代码克隆检测数据集的评估与改进

华为云开发者联盟

软件工程 代码克隆检测 代码克隆 语义代码克隆 BigCloneBench

虚拟空间引领 数字化转型拉开银行差距

CECBC

2022年1月云主机性能评测报告,移动云升至第三

博睿数据

元宇宙里办年会,听演讲、看产品、抽大奖一件不落

Meta 小元

数字孪生 元宇宙

5种阿里常用代码检测推荐 | 阿里巴巴DevOps实践指南

阿里云云效

阿里云 云原生 软件开发 研发 DevOps实践指南

欧拉的奇异之旅·风暴来临与欧拉初诞

白洞计划

基于RestTemplate的在线武器库

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

浅谈OKR(12/100)

hackstoic

OKR

总结 XSS 与 CSRF 两种跨站攻击

喀拉峻

网络安全

Web Components系列(四) —— 认识 Shadow DOM

编程三昧

前端 组件化 HTML5, CSS3 2月月更

征文投稿丨使用云服务器ECS快速搭建halo博客

阿里云弹性计算

征文投稿 玩转ECS halo博客

redis 面试总结

yuexin_tech

redis 面试

一文让你彻底搞懂Python中__str__和__repr__

宇宙之一粟

Python 2月月更

Hango Rider:网易数帆开源 Envoy 企业级自定义扩展框架

网易数帆

开源 云原生 envoy Hango Rider

在阿里,我们如何管理测试环境

阿里云云效

阿里云 DevOps 云原生 敏捷开发 研发提效

元宇宙的本质特征是五大融合

CECBC

Linux修改drop_caches内核参数来清理缓存的一些笔记

山河已无恙

Linux 2月月更

从小样本学习出发,奔向星辰大海

百度大脑

我与Android的故事|社区征文

Changing Lin

android 移动开发 新春征文

设计模式【14】-- 从智能音箱中学习命令模式

秦怀杂货店

Java 设计模式

巧用这几种文本检索工具,节省80%的时间!

优麒麟

Linux 操作系统 grep 检索 优麒麟

开源最佳实践

LinuxSuRen

开源 最佳实践

太平洋保险CIMS系统微前端实践_架构_黄超_InfoQ精选文章