系統(tǒng)架構(gòu):通俗易懂教你理解中臺

2 評論 13499 瀏覽 60 收藏 13 分鐘

編輯導(dǎo)語:做產(chǎn)品之前必不可少的步驟就是架設(shè)產(chǎn)品的系統(tǒng)架構(gòu),產(chǎn)品在運行過程中也會持續(xù)有不同程度的需求更新,所以前期搭建好架構(gòu)是非常必要的;本文作者分享了關(guān)于產(chǎn)品系統(tǒng)架構(gòu)的搭建,我們一起來了解一下。

架構(gòu),簡單來理解,就是架設(shè)產(chǎn)品的結(jié)構(gòu)。

架構(gòu),離不開4個關(guān)鍵字:效率、適用性、穩(wěn)定性、可擴展性。

  1. 效率:好的架構(gòu)提升迭代效率;
  2. 適用性:好的架構(gòu)可以在小修小補之下適用各個業(yè)務(wù)需求;
  3. 穩(wěn)定性:系統(tǒng)是高可用的;
  4. 可擴展性:無需改動底層;

B 端產(chǎn)品需要解決企業(yè)不斷發(fā)展過程中遇到的各種問題,所以隨著新的商業(yè)環(huán)境、新的業(yè)態(tài)、新的模式,必然伴隨著催生出新的需求。

每家企業(yè)發(fā)展的方向不同、策略不同、組織不同,都會導(dǎo)致需求有很多變種,在這種情況下,如何能夠通過一款產(chǎn)品滿足各種數(shù)以萬計的企業(yè),就變得異常有挑戰(zhàn)性。

沒有一個好的產(chǎn)品架構(gòu),是無法做到這件事的。

產(chǎn)品架構(gòu)不好,帶來的很多問題,這里不再贅述,主要包括:一碰到新需求就要改底層;改動牽一發(fā)而動全身;一碰到新需求就要大改。

我們往往會看到那種結(jié)構(gòu)圖,分層分區(qū)塊,不同層做不同的事,不同塊承擔(dān)不同的角色和職能。

我們要明白所有的架構(gòu),最終都為了提效,沒能提效的都不是好的架構(gòu)。

01?產(chǎn)品架構(gòu)思維

這里引入 2 個思維:

階段一:線性化思維

就是說比如一個用戶進入一個電商網(wǎng)站,他找到一個商品,然后下單,支付,然后商家發(fā)貨,用戶確認收貨,交易完成。

如果我們把這些環(huán)節(jié)都做到一個線性流里,是不是發(fā)現(xiàn)這個產(chǎn)品是單層的,所有功能都有序的雜糅其中。

這樣一個產(chǎn)品、一套代碼,一旦涉及其中一個環(huán)節(jié)的改動,就會動整個產(chǎn)品、整套代碼。

所以開始有了模塊的拆分,以及前后端分離。

模塊的拆分,能夠很好的劃分邊界,即把相同目標(biāo)的一些場景功能集成在一起,把不同定位的場景功能排除在外。

那么后面假如只針對A模塊進行業(yè)務(wù)迭代,毫無疑問降低了對整個產(chǎn)品的影響,且更加容易和高效。

模塊作為業(yè)務(wù)層橫向的拆分,將線性化的產(chǎn)品變成了離散型。

毫無疑問,線性一定比離散型更快,更高效,但是隨著業(yè)務(wù)的訴求日益增長,任何的快都要建立在滿足需求的前提下,否則效率無從談起。

階段二:模塊化思維

模塊化到底是怎么做的呢?

舉個例子,從產(chǎn)品角度通俗易懂的講,比如商品,那么商品中所有的底層數(shù)據(jù)、商品相關(guān)的各種能力(比如創(chuàng)建商品、商品類目管理、商品上下架管理等等)都會被囊括在商品模塊(中心)中。模塊對外就是提供各種商品相關(guān)的接口能力。

模塊化還有個好處,就是降低了產(chǎn)品開發(fā)的邊際成本,同樣的商品創(chuàng)建,按照線性開發(fā)我肯定還要再做一遍;但是如果集成到一個模塊中,我只需要讓商品模塊可以支撐起他業(yè)務(wù)的商品創(chuàng)建,做一些輕度擴展,即可滿足。

