高內聚低耦合通俗理解_抱歉,請不要把“業務邏輯層”理解為“業務中臺”

在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.pswp.cn/news/457775.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457775.shtml
英文地址,請注明出處:http://en.pswp.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