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

目录

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

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

复用性

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

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

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

中台定义

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

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

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

  • 前台(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,一经查实,立即删除!

相关文章

transformers Tokenizer

☆ 问题描述 Tokenizer的学习笔记(Tokenizer is all you need) Tokenizer用于数据预处理 - 分词 - 构建词典 - 数据转换 - 数据填充与截断 现在Tokenizer可以做到上面的所有事情。 ★ 解决方案 Tokenizer的基本使用 # 导入Tokenizer from transforme…

java经典面试题--进程和线程的关系/区别

进程和线程的定义以及作用 进程:进程是操作系统分配资源的基本单位,是程序的一次执行过程,它包括了程序执行的上下文环境,包括程序代码、数据、系统资源(内存、文件、设备等)以及执行状态等信息,其作用是提供一个独立的执行环境,…

【18.0】JavaScript---事件案例

【18.0】JavaScript—事件案例 【一】开关灯事件 【介绍】设置一个按钮,按下按钮触发事件,来回切换圆形图片的颜色 【分析】 图片设置:设置成圆形的图片背景颜色:设置红绿两个颜色,来回切换按钮设置:点击…

鸿蒙开发通信与连接:【@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第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…

CyclicBarrier改善CountDownLatch循环重入

CyclicBarrier 跟CountDOwnLatch非常类似,也是计时结束执行。 区别就是可以重用,也就是基数可以回到初始值。用完了不需要重新创建对象。 谁调用await就阻塞谁,这个能阻塞多个,countdownlatch只能阻塞一个。 变为0之后 再次调用…

如何集成 Spring Security 和 JWT,

关键问题: 如何集成 Spring Security 和 JWT,并实现用户认证和授权? SpringSecurity核心是一组过滤器链,JWT是生成token的机制 代码操作: 关于jwt: 1.yml配置中加入jwt配置信息 2.JWT token的JwtUtils.java--生成…

五十一、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><…

leetcode-13-[110]平衡二叉树[257]二叉树的所有路径[404]左叶子之和[222]完全二叉树的节点个数

一、[110]平衡二叉树 注意&#xff1a;注释的1、2两处得有返回值-1 class Solution {public boolean isBalanced(TreeNode root) {int result getHeight(root);return result ! (-1);}//高度public int getHeight(TreeNode node){if(nodenull){return 0;}int lh getHeight(…

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;成功入选该批次《境内深度合成服务算法备案清单》。同时入选的还有腾讯混元大模型多模态算法、支付宝图像生成算法…

个人职业规划(含前端职业+技术线路)

1. 了解自己的兴趣与长处 喜欢擅长的事 职业方向 2. 设定长期目标&#xff08;5年&#xff09; 目标内容 建立自己的品牌建立自己的社交网络 适量参加社交活动&#xff0c;认识更多志同道合的小伙伴寻求导师指导 建立自己的作品集 注意事项 每年元旦进行审视和调整永葆积极…

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

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

jquery动态效果插件之ScrollMagic

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

Linux 查看 CPU核数 及 内存

-- 核数 cat /proc/cpuinfo| grep "processor"| wc -l -- 内存 cat /proc/meminfo # 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| s…

Kotlin 变量详解:声明、赋值与最佳实践指南

Kotlin 变量 变量是用于存储数据值的容器。 要创建一个变量&#xff0c;使用 var 或 val&#xff0c;然后使用等号&#xff08;&#xff09;给它赋值&#xff1a; 语法 var 变量名 值 val 变量名 值示例 var name "John" val birthyear 1975println(name) …

__autoload 函数和sql_autoload_register函数

目录 __autoload定义 __autoload使用 sql_autoload_registe定义 sql_autoload_registe使用 __autoload定义 __autoload 函数在 PHP 5.1.0 版本中引入&#xff0c;用于在尝试使用尚未被定义的类时自动加载该类。 当 PHP 解释器遇到一个未定义的类时&#xff0c;如果存在 __…