高内聚低耦合通俗理解_抱歉,请不要把“业务逻辑层”理解为“业务中台”

在IAS2019中台架构峰会上,我曾与一位年轻帅气的技术小伙来了一番有趣的对话。

因为和朋友有约,所以我在现场互动结束之后,就急匆匆地跟其他嘉宾打了声招呼,抱着笔记本冲出了会场。

但没想到刚到电梯口,却被一位帅小伙迎面拦住。

他朝我摆了摆手,开口说:“王老师,耽误你点时间,想请教一个技术性问题可以吗?”

我假装谦虚:“太客气了,请教不敢当,大家一起探讨探讨。”

随即他从背包中拿出手提电脑,打开一份PPT,并指着其中的几张图问我:“你看,这是我们公司的业务中台,麻烦你给评价评价。”

97a4823a7e4ce0166a7d72e94a64cec8.png

图1. 他们的 “业务前/中/后台” 是这样的

caf4b70687aee0f65d747f30fad9d7d7.png

图2. 他们 “业务前/中/后台” 的功能定义

5fde7b50bb20844165b838d7d6d57057.png

图3. 他们 “业务前/中/后台” 的组织结构

在听完他的叙述之后,我忍不住笑出声来,并对他说:“小伙子,你这哪是中台啊?!这分明是三层架构(3-Tier Architecture) 啊……”

从表情上看,我感觉他有点懵圈,小声问了一句:“三层架构?MVC吗?”

我摇了摇头,给他从头到底普及了下3-Tier Architecture,并且强调了界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)的分层目的是为了“高内聚,低耦合” 。

他听完摇了摇头,似乎不太理解,并追问:“那么 ‘业务逻辑层’ 与 ‘业务中台’ 的区别是什么呢?”

我把他拉到一旁的咖啡厅,找了个座,并在网上翻到一张3-Tier Architecture的结构图,然后对他说:“说实话,虽然单纯通过几张图和口述,我无法了解你们的业务背景与现状。”

348812e7935d9cb40f4b48aa46e17881.png

图4. 3-Tier Architecture

“但你所描述的那个 ‘业务中台’ ,最多只能算是一个软件体系架构中的业务逻辑层,压根跟 ‘中台’ 没半毛钱关系。”

他听完,一边摇头,一边说:“不对啊,我们技术老大可不是这么说的……”

我很好奇,忙追问他。

按他的说法,在他们公司内,大家都认为中台是一种松耦合结构的架构模式,主要是用来解决层与层之间的依赖问题的。

也就是说,他们公司的 “业务中台” 价值主要体现在以下几点:

  • 把标准化的服务下沉到 ”业务后台”,把非标准化的服务上浮到 “业务中台”。

  • 有了 ”业务后台”,一旦上层的设计改变,对于其调用的底层而言没有任何影响。

  • 大部分的业务需求只需要捣腾 ”业务中/前台”,似乎成本更低,效率更高了。

听完他的这番言论之后,我愣了近十秒钟,一时间不知道说些什么。大脑给我的第一反应是把一堆 “吐槽” 喷在他脸上,但最终理智还是战胜了冲动。

我朝他微微的笑了笑,说了一下我的看法。

就像我在 #请你们不要调侃中台,它是我们赖以生存的镰刀#中讲述的那样,业务中台也好,技术中台也罢,它并不是一种技术实现,而是一种技术战略。而业务逻辑层可不是战略,它只不过是专门用来处理软件业务需求的一层,是用来实现设计模式及组件技术的一种手段。

21d9a4d35773c7cf05ebe2d940799e8b.png

说到这里,我还特地跟了一句:“不要被热点名词所迷惑,即使它处在体系架构中的中间位置,也不应该把它称为 ‘中台’。”

“我个人觉得,你们把这个部门称为 ‘自定义服务事业部’ 更为贴切。”

说到这里,我特地停顿了下,喝了口咖啡,继续说。

“当然,刚才叙述的观点主要来源于我自己的实践经验,所以听上去会显得比较武断或片面,但中台战略的兴起在国内主要来自于阿里巴巴的中台战略思想。”

“在我们系统的演化过程中,我曾多次阅读 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》这本书,在谈到构建业务中台基础的部分,有过这样一些描述,我觉得说的挺到位。”

说完,我打开阅读笔记给他看。

……

构建业务中台的基础 —— 共享服务体系。

松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新。

反观企业需要通过ESB组件打通不同系统间的交互,实则是因为相关业务领域的业务和数据被以“烟囱式”方式建设的系统分割到了不同的系统中。