模塊化按照顆粒度還可以進行拆分,比如商品模塊里面,還可以拆分商品基礎(chǔ)信息模塊、商品銷售信息模塊、商品活動信息模塊等等。

這些都視業(yè)務(wù)發(fā)展的訴求而定,比如需要針對不同類型的活動,制定不同的商品信息策略,而且這類的業(yè)務(wù)需求又多又高頻,那么是有必要抽出這個模塊進行單獨迭代的。

模塊化有一點比較負責(zé)的就是定邊界,哪些該放在業(yè)務(wù)側(cè),哪些該放在模塊服務(wù)側(cè)。

我的原則是:高度關(guān)聯(lián)且具備一定通用性的放在模塊服務(wù)側(cè),低關(guān)聯(lián)且個性化的功能放在業(yè)務(wù)開發(fā)側(cè)。

02 什么時候需要建立中臺

上面講的是單個業(yè)務(wù)線的模塊化,但是隨著企業(yè)發(fā)展,多條業(yè)務(wù)線并行其實是很正常的,這個時候,每個業(yè)務(wù)線都需要用到商品,比如一家公司既要發(fā)展電商業(yè)務(wù),也要發(fā)展農(nóng)產(chǎn)品業(yè)務(wù),都會涉及到商品能力的搭建。

理論上來說,如果能用一套商品模塊支持 2 個業(yè)務(wù)線的商品需求,是不是能讓降低至少一半的開發(fā)成本?

那么問題來了,假如用一套商品模塊來支持2個業(yè)務(wù)的商品需求,會帶來什么樣的問題呢?

比如電商商品是按照「件」來計算數(shù)量的,農(nóng)產(chǎn)品商品是按照 kg/g 等重量來計算數(shù)量的,也就是說商品模塊需要支持 kg、g、件等各種計量單位,這還不夠,涉及到退貨、出入庫管理、物流配送費等,都需要做額外的方案兼容。

最后整個商品模塊會變得很重,任何不同業(yè)務(wù)的商品需求都會被迭代到這個商品模塊中,成了一個商品中心。

如果同時有 4,5 條線在跑,且他們對商品的需求又各有差異,那么商品中心就會變的很重,這種【重】甚至?xí)催^來影響各個業(yè)務(wù)線的商品功能,使其變得很難用。

隨著越來越【重】,任何一條業(yè)務(wù)線的商品需求的變更、新增,都會帶來成幾倍的開發(fā)難度和工作量,因為任何一次變更、新增都要基于之前【厚重】的商品模塊的產(chǎn)品邏輯來考慮。

這個時候中臺的概念應(yīng)運而生,中臺某種意義上來講,和開放平臺非常相似,就是對外提供底層能力。

我們換個思路,假如,每個業(yè)務(wù)都能自己建立自己的商品中心,不用受其他業(yè)務(wù)線的商品功能的影響,是不是會更加舒服呢?

但是像前面說的,從 0 到 1 自己再建個商品中心太麻煩了,那能不能復(fù)用一些已有的能力呢?但是又可以拋棄掉一些不需要的功能。

這個時候我們就抽離出技術(shù)中臺這一層概念。

03 中臺要做什么?

技術(shù)中臺就是對各個商品中心進行能力的抽象,為各業(yè)務(wù)線提供底層的商品能力。

而各業(yè)務(wù)線就是基于這些基礎(chǔ)能力,去搭建自己的商品中心,做更上層的商品相關(guān)的產(chǎn)品功能。

這樣每個業(yè)務(wù)的商品中心都只服務(wù)于自己,更加完美的契合業(yè)務(wù)需求,使用也更高效,同時基于中臺能力的商品中心搭建起來也更加便捷和迅速。

所以對于中臺來說,如何避免弱抽象,又不過度抽象,就變得非常有難度了。

弱抽象,就意味著有很多業(yè)務(wù)的東西夾雜其中,每次迭代都可能涉及到中臺能力和接口的改動。

過度抽象,就會導(dǎo)致中臺體現(xiàn)不出價值,業(yè)務(wù)開發(fā)工作依然繁重,甚至因為新增對接中臺而加大工作量。

中臺進階:

那么是否這樣就是一個最終形態(tài)了?并不是。

