传统系统架构与中台架构的区别和联系
扫描二维码
随时随地手机看文章
SOA架构思想
我们可以来看下SOA本身的定义,即:SOA是一种架构方法,将传统的单片式应用打破,分解为离散的、自治的业务服务,利用标准提升他们的互操作性,从而可以更好地共享、重用和组装,快速构建复合的应用从而满足业务需求的变化。在面对企业遗留IT系统架构的时候,SOA本身实际也是做两个重要的事情,其一是找到各个遗留系统共性的可复用的业务能力;其次就是在构建上层业务流程的时候通过服务组装和编排来完成。这个思想和中台思想完全一致。我们来举个例子详细说明SOA架构思想:
我们以注册一家新公司来举例,可以看到如果我们要注册一家新的公司,我们需要和银行,政府部门中的工商,税务,质量监督等多个业务部门到交道,最终完成新公司注册的完整过程。其一:找到可复用服务而对于各个业务部门就是我们说的业务组件,我们首先就是要看业务组件本身对外提供了什么标准的服务能力出来,即先把各个组件可共享,能够复用的能力识别出来。这些业务组件本身提供很多业务服务能力,在这里我们只列举一些和公司注册相关的能力,如下:其二:组合和编排服务完成业务在进行一个新企业的注册流程中,涉及到核名,办理验资报告,领取组织机构代码证等诸多的业务活动,这些业务活动都需要和上面说的业务部门(业务组件)打交道才能够完成。而要完成整个业务流程,就是将上面业务部门暴露的服务能力基于业务活动的流转进行组装起来,这样就完成了一个完整的业务,如下:可以看到完成整个企业注册业务流程,本身就是底层的接口服务能力的组合和组装。如果注册流程中增加了一个验证企业信用要求,那么我们也很容易在原来的业务流程中增加一个活动节点,该活动节点调用银行的信用验证服务能力接口即可。即通过接口服务的灵活组合,组装,能够很容易的响应业务流程的变化。
SOA和ESB总线的关系
简单来说,SOA是一种架构思想,这种架构思想核心是找到服务,组装编排服务。对于找到的服务我们希望统一进行管理,那么ESB就是实现服务管理和治理的一个技术平台。也就是ESB企业服务总线是实现SOA架构思想的一个关键平台。如上图,找到和管理服务你可以借助ESB服务总线能力来完成,而组装和编排服务你可以借助BPM管理软件来完成。而ESB BPM也是我们常说的实现SOA架构思想的关键平台。没有使用ESB能否叫实现SOA架构?当然可以,只是遗留系统暴露的接口服务没有进行统一的管控和治理,也就是说对于接口服务的治理水平会比较弱,但是只要你暴露的接口服务是粗粒度和可复用的。同样可以共享给上层业务系统或应用使用。正如没有使用BPM,同样也可以实践SOA编排思想,只是你需要通过自己写代码去编排服务,而不是通过BPM软件去可视化编排服务。反之同样的道理,不用简单理解使用了ESB就是SOA架构。比如你使用了ESB,接入了一堆没有经过标准化,不符合粗粒度特点的接口,这些接口本身混乱也没有任何服务价值。上层新业务开发也不能使用这些接口服务,那么这个时候你的ESB就仅仅是一个接口平台,也没有实现任何的SOA架构思想。类似的道理还有我们做微服务也一样,不要简单的认为使用了SpringCloud框架就是微服务了,必须要考虑微服务类似轻量交互,松耦合等关键思想是否实现。ESB总线需要同时考虑解决集成和解耦两类问题由于当前ESB总线产品很多是由原有的EAI和消息中间件产品发展而来,因此更多的强调的是服务或消息集成,而弱化了SOA更加重要的一个能力即服务共享。而实际上SOA需要解决服务 集成两方面的问题。
- 集成:解决的是业务和流程上的协同问题,服务不一定就能复用
- 复用:解决的是底层共有组件模块提取后能力开放问题,重点是可复用
举例来说,一个采购系统导采购订单给ERP系统,这个接口往往并不能复用,但是解决了跨系统集成问题;另外对于MDM主数据提供的供应商查询接口服务,这个接口服务本身就是数据能力平台化后提供出的共享数据服务能力,这个服务可以被外围的SCM,ERP,CMS多个业务系统使用,既解决了系统间集成,更重要的解决了服务重用问题。你也可以理解,对于服务重用问题的解决,更多都是伴随着共性能力下沉产生的。然而当前大部分企业将SOA简单理解为了ESB和集成平台,更多用SOA去解决集成的问题,而忘记了SOA架构思想的本质仍然是共性业务能力下降,上层应用灵活编排。
企业中台和中台思想
对于中台概念,大家都比较清楚是阿里最早提出了大中台,小前台的说法。阿里巴巴 “大中台、小前台”机制的提出,某种程度上是从传统的事业部制向准事业部制的转换。对于中台核心价值可以总结为关键的两点,第一点就是灵活敏捷支撑业务。就阿里巴巴而言,“前台”就是贴近最终用户/商家的业务部门,包括零售电商、广告业务、云计算、物流以及其它创新业务等;而“中台”则是强调资源整合、能力沉淀的平台体系,为“前台”的业务开展提供底层的技术、数据等资源和能力的支持,中台将集合整个集团的运营数据能力、产品技术能力,对各前台业务形成强力支撑。前台和中台本质上是工作分工的问题。比如,某部门要开发一款App,是部门内部(大前台)自己组织一套技术、产品、设计、运营的团队,还是集团为其提供资源(大中台),由专门的技术团队来帮助其开发、设计产品等等。所以说, “小前台 大中台”的运营模式,就是美军的“特种部队(小前台) 航母舰群(大中台)”的组织结构方式,以促进管理更加扁平化。十几人甚至几人组成的特种部队在战场一线,可以根据实际情况迅速决策,并引导精准打击。而精准打击的导弹往往是从航母舰群上发射而出,后方会提供强大的侦察火力后勤支援。所以如果中台没有办法承接前线的需求,前线就会不认可它服务的价值。第二点就是通过中台来实现进一步的资源整合复用,降低成本
阿里巴巴近年来迅速扩张、员工众多,所以可能会存在管理不善、效率低下、各事业部各自为政等问题。为了解决以上问题,阿里提出了“大中台,小前台”机制。“小前台 大中台”的运营模式促使组织管理更加扁平化,使得管理更加高效,组织运作效率提高,业务更加敏捷灵活。其“中台”的设置就是为了提炼各个业务条线的共性需求,并将这些打造成组件化的资源包,然后以接口的形式提供给前台各业务部门使用,可以使产品在更新迭代、创新拓展的过程中研发更灵活、业务更敏捷,最大限度地减少“重复造轮子”的KPI项目。前台要做什么业务,需要什么资源可以直接同公共服务部要。大家看到这两点,是否觉得跟传统企业内部信息化建设经常说到的SOA架构思想很类似。
微服务本质是单体大拆小
接着再来看下微服务,谈微服务一定是和单体应用对比。微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。我们可以先看下从单体应用到微服务架构的变化图。从上面图里面我们可以清楚的看到单体转到微服务后带来的两个核心差异。- 一个单体变多个微服务模块,而且从数据库到逻辑层到前端完全独立
- 微服务模块间通过Http Rest接口高效集成协同
题外话:经常看到有人将业务逻辑层理解为中台,这个也是错误对比,这两个不是一个层面的概念。中台模块有业务逻辑层,前台模块也有。要明白不是所有业务逻辑都是共性和可复用的,对于不可复用的业务逻辑仍然是在前台模块中,而非中台。
中台=SOA思想 微服务
在了解了前面讲解了概念后,我们看到中台思想实际上SOA思想和微服务两者的融合。为何这样讲,我们来讲中台思想和中台实现两个层面来说。- 共性可复用业务能力下沉,并提供给前台应用使用=》SOA思想
- 共性能力构建时候尽量大拆小,可扩展,松耦合=》微服务思想
从传统架构ESB到中台架构里面的API网关
对于中台里面下沉的共性业务服务能力也需要统一向外暴露,这个时候就涉及到OpenAPI能力开放平台或API网关,那么首先来解释下API网关。如何给API网关一个定义?简单来说API网关就是将所有的微服务提供的API接口服务能力全部汇聚进来,统一接入进行管理,也正是通过统一拦截,就可以通过网关实现对API接口的安全,日志,限流熔断等共性需求。如果再简单说下,通过网关实现了几个关键能力。- 内部的微服务对外部访问来说位置透明,外部应用只需和网关交互
- 统一拦截接口服务,实现安全,日志,限流熔断等需求
- 大量适配器实现对遗留系统的遗留接口适配,多协议转换能力
- 进行数据的复制映射,路由等能力
- 非中心化架构-》走微服务里面的服务注册中心进行接口交互
- 中心化架构-》走网关进行接口服务暴露和共享交互
如果一个单体拆分为微服务后,完全不需要和外部应用打交道,也不需要共享自己的接口能力,那么这个微服务体系里面就不需要用API网关,仅仅使用服务注册中心即可。通过服务注册中心实现完全的去中心化和接口调用更高的性能。再回到我讲ESB的时候谈到解决两个层面的问题,一个是集成,一个是共享。那么转移到微服务架构体系后,即集成的问题通过非中心化架构完全可以解决,而对于共享问题仍然需要轻量的ESB总线或API网关来解决。
业务中台,数据中台,技术中台
现在中台的概念太多,导致大家在理解中台的时候很容易出现偏差。技术中台建议叫技术平台首先说明下我个人认为中台更加偏向于业务概念,可以说包括了业务中台和数据中台,但是尽量不要说技术中台。技术中台更多的应该理解为技术平台更加合适。技术平台理解也很简单,当你在开发中台各个微服务的时候,你涉及到各种共性技术能力的需求,这里面既包括了类似消息,缓存等技术服务能力,也包括了微服务开发框架和运行环境,还包括了类似DevOps的持续集成和交付能力。这些能力是你进行中台微服务开发的基础,让你开发更加高效。在我最早开始做企业私有云PaaS平台规划建设的时候,就提出了业务能力组件化,组件能力服务化的平台 应用的构建模式。而这也是现在我们谈到的中台 微服务思想是完全一致的。当时我们在我们整体规划里面的PaaS平台就可以看作是技术中台的内容,如下图:该书近期也将由清华大学出版社出版,也是我们多年大型集团企业SOA和PaaS平台建设实施经验的积累,欢迎大家阅读和指正。而对于当前的技术中台,其核心实际上就是我们最近几年谈的比较多的云原生解决方案,因为云原生解决方案刚好覆盖了微服务 DevOps 容器云几个关键内容。云原生=微服务 DevOps 容器云
对于Cloud Native翻译为云原生,是Matt Stine提出的一个概念,它是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。云原生应用程序开发通常包括DevOps,敏捷方法,微服务,云平台,Kubernetes和Docker等容器,以及持续交付,简而言之,每种新的和现代的应用程序部署方法。微服务架构 容器化 DevOps 将成为后续企业信息化转型的主流趋势。在构建企业的技术中台的时候完全可以参考云原生解决方案来进行构建。从传统架构到中台架构我们可以简单做下对比映射,即传统架构中的业务系统对应到新架构里面的业务中台,传统架构里面的BI系统对应到新架构里面的数据中台。这个对应当然不准确,里面存在差异和区别,也是我们要重点说明的地方。业务中台和数据中台的区别对于业务中台相对来说比较好理解,简单一句话就是共性业务能力下沉形成的多个微服务化的业务能力提供中心供上层应用使用。而对于数据中台,我们也可以总结为一句话就是,把数据变成资产并服务于业务的机制。数据来源于业务并反哺业务,不断的迭代循环。数据中台,类似业务中台定义,如果也一句话定义的话就是共性数据能力下沉和整合,并以数据服务访问对外提供可复用的能力。数据中台是实现业务中台核心共享数据的跨域整合,再通过加工后提供整合后的数据服务能力。这里面有两个重点。
- 第一数据要跨域整合
- 第二数据要加工处理后再提供增值服务能力
- 业务中台必须有是核心业务支撑,数据中台可以无,是增值能力提供。
- 业务中台是自己产生业务数据,数据中台是采集业务数据再加工。
- 业务中台不再做底层数据交换和集成,这部分能力全部转到数据中台。
- 一套底层的数据技术平台(可以是大数据平台,也可以是数据集成平台)
- 一套数据资产(业务层面的内容,实际数据,数据模型,算法装进来了)
- 一套数据服务能力提供和共享
- 一套数据管控和治理标准规范体系
- 主数据在传统架构里面属于业务系统,在中台和微服务架构下可能会被拆分为多个微服务。即原来主数据管理的物料,供应商,人员可能会拆分中台架构里面的物料中心,供应商中心,人员中心。
- 主数据在整个架构演进后,会转变为业务中台各个中心。
- 主数据在传统架构里面由于存在数据共享模式,因此一般也包括ETL,数据集成等功能。但是转到中台架构后,由于在业务中台核心是数据不落地实时开放共享,因此已经不存在这种集成点,即老架构里面的【1】这个点在中台架构中已经不存在。
- 原来主数据系统存在模型数据全域视图查询能力转移到数据中台实现。