当越来越多的系统都采用自建“轮子”的方式满足自身系统对这部分业务的需求时,之前的这个服务慢慢就少有人问津,当有更好的服务出现或该服务完全满足不了当前业务发展的要求时,也就是这个服务离开历史舞台的时刻。

1、传统组织结构:我们可以将整个技术团队看做成一个组合精密的流水生产线,源源不断的业务需求进入到这条流水线后,经过流水线上各专业人员的贡献,最终将业务需求以系统的方式输出这条流水线。

2、FeatureTeam:不同角色的人员(架构师、开发人员、UED工程师等)组建成了一个新的组织,每一个这样的组织都针对某一服务中心提供持续的服务能力开发及运维,更准确说是基于这一服务中心的业务能力进行“运营”。

……

看完这段文字,我问他:“你瞧,根据阿里中台战略的定义,再结合到刚才的叙述,你发现了什么?”

他摇了摇头,看着我。

在我看来,你们那个 “业务中台” 是 用来做服务编排的,作用是助力业务的快速响应和创新,而你们那个 “业务后台” 是松耦合的服务带来业务的复用,杜绝重复造轮子的现象。

“当然,这样的说法不仅不科学,而且有点死拉硬拽的味道,但我觉得两者之间的道理是相通的。”

听完我的话,这小伙子突然站了起来,冲着我说:“王老师,是不是我们老大在忽悠我们啊?那么长时间,很多人之所以留在这破公司卖命,就因为一直觉得自己做的是行业先进技术啊!”

我也站了起来,并拍了拍他的肩头示意他冷静,并让他坐下。

随后,我用缓和了下语气对他说:“首先,我不仅没有资格来对你们公司指指点点,更没有底气在仅知道这点皮毛信息的前提下来对某某某说三道四,这跟耍流氓没什么区别。”

“我只想说,中台,的确是在现阶段来看当下最热的一个造势名词。既然是造势名词,这就意味着可以成为企业重要抓手和杠杆,可大干一番。”

“说白了,就是在很多时候,这些热点或是概念,它主要的作用是用来对齐思想,找到战友的一种方式。”

4918788a929c928c1613f6a8d7a92657.png

我常说,一切抛开业务、组织及历史债的架构设计都是耍流氓。

那么啥叫好架构?啥叫牛逼的技术老大?

在我看来,在国内的大部分企业中,如果有谁能用一种理念团结人心,再加上能用一套能落地的实战方式,最终满足公司在业务发展上的需要,那就可以了。

很显然,中台这个词,似乎是这几年里最适合的粘合剂。

至于你家的数据中台都有哪些标准?他家的业务中台对人才的需求标准都有哪些?还是交给学术界的朋友们去琢磨吧。

对我们来说,意义并不大。

END

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

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

相关文章

ofstream的使用方法--超级精细。C++文件写入、读出函数(转)

ofstream的使用方法ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类…

org-mode入门教程

org-mode 入门教程By Z.H. Fu切问录 www.fuzihao.orgorg-mode 入门教程 org-mode是Emacs提供的一个强大的编辑模式,可以用于做会议笔记以及制作各种待办事项(GDT)。其语法类似于Markdown但是提供了比Markdown更多的操作,再加上Ema…

ansible 配置文件优先级

优先级如下: 1.首先找执行ansible命令的当前目录中,是否有 ansible.cfg文件 ./ansible.cfg 2.如果找不到,再 找 当前用户的家目录下是否有 .ansible.cfg ~/.ansible.cfg 3.如果还找不到,就找 /etc/ansible/ansible.cfg /etc/ansible/ansible.…

如何对web.config进行加密和解密

http://blog.csdn.net/jf_jifei/article/details/6527390 在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序…

java 爬虫_Java原生代码实现爬虫(爬取小说)

Java也能做爬虫。现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择,Java成熟的爬虫框架很多,下面给大家展示一个使用Java基础语言编写的爬取小说的案例:实现功能:爬取目标网站全本小说代码编…

JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...

Location对象 location用于获取或设置窗体的URL&#xff0c;并且可以用于解析URL。 语法: location.[属性|方法] location对象属性图示: location 对象属性&#xff1a; location 对象方法: 任务 在右边编辑器script标签内&#xff0c;获取当前显示文档的URL,并输出。 <!DOC…

ansible inventory 主机清单配置

