从复用性角度阐述中台建设

目录

  • 复用性
  • 中台定义
  • 深思中台建设
    • 产品线形态
    • 何时演变
    • 中台能力
    • 落地中台
  • 业务中台架构
  • 总结

技术学习永不止步,最近也是看了很多关于架构设计相关的专栏,慢慢总结出来一部分知识,代入自己的思考与理解,以及结合并反思自己之前公司的架构设计经验,发现很多方法论适用场景,也希望能够解决小伙伴们的一些疑惑以及感谢大佬们也给我指点迷津,站在巨人的肩膀上成长~

复用性

首先谈一下复用性的理解:
复用性是指在系统设计和开发过程中,通过抽象和模块化设计,将通用的功能和逻辑提取出来,以便在多个不同的业务场景或技术场景中重复使用。

结合日程工作中我们能够接触的复用场景会更清晰的理解,并且可以快速切入后续中台的定义,从小到大,比如:代码复用—技术组件复用—业务实体复用—业务流程复用—产品复用

意义:复用性是系统设计中的重要原则,通过技术复用和业务复用,可以提高开发效率,降低开发成本,确保系统和业务的一致性和稳定性。

中台定义

中台核心定义:企业级能力复用平台,简单直接明确定义,也符合这篇文章的主题。
下面分别拆分阐述一下这个定义:

  • 企业级:定义中台的范围;企业级侧重说明中台处理的问题在于企业级别,即至少多条业务线或者服务多个前台产品;
    因此,中台建设,一定需要跳出单条业务线,站在企业整体视角来审视业务全景,区分开了单系统的服务化与微服务;
  • 能力:定义中台主要承载的对象;不同企业的中台能力均不相同,可以满足用户不同层面的需求,即差异化竞争力;
  • 复用:定义中台的核心价值;复用,是中台更加关注的目标,也是业务驱动和用户驱动的;
  • 中台的衡量标准
    “可复用性”和“易复用性”是衡量中台建设好坏的重要指标;
    “业务响应力”和“业务满意度”是考核中台建设进度的重要标准。

用一张图解释一下,前台、后台、中台之间协调关系:

  • 前台(Small Front Platform)是指直接面向用户的具体业务应用(面向C端应用,比如:微信、淘宝等),通常是轻量级的、灵活的、快速迭代的。前台业务应用主要负责与用户交互,提供具体的业务功能。
    从开发角度可以将其理解为“前端应用服务+后端应用服务”,即不仅仅指前端,还包含与前端配套的服务端;
  • 后台:企业内部系统,比如ERP、CRM、仓库管理系统等,主要面向企业内部人员使用。

从上面的图中可以清晰看到前台需要快速响应,而后台企业内部流程基本不变,稳定不需要随意调整。

中台建设能力

  • 中台建设,根本上是为了解决企业响应力困境, 通过对后台内部基础设施的包装,为前台提供全方位的支持;
  • 中台建设,提供一个中间层来适配前台与后台的配速问题,打通并顺滑链接前台需求与后台资源,帮助企业从整体上不断提升用户响应力。
  • 中台建设,不仅仅是前后台之间简单的适配器,中台本身也会有业务数据,完整的业务规则;与此同时,中台与前台构成C端业务的小闭环,支持业务的快速创新,等待业务模式验证后,中台与后台彻底打通,构成业务的大闭环;

深思中台建设

从复用性角度理解中台,可能会更直接一点,最简单的就是日常开发过程中代码的抽象设计思维,只不过从更高层面理解。
哪什么时候考虑落地中台建设呢?从上面的中台的定义也可以清晰表明,中台要基于多条产品业务线抽象设计。
故随着企业业务从0到1再到N条业务线时,则需要考虑中台建设。但是此过程中,我们最好能够在设计中保持SOLID原则,也为了方便后期服务治理,这是面对公司从初始开始,但是面对已经有N条业务线的企业,则另当别论啦~

产品线形态

