企业微服务架构转型从技术平台到平台应用的建设模式
在很多中台整体架构规划里面,提出了技术中台的概念,实际上这里叫技术平台更加合适。中台体现的是共性业务能力下沉,并将其形成可复用的API能力提供给上层应用使用。那么技术平台强调的就是共性技术支撑能力的统一建设和能力开放。技术平台概述
微服务架构强调将传统的单体应用打散为从数据库到中间件到部署包(前端+后端)完全独立的多个松耦合的微服务模块。简单来说仍然是传统的业务系统要实现业务组件化拆分。而传统的单体应用往往包括了技术组件模块和业务组件模块共同组成。
简单举例说明下:采购系统 = 采购技术平台 + 招投标模块 + 采购订单管理模块 + 供应商管理模块
库存系统 = 库存技术平台 + 出入库管理模块 + 台账模块 + 配送模块
这个时候采购技术平台和库存技术平台本身具有大量的重复内容,包括了常说的4A和工作流引擎,也包括了类似消息,缓存,日志处理,文件存储,短信邮件等各种技术模块。
那么我们首先要考虑到的就是首先将传统业务系统中的技术平台部分剥离出去,统一下沉到公共的技术平台层构建,构建完成后再以能力开放接口的模式供上层业务模块调用。
因此共性技术能力下沉到技术平台,使得传统业务系统只剩余和业务相关的功能模块,是后续进一步进行业务系统模块化和组件化的基础。否则每一个微服务模块都要带流程引擎,各个技术组件,这些大量重复的内容在后续运维中将是灾难性的。
微服务架构中的平台包括:技术平台 + 业务平台
业务平台中包括提供核心业务能力的组件,也包括了提供核心数据能力的组件,比如规则中心微服务重点是提供业务逻辑能力,而供应商微服务重点则是提供数据服务能力。
在微服务架构里面也不再有主数据平台的概念,但是一定会有数据类微服务模块的概念,对于供应商中心,人员中心,用户中心,客户中心等,这些都是典型的数据组件,向外提供数据服务能力。
技术平台 = 技术组件1(技术组件+技术服务开放) + 技术组件2 + ... + 技术组件N
注意每一个技术组件都可以作为独立的微服务模块独立开发并部署,然后提供技术服务API能力接口出来。也就是说技术平台中的技术组件本身也是微服务模块化的,可完全实现分散部署和独立管理。
对于技术服务由于具有很大的并发调用量,因此走传统的ESB总线集成模式是不合适的,更好地丰富还是走轻量的SOA总线或服务注册管理中心,能够实现统一的服务目录管理,鉴权和路由接口。
同时对于技术服务类接口可以采用更加轻量的RestAPI 服务接口来实现并暴露。
要注意到在技术平台下沉后,原有一个业务系统全部能完成的事情变化为了需要多个业务模块,多个技术模块相互配合和协同才能够搞定。
可想而知,这个时候集成复杂度是指数级增加,同时对各个微服务模块本身的高可用,高可靠性要求更加高,任何一个微服务模块出现运行故障都可能影响到整体业务。
如果一个业务系统有4个模块,在进行微服务架构拆分后,即使技术组件只有三个独立的技术服务模块,那么也是会有20个集成点,可能上100个服务接口交互才能够完全还原回原来完整的业务系统能力。同时对于平台层任何一个技术组件模块出现故障,都直接会影响到上层的业务组件模块。
如果我们对技术组件建设的健壮性没有足够的信心,而轻易去实施上图这种转变,不仅仅是不能为最终的业务用户提供一个高可用性的业务系统,更重要的是在后续运维过程中仍然是灾难性的。
当一个企业本身的技术能力成熟度没有到一定水平的时候不要轻易去尝试上述方法。即使技术能力下沉,也只是集中化共建4A和流程平台能力即可。最小化技术平台构建
做软件开发的往往都清楚,对于新开始一个软件项目或软件开发,特别是从零开始组建软件开发团队到开发完成并交付,最开始一个重要的工作就是要搭建一个最小化的基础开发框架,基础平台和公共组件能力,这个步骤完成了才是拆分相关的功能模块,然后安排不同的开发人员进行开发和集成。
能够完成这个基础支撑平台的搭建,并确定好标准的开发框架和模式,拆分好开发模块和组件,虽然说不一定能叫一个完整意义上的软件架构师,但是已经至少具备了开发组长的能力。一个公司如果从头开始做软件项目,那么最重要的就是要有能够完成上述工作的开发组长的角色。
一个软件团队开发完成一个软件项目,哪怕是很小的项目后,一定会有这种公共组件和开发框架的积累,那么在后面接手新的项目的时候很多内容就可以复用原来已有的内容。同时在新的软件开发过程中进一步对基础支撑平台进行功能完善,能力增强。
对于善于总结和复用的软件开发团队或架构师,你就会发现后续的新项目开发工作越来越简单,基本上对于标准的技术平台和共性能力你都不用考虑,而只需要考虑业务功能的实现即可。但是有时候也有糟糕的情况,就是一些架构师太痴迷于新技术,对于基础框架和架构总是不断地更换,只要有什么新的流行技术一出来就恨不得马上应用到项目里面去,只用最新的而不是用最合适的,这种思路也极大的增加了平台开发运维成本投入,同时也很难真正形成持续化的技术积累。
记得09年做项目的时候,项目团队也是基本每年就换一个框架,类似Ext,传统的jsp,html,Flex,Tapstry5等各种框架都应用了一个遍,最终才最近几年基本固定在JQuery框架上面进行了进一步的封装和固化。里面也走了大量的弯路,投入了大量的重复开发工作量,而这些本身是在前期做好规划和选型完全可以避免的。
其实对于最小化技术平台的搭建,我们从一个独立的单系统项目和组织级的大集成项目两种场景来进行分析和说明。
独立的单个系统项目
如果是构建单个业务系统的基础平台,那么相对来就简单了很多,但是实际上做起来细节的事情仍然是比较多,初步分析也应该包括如下几个方面的事情。1. 初步的UI/UE界面风格要确定下来 2. 采用的开发框架要确定下来,具体是几层架构,数据层,前端展现等各自用什么技术都要定下来 3. 提供最基本的核心系统管理模块能力(用户,角色,授权,组织,菜单,数据字典等) 4. 基础的登录功能实现,并整理提供完整的Session对象值 5. 对于有流程需求的需要提供基础的流程引擎能力,不一定完整,但是具备间的流程审批和流转能力 6. 公共技术组件模块(提供一些类似公共函数,缓存处理,日志封装,异常封装,安全等基础能力)
实现上述内容后能够达到了一个效果就是,具体的业务需求可以划分为不同的业务功能模块,并将功能模块的开发安排给不同的开发人员去实现了,即基础底层能力已经具备,开发人员只需要实现功能并集成到整体框架里面来即可。
在这个过程中,有复用意识的架构师或开发组长一定要多做CodeReview工作,即通过Code Review来发现有哪些需要进一步抽象的公共组件和方法,并将其统一提供到公共的组件模块里面,以减少整体项目里面的各种重复代码,并提升代码的可维护性。
传统的软件开发团队做项目如何做?
就是形成上面这个基础的开发框架和平台,然后再接到新项目后,将上面的这个集成平台和公共组件内容完整的拷贝一份出来(新拉一个分支),然后再来开发新的业务子系统。这个时候平台层还很难做到完整的黑盒级别的复用,但是基本可以实现新项目开发不需要再过多考虑这部分内容。
由于会全部拷贝出来,容易引发的问题就是在新的项目中对基础组件又进行修改,导致后续基础平台存在多个维护中的版本。因为这个原因,最好的方法仍然是对于基础组件平台最终成型后,最好的方式是提供类似Jar包引入的方式进行黑盒级别的复用。以确保基础平台的版本唯一性。
开发多个子系统的大型集成项目
在这种情况下,基础平台就不是仅供一个项目使用,而是需要为多个项目提供服务,类似我们前面很多文章都谈到的平台+应用模式,企业私有云PaaS平台建设。在为多个业务子系统提供平台层能力支撑的时候,那么一个关键就是这个平台不会再内嵌在业务系统里面,而是应该独立进行建设和部署,并将平台层的能力通过接口的方式开放出来供上层应用使用。在这种模式下平台层的建设一般会包括如下内容:1. 独立的门户集成能力,提供门户,统一身份认证,单点登录能力。 2. 提供4A能力,特别是统一用户和统一授权,该能力可以集成在门户中统一提供。 3. 提供公共的流程平台和流程引擎能力,对流程建模,执行,监控数据全部集中在流程平台中管理。 4. 提供一些关键的技术服务能力(其中包括消息,缓存,日志,安全,文件处理等) 5. 整体的UI/UE标准规范制定,开发框架规范和技术制定。
其中1到3基本是一个最简单的公共支撑平台必须提供的,而对于4一开始可以先不提供,由各个业务系统自己去提供和解决。由于上述内容已经抽象到公共平台进行统一提供,因此对于上层的业务子系统开发就更加简单,具体包括的内容为:1. 提供最基本的核心系统管理模块能力(用户,角色,授权,组织,菜单,数据字典等) 2. 公共技术组件模块(提供一些类似公共函数,缓存处理,日志封装,异常封装,安全等基础能力) 3. 使用统一平台和整体应用架构制定的UI规范和开发框架进行开发
这也是我们常说的厚平台+轻应用的模式,即能够复用和共性的内容尽量下沉到平台统一提供,上层的业务应用开发只需要关注业务流程和业务逻辑实现,而不再需要关心技术的内容。如果再将SOA思路实现得更加彻底,就是上层进一步拆分为业务组件层,和业务组件组装和编排业务层。
由于底层基础支撑平台的独立,上层门户的独立,那么中间就只剩下实现各个业务功能的业务组件模块,而这些业务组件模块拆分好后完全可以实现高度的松耦合的独立自治。而这也是传统架构转为理想的微服务架构的一个标准演进路线和趋势。平台+应用的构建模式
在2013年开始写企业私有云PaaS平台建设,里面谈的最多的就是SOA+云计算,平台+应用的构建模式,同时在里面又涉及到组件化和服务化处理,技术服务提供,因此是一个厚平台+轻应用的构建方式。虽然大部分内容是在2013年写作完成,但是到现在来看这些建设和思路仍然是值得大部分企业在进行传统IT架构转型的时候考虑。
对这本书内容感兴趣的可以网上书店搜索《SOA与大数据实战:企业私有云平台规划和建设》,里面对这部分内容有详细的介绍和说明。
平台+应用的构建模式本质是云计算+SOA关键思路的最终体现,通过业务系统共性能力下沉形成云平台层的能力,同时通过SOA思想将平台层共性能力通过API或接口服务的方式开放出去供上层应用使用和组装。其次,对于当时我们谈得比较多的业务模块拆分,组件化思想则是当前主流的微服务架构思想的体现,即将传统的大单体应用拆分为松耦合的微服务模块。
一个典型的平台应该包括技术平台,数据平台,中间件平台方面的内容。
技术平台重点是提供各种典型的业务无相关的技术服务能力,其中包括了缓存,消息,日志,文件,任务,通知等,当然也可以包括我们常说的4A加流程引擎平台;而一个数据平台重点则是提供基础数据能力,如我们常说的MDM主数据平台,当然也可以是共享数据中心,提供静态+动态共享数据能力;而对于中间件平台才是传统说的PaaS技术平台,提供数据库和中间件资源池能力,提供应用托管和资源动态调度能力,从最传统的CloudFoundry等技术平台转变到当前以Docker容器+K8s为核心的轻量化容器调度平台。
如果在大的应用架构里面,上面谈的平台更多的仍然是技术平台层面,在技术平台上面则是需要我们去构建的业务应用,只是当前对于业务应用部分我们进一步进行分层,即业务应用本身是有前端应用+业务中台构建成的完整应用。
而业务中台我们完全可以理解为业务平台,你也可以理解为前面的数据平台内容没有,而都是在业务中台里面进行完整构建。中台由各个我们常见的中心组成,一般又分为两类,一类是以核心数据中心形成的中台模块,如产品中心,订单中心,客户中心等;另外一类是以业务逻辑处理为核心形成的中台模块,例如计费中心,结算中心,调度中心等。这两类中台模块提供完整的数据能力和业务规则逻辑处理能力,那么在这个业务中台上面构建的前端应用就更加轻量化。
也就是说平台+应用构建模式可以分解为 技术平台+业务中台+前端应用。
我们所有做的努力都是为了使前端应用尽可能的轻量,只有前端应用足够轻量,才能够快速地响应业务需求的变化,前端不实现具体的业务规则,不管理数据,而只是对各种中台层提供的API服务能力接口进行组装和编排,以满足完整的业务流程和需求。
把这个想明白了后,传统企业IT应用和系统的架构方法将发生重大的转变,即我们先是构建完整的技术平台,提供最基础的共性技术能力,该技术平台既包括了设计态的技术开发框架和环境,又包括了运行态的技术服务能力提供,托管和运行环境提供等。在技术平台构建完成后再进行业务中台模块的构建,中台模块构建完成后进行前端应用模块的构建。中台模块可以订购技术平台的技术服务能力
前端模块可以同时订购中台模块的业务服务能力,同时也订购技术平台技术服务能力
在基础平台搭建完成后,我们在前面讲过最好是提供一个完整的门户类应用,在彻底微服务模块化后企业就只有一个门户应用,其它应用都应该是灵活组装出来的,因此我们只需要构建一个完整的门户,那么后续我们构建的各个中台模块,前端应用模块都可以很灵活地加入到这门户中,也就是说配合微服务DevOps持续集成能力,按道理最终发布的模块可以直接发布和集成到门户里面去。
我们来举一个最简单的例子。
一个企业原来已有采购管理模块并集成在门户里面,但是没有招投标模块,我们把招投标模块作为一个独立的微服务模块进行构建,在构建这个模块的时候我们完全不用做系统管理,流程引擎,技术组件等模块,只需要考虑业务需求的实现。
同时我们首先申请需要构建一个新模块,分配独立的模块ID和账户,同时对该模块进行相关技术服务和业务服务的订购,在这些完成后进行该模块的开发和测试,在测试完成后直接对模块进行发布,发布完成后在门户上就应该形成一个新的招投标模块的人口链接。这就形成了一个完整闭环的模块动态发布和添加的过程。
要完成上面这个理想化操作可以看到需要做的内容相当多1. 集中化的云门户能力,可以集成4A模块能力在里面 2. 公共流程平台能力,提供对流程设计,运行和监控的统一管理 3. 基于Dock容器+Kubernates的PaaS轻量平台,包括DevOps的支撑平台 4. 服务总线能力,可以是轻量的微服务网关,也可以类似OpenAPI能力开放平台 5. 微服务架构开发框架和开发环境 6. 实现各种技术服务能力提供的技术平台
上面这些内容必须形成一个完整的整体,才能够形成初步的平台+应用的构建模式。
2021北京卫视跨年演唱会(时间地点门票)还有三个月的时间,我们将要迎来2022年,那么在2021年的最后一天,你们想好要怎么度过了吗?没有也没关系,这一次,就让大河票务带你们来到北京卫视跨年演唱会的现场,近距离观看你喜欢
2021杭州YOULO感恩电音之夜时间地点及门票价格(附活动亮点)蹦迪最开心!杭州YOULO感恩电音之夜即将于11月25日28日在杭州CLUBW开启,在这个迷醉的夜晚,都是快乐狂欢激情,杭州YOULO感恩电音之夜邀请小哥哥小姐姐度过超嗨的电音夜晚
2021周杰伦呼和浩特演唱会安排(时间地点门票购票)内蒙古呼和浩特大草原今年夏季将迎来华语天王周杰伦!2021周杰伦呼和浩特演唱会,大口吃肉,大碗喝酒,加上周杰伦演唱会的大合唱,简直完美!周杰伦呼和浩特演唱会时间待定周杰伦呼和浩特演
2021张杰海口生日演唱会(门票票价开售时间购票指南)想不开,想不想,计划在十月三十日举行的2020张杰生日音乐会推迟到了12月18日,这一次,张杰将探索未知,这一次将会与你一同探索未知!一起来看看2021张杰未LIVE曜北斗巡回演唱
2021黄龄成都演唱会(时间地点门票价格)她是乘风破浪的姐姐,也是形象多变的戏剧演员,她就是中国内地流行乐女歌手黄龄,2021黄龄真敢玩巡回演唱会成都站即将抵达蓉城,这个夏天,让我们相约2021黄龄成都演唱会,走进黄龄自由
2021天津YOULO感恩电音之夜(时间地点门票价格)这将是一个纵情狂欢的夜晚,点燃人们心头所有的情绪,一起摇摆吧,就在2021天津YOULO感恩电音之夜,在新年到来前夕,感受与众不同的电音氛围,和志同道合的朋友们欢聚在这个感恩主题的
2021厦门吴羽翀音乐会时间地点门票曲目年末的快乐是音乐会给的!长江钢琴艺术家2021厦门吴羽翀音乐会,携经典古典乐而来,一场诗意又浪漫的音乐之旅,在指尖下唯美且充满惊喜,让古典音乐沸腾起来!厦门吴羽翀音乐会时间2021
娱乐圈场面话文学大赏娱乐圈把人情世故这事儿,发挥到了极致。记得前两天扒姐写过欧豪,就是因为有眼力见儿,懂人情,才能从无名小足混到现在。面对镜头时,夸人这种技术活,在贵圈还拥有固定的套路与技巧。比如当你
包装明星,一场大骗局有人在娱乐圈日薪208万,有人在娱乐圈果腹尚难。假期的时候,扒姐上网冲浪,突然看到俩创造营的选手做起了兼职。这个兼职,不是直播带货钱哗哗进账那种,也不是光鲜亮丽的一分钟以万计的站台
这场婚姻大戏,她赢得好彻底治疗感情不顺的最好方式就是去赚钱。洪欣算是把这句话理解透彻了。前两天洪欣和姐妹们过50岁生日,整个人容光焕发,兴冲冲地想找蔡少芬学习理财知识。洪欣现在该拍戏拍戏,该录综艺录综艺,跟
王一博摔车,是预谋还是意外?多名车手力挺胡通明国庆长假还没结束,娱乐圈就发生了一件大事,10月7日,珠海举办一年一度的zic摩托车赛,当天气候非常适合这场竞技活动,选手们都胜利在望。去年参加过比赛的赛车手王一博也信心满满,眼看
姐姐妹妹们,拿回性感的表达权乘风破浪的姐姐走红之后,姐姐们的旧料旧图扑面而来,高频图片是张雨绮和阿朵的男人装旧照。那我就跑题一下来说说女明星的性感图片这个话题吧。高亮提示以下内容没有针对女明星说她们好不好,说
挑唆女性撕女性的劈腿男,真是头回见大家好,在端午假期前几个小瓜同时滚动,大家可能看漏了这个,本周最离奇恋情瓜徐璐张铭恩胡冰卿三角绯闻,忽然发展出了男方劈腿却挑唆一个去撕另一个的神奇走向。94年的徐璐95年的张铭恩9
摩天大楼为何高分?因为我们受够了国产剧里的女性互撕情节网剧摩天大楼有八万多人打出了8。2的高分,没看过的人都表示不可思议。本片付费超前点播早就开启,据说还闹出了网络盗版放错最后两集顺序导致有人莫名给出差评的乌龙,在此我们先呼吁大家,不
奇葩说讨论独立女性,不如定义一下独立男性上周末奇葩说的辩题叫独立女性应不应该收彩礼,这个话题其实并不新,这几年在社交网络和社会新闻里已经属于一个一点就炸的高频问题。婚姻律师在谈,情感博主在谈。网络舆论早已进展到非常激烈的
乘风破浪的姐姐淘汰名单已出?还会有新的姐姐空降吗?乘风破浪的姐姐猝不及防上线后,大家都沸腾了。姐姐们的表现,果然不负期待啊!今年最美的形容词就是姐里姐气的。网上也开始讨论,各位姐姐都是自我管理的典范,同龄男艺人普遍体型都比女艺人差
姐姐节目一火,哥哥版就跟上了?会不会变成爹味大赛啊?乘风破浪的姐姐播出前,孙红雷就在微博问怎么没有乘风破浪的哥哥们?瞧不起人吗?紧接着天天向上立马就来了个特别企划追逐梦想的哥哥。这还没完,6月19日的招商会上,披荆斩棘的哥哥项目已经
生图才是真实颜值!这皮肤这身材比例,竟然是这样奔跑吧走到哪里,都有蔡徐坤路透生图,身材比例确实很优越了。更厉害的是还有一组落水后的路透照片,这个皮肤也是太好了吧?自从蔡徐坤决定参加奔跑吧,粉丝们应该就想得到这一天,身为偶像的他
这部高分悬疑剧,创作者从头到尾都没有放弃尊严一个惊喜,今年夏天的爆款剧集不出意外就是它了国产悬疑剧隐秘的角落。口碑是显而易见的,如果不赶紧看完这部剧,最近都不敢上网,怕被剧透。每个人的朋友圈都在刷秦昊的爬山梗,究竟是为什么啦
伊能静一个人就是一个剧场秦昊隐秘的角落爆了,伊能静又有两档综艺上,两口子热度往一起加,一时间热闹非凡。(伊能静给秦昊戴假发,热搜关键词伊能静泥塑秦昊第一人。泥塑是逆苏的谐音,意为把男偶像当作女性形象来YY
乘风破浪的姐姐里有宫斗吗?如果说第一期乘风破浪的姐姐是用姐姐们的好状态惊艳到大家,那么节目播出到现在,我们就看到了许多女明星的真实状态,大家的那点小可爱和小心机都没剪掉,全放出来了。舞台上发光的姐姐们,在背
她翻车了?综艺里的学霸人设可信吗?格外特殊的2020年高考,今天终于开考了!很巧的是,在小别离小欢喜里有精彩演出的小演员们,好几个都是今年高考,一打开微博就看到了海清的祝福。黄磊也给自己从小别离到向往的生活里都视如