`

系统融合(三)--组件化

阅读更多

现有案例分析

 

系统融合,简单的说就是把多个系统合并成一个系统。组件化,是在服务化的拆分基础上,提取可独立部署和多次服用的部分。一个是合并,一个拆分,看似矛盾,但两者却可以同时使用,相得益彰。

 

笔者在前面总结过“适配器模式和“迭代器模式在系统融合过程中的运用,并以两个公司合并进行系统融合为例讲解具体的使用方式。在实际项目中,两个公司合并的场景毕竟是少数,但在同一个公司中其实有很多类似的软件系统,也是需要融合的。为什么在同一个公司中会存在很多类似的软件系统呢?个人觉得这是“以业务驱动”的公司的通病,尤其是以“以业务驱动”的大公司的通病。当然这不能把所有的责任都推给公司的“业务人员”,主要问题还在技术架构的设计上。下面来看一个案例:

 

现在的大型电商网站的入口页面 几乎都是由首页、频道页、活动页、店铺页、商品页等组成。由于网站的各种不同促销几乎无时不刻都在进行,在这一刻看到页面内容主题背景是红色、页面上有10个商品,在下一刻就有可能背景就换成了黑色、页面上的商品换成另外的15个商品。对于不了解电商网站系统架构的朋友来说,你可能觉得这个网站是不是通过不停的修改代码,重启系统实现,但又会觉得如此频繁的上线重启系统肯定不现实。

 

真实的做法是,这些页面都是通过在线编辑系统生成的(用过QQ的人,应该都装修过自己的QQ空间;在iteye上发布自己的博客也是一个道理),“业务人员”只需要在这个称为“装修后台”的系统里调整页面的样式、以及页面上的商品,然后执行发布操作就可以生成最新的页面内容。外部用户在访问网站时就可以及时的看到页面内容的变化。这种方式可以满足业务人员和商家的快速业务变化的需求。

 

在“业务驱动”下,首页、频道页、活动页、店铺页、商品页等系统的架构,会按照各个业务线搭建各自的业务系统,整体流程和思路很清晰。如果我们把整个架构画出来,就会发现问题:

 

 

 

 

 

业务确实比较清晰和并且各个系统相互独立,一个系统出现故障不影响其他系统。但这里却存在大量重复功能,每个系统里都有一套自己的 装修工具、权限管理、页面浏览、页面渲染。这里势必会有大量的重复代码,研发人力投入成倍增加;研发人员疲于各种业务开发(很有可能每套系统都会开发一次),整天忙于开发各种业务功能,无力投入人员进行系统优化,然后各个系统继续招人。最后发现,招了一大批人来做重复的事,技术又得不到提升,进入很危险的恶性循环。

 

组件化

 

如果任由上述案例中的问题发展下去,后果是非常严重的,会直接影响整个公司技术发展的未来。出现这个现象也有一些客观的原因,比如业务方太强势、业务发展太快等等。但出现问题就要思考怎么去解决问题,“组件化”就是解决上述案例中的利器。

 

文章开头已经提到:“组件化”的前提是“服务化”,首先来看下使用组件化的思想来解决上述案例中的复用性问题:

 

 

 

可以看到,上述案例中每个业务系统中都需要重复建设的功能,被提取成公共组件,每个组件由独立的研发团队复杂开发、优化和维护。与具体业务相关的逻辑被剥离到前台系统中,可以利用现有的组件库 通过搭积木的方式快速响应“业务方”的需求。

 

通过上述架构上的调整,现在有部分研发人员可以安心的做各个“组件”的优化工作了:如果应用服务器扛不住,就拆分应用;如果数据库扛不住,就进行垂直拆分或者水平拆分,其中又包含数据库中间件建设;通过前两步拆分之后,就会形成多个“微服务”,这些服务之间的通讯又会用到“消息队列Mq”以及RPC框架来实现同步或异步的方法调用和消息传递。

 

研发团队还可以根据业务需要,创建其他新的组件,利用“技术”反向驱动业务的发展。至此 公司的整个体术体系进入良性循环:进入“技术”和“业务”双驱动阶段。

 

待这些基础组件成熟后,还可以把它们部署到云上,为其他公司提供可插拔的服务(SAAS平台)。结合云计算 为公司带来另一个利益增长点。

 

系统融合

 

这里提到的“系统融合”,其实是把各个业务相似的独立系统,融合成一个“看似相同”的同一个系统。比如前文提到的“店铺系统”,在业务发展前期可能又会被分为两个系统:pc店铺系统(电脑版)、m店铺系统(移动端)。通过进一步的分析,我们可以发现pc店铺和m店铺的商家属性、商品列表、商品库存等等其实都是一样的,唯一不同的只有页面展示不同,一个是在电脑上展示、一个是在手机端展示。这时其实就可以把这两个系统的公共部分融合成多个“公共组件”,共两个前台系统使用,这两个前台系统主要职责就是负责页面效果展示。

 

通过这个案例可以发现,“系统融合”和“组件化”拆分,这两个看似矛盾的概念,在架构设计上有时候却会同时出现。

 

有朋友会说前面讲的内容已经到了公司整体的技术架构的层级,距离我们一个小团队太遥远。其实这种“组件化”的思想 同样适用于各个小团队。仔细梳理下自己团队里的系统:你所在的团队是不是有多个项目,每个项目负责一套系统开发;是不是每个系统都有一套自己的“权限管理体系”;是不是每个系统都有自己的“worker”定时器;是不是每个系统都自己实现了一个“分布式任务调度”;是不是每个系统都有自己的一套“实时数据计算”子系统 等等。如果你的回答是,那就可以把他们都独立出来,形成自己团队内部的公共组件,由指定研发小组去把他维护到极致。

 

通过上述梳理,会发现你的团队会建立起自己的前、中台技术体系。在人效最大化的同时,团队的整体技术水平也会上升一个台阶,因为每个项目再也不用来回的copy代码做重复的事情。

 

 

  • 大小: 48.7 KB
  • 大小: 4.8 KB
  • 大小: 26.8 KB
0
1
分享到:
评论

相关推荐

    ACTCMS网站管理系统 4.0 utf-8 20110623.rar

    来和系统融合.直接调用系统函数。 ACTCMS网站管理系统 4.0 utf-8 20110623 更新内容: 1、更新添加子栏目无法获取栏目名称 2、更新UTF-8编码 验证码出现的问题 一、系统特色: 1、独特模型管理。通过模型...

    医疗数据分析-医疗BI-大数据解决方案-信息化系统建设方案

    大屏可视化:多组件组合制作炫酷的数据大屏幕,可视化配置、布局灵活、快速发布满足各种应用场景,自适应多屏展现。 简单易用上手快 融合分析(Excel界面自助取数完成自助分析,无需学习)、自然语言分析、自助仪表盘...

    PowerBuilder 8.0基础篇

    1.11 控件融合技术 -- SplitBar 1.12 窗口中控件显示 -- ToolTips 第2章 数据窗口 2.1 数据窗口组合条件查询 -- Search 2.2 数据窗口中实现增量查询 -- zlcx 2.3 数据窗口的多表更新 -- UpdateMultable 2.4...

    《PowerBuilder 8.0基础篇》源程序下载

    1.11 控件融合技术 -- SplitBar 1.12 窗口中控件显示 -- ToolTips 第2章 数据窗口 2.1 数据窗口组合条件查询 -- Search 2.2 数据窗口中实现增量查询 -- zlcx 2.3 数据窗口的多表更新 -- ...

    数据融合matlab代码-Inertial-Localisation-using-BNO055-IMU-and-Arduino:惯性导航系统的

    惯性导航系统的开发,在自行车上的集成,传感器数据的收集,传感器数据的融合和可视化 作者: 乔纳斯·杜波凯(Jonas Dobokay) 伯特霍尔德·拉科奇(Berthold Rakoczy) 亚历山大·斯珀卡(Alexander Sperka) HS ...

    Java毕业设计-基于jspm开发的理发店管理系统--论文-附源代码和说明文档.rar

    该系统以jspm作为前端模块化开发的工具,通过模块化设计,使得系统各组件之间的耦合度降低,提高了系统的可维护性和可扩展性。同时,系统采用B/S架构,用户只需通过浏览器即可访问系统,无需安装任何客户端软件,...

    Java毕业设计-基于jspm开发的高校物资采购管理系统--论文-附源代码和说明文档.rar

    “基于jspm开发的高校物资采购管理系统”是一项融合了先进Web开发技术与高校管理需求的综合性毕业设计项目。此项目旨在为高校提供一个高效、便捷、可定制的物资采购管理平台,以满足学校在日常运营中对于物资采购、...

    国内外主流的三维GIS软件

     十四重唱·武汉地大信息科技发展有限公司:InfoEarth TelluroMap--三维应用系统集成  介绍:InfoEarth TelluroMap采用面向Internet的分布式计算技术和三维可视化技术,支持跨区域、跨网络的复杂大型网络三维...

    新版Android开发教程.rar

    � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从计算机为主改成从手机使用为导向。新 生应用如:G oogle 地图及其衍生应用、 GMail 、 GTalk 等。 � GPS 卫星导航功能,手机照相, MP3 ,蓝芽等均...

    CMS网站管理系统 v3.0 beta utf-8

    是一款完全开源的程序,都毫无保留的完全开放源代码,用户不需额外安装其他DLL组件,其最大的特点是易用. 系统自带三大模型,系统模型,注册模型.表单模型.让你无顾虑制作属于自己的特色网站 一、系统特色: 独特...

    DirectX9 3D游戏设计入门 英文版+中文版+源代码

    本书内容深入浅出,内容广泛,可供从事3D游戏程序设计、可视化系统设计或其他图形应用程序开发的开发人员和大中专院校学生参考,也极适合各种游戏开发培训机构作为Direct3D编程的培训教程。 目录 --------------...

    协同过滤算法驱动的就业信息分析与个性化推荐系统源码

    项目概述:本项目是一款基于协同过滤算法的就业信息分析与个性化推荐系统,采用前沿技术栈Vue3、VueX、TypeScript以及ServerLess架构进行开发。主要语言为TypeScript,同时融合了JavaScript、Vue、微信小程序、CSS和...

    基于Vue.js与协同过滤算法的电商平台推荐系统源码

    项目简介:基于Vue.js的协同过滤推荐系统电商平台...本项目实现了一个基于协同过滤算法的电商推荐系统,旨在为用户提供个性化的购物体验,通过分析用户行为和偏好,智能推荐商品,从而提升平台的用户体验和购物满意度。

    HZERO-基于微服务架构开源免费的企业级PaaS平台

    封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持SaaS模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件G-General、A-AI、B-BigData、...

    fycms网站管理系统 v2.0 utf-8.rar

    FYCMS网站管理系统加入函数接口,如果对ASP熟悉一点的,您还可以自己编写函数来和系统融合,直接调用系统函数,4.0新增自定义表单将提交结果发送到邮箱,专题功能,在线主题,可以轻松下载在线模版,在线插件,心情...

    PB进阶代码(很全的)

    1.13 控件融合技术 -- SplitBar 第2章 数据窗口 2.1 数据窗口PDF格式文档输出 -- PDF 2.2 数据窗口组合条件查询 -- Query 2.3 数据窗口通用排序 -- UniversalSort 2.4 数据窗口通用显示列定制窗口的实现 -- ...

    Java毕业设计-基于jspm开发的整体衣柜定制系统-附源代码和说明文档.rar

    该系统不仅具备高度可定制化的特点,还融合了先进的设计理念和技术实现,为用户提供了一站式的衣柜定制解决方案。 在前端部分,系统采用了jspm作为模块管理工具,确保各个组件之间的依赖关系清晰、稳定。通过jspm,...

    豆瓣电影大数据分析-【附带爬虫豆瓣,对数据处理,数据分析,可视化】

    平台部分主要是hadoop分布式系统,基于该系统融合了组件Spark,Hbase,Hive,Sqoop,Mahout等。继而进行相关的数据分析 该项目主要分为以下几部分: 1:数据采集 主要是基于豆瓣电影的数据,进行分析,所以首先要...

    智能驾驶功能软件平台设计规范-系统架构

    本规范旨在通过联合业内优势企业,构建一个标准化的功能软件 平台,定义功能软件层的系统架构以及功能模块和算法组件之间逻辑服务接口,希望针对行业的紧急需求达成共识,从而可以明确产业分工和边界,缩短智能驾驶...

    ANSYS系统仿真与数字孪生物联网无线通信大数据分析人工智能云计算解决方案.pptx

    随着产品设计层次的提升,部件、组件直至整个系统的融合越来越紧密。Simplorer具有无缝集成的多种系统级建模技术(包括:电路、框图、状态机、等式等)和建模语言,能够在同一个原理图中实现复杂系统设计,是高精度...

Global site tag (gtag.js) - Google Analytics