一、川字型结构
独立地建设新业务线,构成川字型结构;
这种结构比较常见,企业N条业务产品线,各干各的业务,重复建设业务功能,系统间大量的代码复制,浪费资源;

二、山字型结构
将各个业务线中相同的核心逻辑抽取出来,通过抽象设计,实现通用化,共同服务于所有业务线的需求,构成山字型

说明
山”字型的上面三竖,代表各个业务线定制的应用;
最底下一横,代表通用层,它把各个业务线有机粘合在一起,实现了业务逻辑和业务规则的统一。

优点:达到一处建设,多处复用,一处修改,多出变化,高程度复用。

何时演变

即何时从川字型转变成山字型???主要从以下方面考虑:

  • 业务线的数量:业务线越多,意味着重复建设的成本会更大,故第三条业务线,开始考虑抽象设计;
  • 业务线的相似度:相似度越高,意味着业务线之间有更多类似的逻辑;

中台能力

中台通过实现基础业务的平台化,实现了企业级业务能力的快速复用。

  • 变化速度:企业基础业务相对固定,具体上层业务场景相对多变的

  • 数量:基础业务数量有限,具体上层业务场景是无限的
    中台的建设,可以通过有限而比较固定的基础业务,来满足无限而快速变化的上层业务场景。

  • 业务角度:中台收敛了业务场景,统一了业务规则

  • 系统角度:中台统一对外提供标准的接口,屏蔽底层服务的复杂性

  • 数据角度:中台收敛数据,统一使用相同的数据模型以及数据库存储

落地中台

经过之前的学习理解,概述:梳理企业目前现有的业务线,依据领域驱动原则,拆分功能模块,聚合领域服务(即微服务或者基础服务),最终形成平台化服务;
中台建设,需要建立在微服务设计的基础上,故引发思考,如何将现有单体服务逐步拆分成微服务设计呢????
以电商平台为例,在微服务架构下,我们拆分出订单服务、商品服务、库存服务等;而在中台建设中,会将这些微服务升级为订单中心、商品中心、库存中心等;
升级前后的区别

  • 服务中心更强调体系化:业务通用能力、系统运营能力、业务运营能力;
  • 服务中心围绕自身核心业务,自成体系、业务内聚,成为一个微内核;

典型的业务中台架构图如下:

  • 通用聚合服务:对基础业务进行组合,提升业务能力的易用性(可以将其理解为BFF层);
  • 通用基础业务平台:基础的业务能力实现;
  • 通用中间件平台:通过技术手段保证业务中台的稳定性

总之,中台是微服务的升级。即松散的微服务—>共享服务体系—>中台。

业务中台架构

典型的企业中台架构设计是什么样的???
如图所示:

  • 渠道&应用
    整个系统的对外部分;包括了各个应用的前端:App、小程序、公众号等等;
    以及提供对部上下游企业调用的open API;

  • 应用平台
    具体应用的母体;包括各个应用的服务端:小程序服务端、APP服务端等,即聚合基础服务能力,可以做流程编排和信息聚合;
    网关:位于服务端和前端之间,实现前后端隔离,负责外部访问的安全验证和监控、以及内外部请求的路由和消息格式转换;

  • 业务中台
    中台架构的核心;包括一系列的通用基础服务、以及上面的通用聚合服务和下面的技术平台;

  • 后台
    适配插件:用于连接内部系统中台基础服务;插件是定制的,具体和每个企业的后台系统有关。
    企业内部系统:企业的IT基础设施;

综上:
中台代表了企业核心的业务能力,它自成体系,能够为 C 端的互联网场景提供通用的能力,并通过各种插件和后台打通。

通过构建这样一系列的共享服务,我们就实现了各个渠道业务规则和业务数据的统一管理,
最终我们落地了一个强大的业务中台,可以很方便地扩展各个业务,实现企业整体业务能力的复用。

借助总的中台架构图,我们一起看下具体的业务场景是怎么样的呢?以外卖下单为例