假如中臺對外提供的是最基礎(chǔ)的能力,那么對業(yè)務(wù)來說,他需要花費很多時間通過這些基礎(chǔ)能力接口去做上層的業(yè)務(wù)拼裝,并引入基礎(chǔ)能力之外的業(yè)務(wù)邏輯,而這些業(yè)務(wù)邏輯可以由中臺提供,也可以由業(yè)務(wù)自己來實現(xiàn)。

那么考慮到讓業(yè)務(wù)效率最大化,最好的方式是什么呢?提供基礎(chǔ)能力,其實是相對簡單的,工作量的大頭其實是業(yè)務(wù)。

那么假如中臺能夠以一種通用性的方式,幫助業(yè)務(wù)完成一部分業(yè)務(wù)需求,何樂而不為呢?

很多書中都在告訴大家,中臺就只做抽象,只提供基礎(chǔ)能力,雖然前提是對的,但是忽略了很重要的一點,中臺的第一目的就是幫助業(yè)務(wù)減負,最大化業(yè)務(wù)效率。

如果做不到這點,中臺再強調(diào)抽象,再強調(diào)低耦合,都對企業(yè)的發(fā)展沒有太大幫助。

所以換個思路來講,比如業(yè)務(wù)中,做營銷活動的時候,不同類型的營銷活動對用戶參與門檻都有不同的限制,類似這樣的限制規(guī)則其實非常多,10 個活動都要用到這樣的限制規(guī)則,且這些規(guī)則離不開類似(是否新用戶、是否用戶等級大于 XX、是否活躍用戶等等),既然如此,為何不為業(yè)務(wù)去提供一套整合的規(guī)則池,并提供一套門檻校驗?zāi)芰?,進一步幫助業(yè)務(wù)減負?

這樣的例子有很多??梢哉f這樣的規(guī)則池也是一種抽象,但其實更像是枚舉,因為每一個規(guī)則都可能完全不同,需要一個個建立起來。

04?技術(shù)中臺的坑

中臺化的能力,幫助業(yè)務(wù)減負的基礎(chǔ)上,進一步收攏了數(shù)據(jù),和模塊化的統(tǒng)一管理,從邏輯上來講,一定能夠幫助企業(yè)大幅提升效率。

但是真正執(zhí)行中,往往效果沒有達到預(yù)期,一般主要由以下幾個原因?qū)е拢?/p>

1)業(yè)務(wù)理解深度不夠

沒有對業(yè)務(wù)進行深度調(diào)研,導(dǎo)致設(shè)計的中臺,業(yè)務(wù)不可用,或者難用,滿足不了需求,這必然導(dǎo)致中臺能力應(yīng)用的推進難度增加,有些業(yè)務(wù)甚至脫離中臺自建底層能力。

2)技術(shù)對接溝通不充分

在對接過程中,沒有做好充分的技術(shù)對接溝通,導(dǎo)致業(yè)務(wù)開發(fā)覺得中臺提供的少,中臺覺得業(yè)務(wù)開發(fā)不懂中臺,沒有形成合作共識。

3)中臺能力過于散裝

上游業(yè)務(wù)組裝依然復(fù)雜、需要耗費大量精力,體現(xiàn)不出效率的提升。

未完,實戰(zhàn)內(nèi)容待續(xù)。

#專欄作家#

司馬特小分隊,公眾號:司馬特小分隊,人人都是產(chǎn)品經(jīng)理專欄作家。8年+互聯(lián)網(wǎng)資深產(chǎn)品經(jīng)驗,多年B端產(chǎn)品管理經(jīng)驗。具有多個從0到1的大型B端產(chǎn)品的孵化、重構(gòu)、迭代經(jīng)驗;主要教授產(chǎn)業(yè)互聯(lián)網(wǎng)產(chǎn)品相關(guān)的硬核知識點。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 如文中例子,中臺化后如何設(shè)計商品管理模塊呢?

    回復(fù)
    1. 是將商品中的模塊再進行一層抽象嗎?比如先抽象一層業(yè)務(wù)線,各業(yè)務(wù)可以先劃定業(yè)務(wù)線的邊界,用于各自商品管理的邊界。然后在商品管理中,比如像文中提到的單位,中臺提供單位的能力,具體用件,還是用kg,由業(yè)務(wù)側(cè)創(chuàng)建時自行決定選擇。

      回復(fù)