文章目录 环境介绍 ansible ssh配置 操作测试/etc/hosts 配置Inventory文件 主机与组主机变量、组变量把一个组变成另一个组的子成员变量太多了&#xff0c;不好管理怎么办&#xff1f;来&#xff0c;分文件定义主机变量和组变量 操作环境介绍 为了练习方便&#xff0c;本次使…

python(26)查看文件的大小

有时候&#xff0c;在写文件的时候需要判断文件的大小&#xff0c;或者删除空的文件 import os from os.path import join, getsizedef getdirsize(dir):size 0Lfor root, dirs, files in os.walk(dir):print filesfor name in files:print nameprint join(root,name) #输出文…

java 数据结构_Java版-数据结构-队列(数组队列)

前言看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友&#xff0c;都给予了笔者一致的好评&#xff0c;在这里笔者感谢大家的认可&#xff01;&#xff01;&#xff01;由于本章介绍的数据结构是 队列&#xff0c;在队列的实现上会基于前面写的 动态数组来实现&#xff0c…

ssh 介绍 和使用 程序不挂起

目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行…

corpus  academic writing

http://micusp.elicorpora.info/ http://corpus.byu.edu/coca/ http://rcpce.engl.polyu.edu.hk/RACorpus/转载于:https://www.cnblogs.com/gisalameda/p/5590034.html

vim命令练习题。

练习题。1. vi 与 vim 有什么区别呢&#xff0c;它们之间有什么关系&#xff1f;答&#xff1a;vi 和vim最大的区别就是编辑一个文本时&#xff0c;vi不会显示颜色&#xff0c;而vim会显示颜色。显示颜色更易于用户进行编辑。vim的这些优势主要体现在以下几个方面&#xff1a;1…

java 四舍五入_Java常用类

每个人的心里&#xff0c;都藏着一个了不起的自己&#xff0c;只要你不颓废&#xff0c;不消极&#xff0c;一直悄悄酝酿着乐观&#xff0c;培养着豁达&#xff0c;坚持着善良&#xff0c;只要在路上&#xff0c;就没有到达不了的远方&#xff01;BigInteger在Java中&#xff0…

Sublime 插件- px 转rem

一个CSS的px值转rem值的Sublime Text 3自动完成插件。 插件效果如下&#xff1a; 安装 克隆项目 https://github.com/hyb628/cssrem.git进入packages目录&#xff1a;Sublime Text -> Preferences -> Browse Packages...复制下载的cssrem目录到刚才的packges目录里。重…

ansible 批量部署ssh免密钥

1 创建ssh秘钥 yum install epel-release -y yum install sshpass -y ssh-keygen -t rsa 2 批量复制秘钥并授权 ansible web -m shell -a ‘mkdir ~/.ssh’ -k ansible web -m copy -a ‘src~/.ssh/id_rsa.pub dest~/.ssh/authorized_keys mode0600’ -k 3 测试 ssh 10.0.0.2…

window8下安装RabbitMQ

2019独角兽企业重金招聘Python工程师标准>>> 1.下载并安装erlang&#xff0c;http://www.erlang.org/download.html。64位的下载的是otp_win64_19.1.exe 查看是否安装成功&#xff1a; 2.下载RabbitMQ,最新版是2.8.1&#xff0c;http://www.rabbitmq.com/releases/r…

python如何避免转义字符_如何解决因转义字符而报错的问题(在使用python导入文件时)...

有些萌新在初次使用python导入文件时&#xff0c;可能会遇到遇到各种各样的报错。今天我们就来讲讲其中最常见的一种报错---转义字符“\”冲突。问题重述&#xff1a;比如像下面这样&#xff0c;当我们想导入一个常见的csv文件时&#xff0c;发现居然报了这样一个错误&#xff…

同意条款按钮可用

// 同意条款function isaccepted(){ if(document.getElementById("read").checkedtrue){ document.getElementById("submit").disabled false; $(#submit).css("background","#f25618"); }else{ document.getElementById("s…

Ansible执行过程分析、异步模式和速度优化

Ansible系列(七)&#xff1a;执行过程分析、异步模式和速度优化 分类: Linux服务篇 undefined 我写了更完善的Ansible专栏文章&#xff1a;一步到位玩儿透Ansible Ansible系列文章&#xff1a;http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible执行过程分析 …

gdb 收到SIGPIPE信号

2019独角兽企业重金招聘Python工程师标准>>> handle SIGPIPE noprint nostop 转载于:https://my.oschina.net/u/1176097/blog/761957