特殊说明

  • 应用平台层:可以理解为通用聚合服务,聚合多服务之间的功能;
  • 订单控制服务(Order Control Service,OCS),负责订单逻辑的编排以及前后台之间的状态同步,你可以把它看作是基础服务之上的聚合服务。

思考,应用端是否可以跨过应用平台层,直接调用业务中台服务呢???

  • 不推荐,对于外部过来的请求,我们需要提供一些非业务性的功能,比如签名验证,协议和参数适配(外部的rest和内部的rpc);

  • 中台只是提供基础业务功能,前端过来的请求是代表一个业务场景,需要同时用到多个服务的功能,比如前台下单,需要用到用户服务,商品服务,库存服务,订单服务等,这不合适直接在前端做功能整合。

总结

  • 中台是从企业的业务战略高度,来考虑企业 IT 系统的建设,它的目标是实现企业整体业务
    能力的复用。

  • 从落地的角度看:
    对于互联网企业而言:大量的微服务做基础,往中台转是改良;
    目的是更好地衔接前台和后台,实现业务的快速创新;

    对于传统企业而言:内部有大量的遗留系统,落地中台是革命;
    目的是盘活老系统,全面实现企业的数字化转型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发通信与连接:【@ohos.nfc.tag (标准NFC-Tag)】

标准NFC-Tag 本模块主要用于操作及管理NFC Tag。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import tag from ohos.nfc.tag;tag.getNfcATag getNfcATag(tagInfo: TagInfo): Nf…

Codeforces Global Round 26 E. Shuffle(树形dp)

题目 思路来源 乱搞ac 题解 注意到提出一个点之后, 后面第二次提出的点、第三次提出的点, 如果后续成为叶子,一定不相邻,所以等价于求原树的最大独立集 但是第一次提出的叶子可以和第二次提出的叶子相邻 这个看最后一个样例…

Java按照GBK拼音顺序对汉字排序

最近遇到一个需求,需要对一个列表数据的特定字段,比如姓名,初看应该不难,但是有什么比较快速便捷的方法,因为是Java的项目,所以想到比较火的工具框架Hutool,在Hutool官网 找到一个比较器类Pinyi…

python离线安装第三方库、及其依赖库(单个安装,非批量移植)

文章目录 1.外网下载第三方库、依赖库2.内网安装第三方库3.补充附录内网中离线安装python第三方库,这时候只能去外网手动下载第三方库,再传回内网进行安装。 问题是python第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…

五十一、openlayers官网示例Layer Min/Max Resolution解析——设置图层最大分辨率,超过最大值换另一个图层显示

使用minResolution、maxResolution分辨率来设置图层显示最大分辨率。 <template><div class"box"><h1>Layer Min/Max Resolution</h1><div id"map" class"map"></div></div> </template><…

Java 8 Stream API介绍

Java 8引入了Stream API&#xff0c;这是对集合框架的一种增强&#xff0c;它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段&#xff1a;中间操作和终端操作。中间操作返回的是一个新的Stream&#xff0c;可以链式调用多个中间操作…

基于Windows API DialogBox的对话框

在C中&#xff0c;DialogBox函数是Windows API的一部分&#xff0c;它用于在Win32应用程序中创建并显示一个模态对话框。DialogBox函数是USER32.DLL中的一个导出函数&#xff0c;因此你需要在你的C Win32应用程序中链接到这个库。 #include "framework.h" #include …

网信办公布第六批深度合成服务算法备案清单,深兰科技大模型入选

6月12日&#xff0c;国家互联网信息办公室发布了第六批深度合成服务算法备案信息&#xff0c;深兰科技硅基知识智能对话多模态大模型算法通过相关审核&#xff0c;成功入选该批次《境内深度合成服务算法备案清单》。同时入选的还有腾讯混元大模型多模态算法、支付宝图像生成算法…

【MySQL】(基础篇十五) —— 增删改数据

增删改数据 本文介绍如何利用SQL的INSERT语句将数据插入表中。以及如何利用UPDATE和DELETE语句进一步操纵表数据。 数据插入 INSERT是用来插入&#xff08;或添加&#xff09;行到数据库表的。插入可以用几种方式使用 插入完整的行&#xff1b;插入行的一部分&#xff1b;插…

jquery动态效果插件之ScrollMagic

ScrollMagic 是一个强大的 JavaScript 库,可以帮助开发者在页面滚动时触发各种动画效果。它支持复杂的滚动交互,非常适合制作富交互的网页。 这里他使用了ScrollMagic的几种滚动效果: 视差滚动效果:页面上的一些元素在滚动时会产生视差滚动效果,即元素以不同的速度移动,营造出…

C++初学者指南第一步---10.内存(基础)

C初学者指南第一步—10.内存&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---10.内存&#xff08;基础&#xff09;1.内存模型1.1 纸上谈兵&#xff1a;C的抽象内存模型1.2 实践&#xff1a;内存的实际处理 2. 自动存储3.动态存储&#xff1a;std::vector3.1 动态内…

Redis缓存的一些概念性问题

目录 缓存模型和思路 缓存更新策略 数据库和缓存不一致 缓存与数据库双写一致 缓存穿透 缓存雪崩 缓存击穿 速度快,好用&#xff0c;内存的读写性能远高于磁盘,缓存可以大大降低用户访问并发量带来的服务器读写压力 缓存模型和思路 标准的操作方式就是查询数据库之前先…

C语言 图的基础知识

图 图的基本概念图的存储方法**邻接矩阵**&#xff1a;邻接表 图的遍历深度优先&#xff08;DFS&#xff09;广度优先&#xff08;BFS&#xff09; 最小生成树Prim算法Kruskal算法 最短路径问题 图的基本概念 图的定义&#xff1a; 图是由顶点的非空有穷集合与顶点之间关系&am…

Sping源码(九)—— Bean的初始化(非懒加载)— Bean的创建方式(factoryMethod)

序言 前面文章介绍了在Spring中多种创建Bean实例的方式&#xff0c;包括采用FactoryBean的方式创建对象、使用反射创建对象、自定义BeanFactoryPostProcessor。 这篇文章继续介绍Spring中创建Bean的形式之一——factoryMethod。方法用的不多&#xff0c;感兴趣可以当扩展了解。…

【Git】--Part3--远程操作 配置 标签管理

1. 远程仓库 Git 是分布式版本控制系统&#xff0c;同⼀个 Git 仓库&#xff0c;可以分布到不同的机器上。怎么分布呢&#xff1f; 最早&#xff0c;肯定只有⼀台机器有⼀个原始版本库&#xff0c;此后&#xff0c;别的机器可以 “克隆” 这个原始版本库&#xff0c;⽽且每台机…

JEnv-for-Windows 详细使用

管理员执行jenv.bat文件 执行正常, 接下来就是按照官网的命令就行了 文件下载地址 https://download.csdn.net/download/qq_43071699/89462664 JEnv 是一个强大的Java版本管理工具&#xff0c;允许开发者在多个Java版本之间轻松切换。以下是一些常用的JEnv命令&#xff0c;这…

118 杨辉三角

题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 解析 就是模拟法&#xff0c;没有什么特殊的…

一文教你在centos 7.9中安装mysql5.7(超级详细)

##red## &#x1f534; 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff0c;雄雄的小课堂。 一、前言 每当新来一个服务器之后&#xff0c;习惯性的都会安装一个宝塔面板&#xff0c;不为别的&#xff0c;就为了装环境方便点儿&#xff0c;比如常用的jdk,m…

C++学习(23)

#学习自用# union 共用体和结构体相似&#xff0c;但是共用体一次只能占用一个成员的内存&#xff0c;所有成员共用同一地址。 #include<iostream> using namespace std; union A {int int_val;float float_val; }a; int main() {a.float_val 2.0f;cout << a.f…

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)

热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务&#xff0c;能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理&#xff0c;这些热门高效的免费API提供了强大的功能和高效的性能&am…