9字心法談產(chǎn)品架構(gòu)該怎么設(shè)計(jì)?
理解業(yè)務(wù),才能夠更好地支持業(yè)務(wù),創(chuàng)造更多的價(jià)值。本文就系統(tǒng)設(shè)計(jì)能力中的產(chǎn)品架構(gòu)談起,理解產(chǎn)品架構(gòu)的設(shè)計(jì)思路。作者用9字心法談產(chǎn)品架構(gòu)該怎么設(shè)計(jì)?希望對(duì)你有所幫助。
在工作中,我們經(jīng)常會(huì)遇到兩類性格特點(diǎn)比較突出的產(chǎn)品經(jīng)理:
一類是偏業(yè)務(wù)型的,他們長(zhǎng)期深入業(yè)務(wù)一線,有極強(qiáng)的業(yè)務(wù)理解能力,對(duì)業(yè)務(wù)的思考和價(jià)值預(yù)判都非常深入,但在做需求時(shí),很容易和研發(fā)產(chǎn)生沖突,因?yàn)樗麄兛偸钦驹跇I(yè)務(wù)視角,無(wú)視系統(tǒng)的實(shí)現(xiàn)和擴(kuò)展。
還有一類是偏系統(tǒng)型的,比如很多做SaaS和中臺(tái)的產(chǎn)品,他們有極強(qiáng)的邏輯思維和系統(tǒng)設(shè)計(jì)能力,但是太偏系統(tǒng)能力建設(shè),離業(yè)務(wù)較遠(yuǎn),設(shè)計(jì)出來(lái)的產(chǎn)品總是不能很好的滿足業(yè)務(wù)訴求,導(dǎo)致業(yè)務(wù)投訴說(shuō)系統(tǒng)不好用。
很明顯,這兩類都很難稱得上合格的產(chǎn)品經(jīng)理,在木筆看來(lái),優(yōu)秀的產(chǎn)品經(jīng)理一定是軟硬技能兼修的,硬技能包含業(yè)務(wù)能力和系統(tǒng)能力,軟技能包含溝通能力、協(xié)調(diào)能力、傾聽能力、同理心等,我們要不斷的學(xué)習(xí)和修煉,在任何一個(gè)方面都不能有太明顯的短板,否則,總有一天,我們會(huì)在自己最短板的地方掉進(jìn)坑里。
▲優(yōu)秀的產(chǎn)品經(jīng)理技能
無(wú)論是擅長(zhǎng)業(yè)務(wù)理解和運(yùn)營(yíng)能力的業(yè)務(wù)能力,還是擅長(zhǎng)需求分析和系統(tǒng)設(shè)計(jì)的系統(tǒng)能力,就像天平的兩端,都是產(chǎn)品經(jīng)理必備的硬技能,特別在B端領(lǐng)域,越往高處走,這兩項(xiàng)能力越缺一不可。理解業(yè)務(wù),才能夠更好的支持業(yè)務(wù),創(chuàng)造價(jià)值,熟悉系統(tǒng),才能夠知道哪些可為,哪些不可為,兩項(xiàng)能力結(jié)合起來(lái),才能夠?qū)崿F(xiàn)整體最優(yōu),走的更遠(yuǎn)。
本篇文章,我們重點(diǎn)聊一聊系統(tǒng)設(shè)計(jì)能力里的產(chǎn)品架構(gòu)。很多朋友聽到“架構(gòu)”這個(gè)詞,都感覺特別虛無(wú)縹緲,這種感覺是正常的,因?yàn)樗床灰娒恢?,更多傳遞的是一種產(chǎn)品設(shè)計(jì)思想,但這項(xiàng)思想?yún)s非常重要,它能夠讓我們?cè)跇I(yè)務(wù)支持和系統(tǒng)擴(kuò)展這兩個(gè)不同的方向上找到平衡點(diǎn),讓我們既能夠很好的支持業(yè)務(wù),也能夠保證系統(tǒng)的完整性。
要理解產(chǎn)品架構(gòu),我們從一個(gè)經(jīng)典的童話故事開始說(shuō)起:《三只小豬的故事》……
01 三只小豬的故事
森林里住著三只小豬,它們都想為自己蓋一間漂亮的房子。
豬大哥比較懶,從地里找來(lái)了很多茅草,為自己鋪了一間茅草房,兩天就完工了。
豬二哥將門前的樹砍下,用木頭隨便搭了一間木頭房子,一個(gè)星期也完工了。
只有豬小弟耐心的從山腳下搬來(lái)很多磚,然后開始挖地基、建地平、砌墻,然后精心布置,足足花了三個(gè)月,才為自己蓋起了一間漂亮的磚房子。
這一天,豬小弟正在睡覺,突然聽到豬大哥和豬二哥在門外急匆匆的敲門。原來(lái),森林里來(lái)了一只大灰狼,想要找食物吃,它先找到了豬大哥的茅草房子,輕輕一吹,房子就倒了。之后它又找到豬二哥的木頭房子,使勁一撞,房子也倒了,兩只小豬只好逃到豬小弟的磚房子里求救。
大灰狼也跟著來(lái)了,在門外使勁撞豬小弟的磚房子,把頭上都撞的滿頭是包,房子卻紋絲不動(dòng)。大灰狼想從煙囪里鉆進(jìn)去,結(jié)果掉進(jìn)了三只小豬燒滿開水的鍋里,只好灰溜溜的逃走了。
豬大哥和豬二哥這回終于知道不能偷工減料了。
后來(lái),在豬小弟的邀請(qǐng)下,三只小豬把屋頂稍加改造,在上面加蓋了兩層,變成了三層小樓,從此愉快的生活在了一起……
02 什么是產(chǎn)品架構(gòu)?
故事講完了,咱們不是為了講童話,故事的寓意就不說(shuō)了,重點(diǎn)聊聊為什么豬大哥和豬二哥的房子這么不結(jié)實(shí),而豬小弟的磚房子卻堅(jiān)如磐石,還能改造成三層小樓呢?
答案就在房子的結(jié)構(gòu)上,豬大哥和豬二哥的房子雖然建的很快,但基本就是把茅草和木頭堆砌一下,就蓋成了,這樣的房子沒有鞏固的框架結(jié)構(gòu),稍微遇到大風(fēng)和大力就倒塌了。而豬小弟的房子在地平下有很厚的地基,地面還有平穩(wěn)的地平和能承重的主體結(jié)構(gòu),這樣的結(jié)構(gòu)足夠牢固,任憑大灰狼撞破了頭,也穩(wěn)如磐石。
同時(shí),豬小弟的房子稍加改造就從一層變成了三層小樓,也是源自其牢固的基礎(chǔ)和堅(jiān)實(shí)的主體結(jié)構(gòu),做擴(kuò)展并不動(dòng)根基,所以才能輕松的完成改造,收留兩位哥哥。
▲豬小弟的房子結(jié)構(gòu)
了解完房子的結(jié)構(gòu),我們回到系統(tǒng)架構(gòu)的問題上來(lái),系統(tǒng)架構(gòu)和蓋房子的原理也是一樣的,系統(tǒng)架構(gòu)就是系統(tǒng)的脈絡(luò)和結(jié)構(gòu),架構(gòu)設(shè)計(jì)就是梳理出系統(tǒng)的地基(底層核心邏輯)和主體結(jié)構(gòu)(系統(tǒng)主體結(jié)構(gòu)),并在此基礎(chǔ)上設(shè)計(jì)和裝修(搭建業(yè)務(wù)需要的功能和流程)。
好的系統(tǒng)架構(gòu)就像豬小弟的房子一樣,結(jié)構(gòu)清晰、穩(wěn)定牢固,支持在主體結(jié)構(gòu)上靈活擴(kuò)展(一層改三層),不好的架構(gòu)就像豬大哥和豬二哥的房子一樣,只是功能的堆砌,看起來(lái)能滿足當(dāng)前的訴求,但不成體系,稍微有點(diǎn)外部變化影響,就會(huì)崩塌,只能重建,更不要說(shuō)擴(kuò)展性了。
根據(jù)設(shè)計(jì)分工的不同,系統(tǒng)架構(gòu)又分為產(chǎn)品架構(gòu)和技術(shù)架構(gòu),通常產(chǎn)品經(jīng)理負(fù)責(zé)產(chǎn)品架構(gòu),技術(shù)架構(gòu)師負(fù)責(zé)技術(shù)架構(gòu),二者的關(guān)系如下圖所示:
▲產(chǎn)品架構(gòu)與技術(shù)架構(gòu)
產(chǎn)品架構(gòu)是在做產(chǎn)品方案設(shè)計(jì)的過(guò)程中產(chǎn)生的,主要是對(duì)系統(tǒng)進(jìn)行合理的模塊劃分,包含系統(tǒng)主要分哪幾大模塊,哪些是底層支撐,哪些是上層建設(shè),哪些是主干,哪些是分支,軟硬件如何交互等。
技術(shù)架構(gòu)則是在架構(gòu)師接到系統(tǒng)需求以后,對(duì)系統(tǒng)的實(shí)現(xiàn)進(jìn)行技術(shù)選型和設(shè)計(jì),包含如何進(jìn)行庫(kù)表設(shè)計(jì)、使用什么技術(shù)框架和協(xié)議、如何劃分技術(shù)域等。
產(chǎn)品架構(gòu)的產(chǎn)生過(guò)程是產(chǎn)品經(jīng)理在接到業(yè)務(wù)需求以后,對(duì)需求進(jìn)行分析,設(shè)計(jì)出系統(tǒng)的核心功能,然后再對(duì)這些功能進(jìn)行抽象、分組,從而歸納出系統(tǒng)的架構(gòu),是一個(gè)先具象再抽象的過(guò)程。而技術(shù)架構(gòu)是在接到產(chǎn)品需求以后會(huì)先開始設(shè)計(jì)架構(gòu)方案,然后根據(jù)架構(gòu)方案進(jìn)入代碼開發(fā)階段,最終實(shí)現(xiàn)系統(tǒng)功能,是先抽象再具象的過(guò)程。
03 壞產(chǎn)品架構(gòu)與好產(chǎn)品架構(gòu)
好的架構(gòu)堅(jiān)韌靈活,擴(kuò)展性好,壞的架構(gòu)脆弱雜亂,問題不斷。很多系統(tǒng)的設(shè)計(jì),金玉其外,從頁(yè)面和功能等外表看不出來(lái)好壞,但在實(shí)際業(yè)務(wù)運(yùn)轉(zhuǎn)過(guò)程中,會(huì)隨著業(yè)務(wù)量級(jí)和復(fù)雜性的增加就慢慢體現(xiàn)出來(lái)優(yōu)劣了。
在缺乏架構(gòu)的系統(tǒng)設(shè)計(jì)中,通常表現(xiàn)為功能羅列、沒有主次、相互耦合:
一)功能羅列:系統(tǒng)功能完全是為了應(yīng)付業(yè)務(wù)需求而拼湊到一起的,沒有規(guī)劃,沒有層級(jí)。
二)沒有主次:區(qū)分不出來(lái)核心邏輯和非核心邏輯,只為一味的滿足業(yè)務(wù),而忽略了系統(tǒng)內(nèi)部的升級(jí)成本。
三)相互耦合:不該耦合到一起的功能相互交織,揉到一起,相互約束,牽一發(fā)而動(dòng)全身。
講個(gè)小A的故事來(lái)一起感受一下架構(gòu)的魔力。
在倉(cāng)儲(chǔ)系統(tǒng)中,入庫(kù)、出庫(kù)和庫(kù)內(nèi)作業(yè)是倉(cāng)儲(chǔ)的三大類業(yè)務(wù),每個(gè)業(yè)務(wù)都要處理自己的業(yè)務(wù)邏輯和加減庫(kù)存,產(chǎn)品經(jīng)理小A在設(shè)計(jì)系統(tǒng)時(shí),將入庫(kù)、出庫(kù)和庫(kù)內(nèi)模塊分開設(shè)計(jì),各自處理自己的業(yè)務(wù)和庫(kù)存。但由于庫(kù)存是一個(gè)整體,三大業(yè)務(wù)之間在加減庫(kù)存時(shí)總是相互沖突,導(dǎo)致系統(tǒng)上線后庫(kù)存一直不平。
同時(shí),小A將入庫(kù)、出庫(kù)和庫(kù)內(nèi)的作業(yè)指令設(shè)計(jì)到了一個(gè)功能里,這樣帶來(lái)的問題是一個(gè)系統(tǒng)功能里要兼容不同業(yè)務(wù)下的不同邏輯,邏輯復(fù)雜不說(shuō),耦合性還高,經(jīng)常因?yàn)锳業(yè)務(wù)的調(diào)整導(dǎo)致B業(yè)務(wù)也出問題。另外,在部分頁(yè)面上,負(fù)責(zé)入庫(kù)、出庫(kù)和庫(kù)內(nèi)的倉(cāng)庫(kù)人員要在一個(gè)頁(yè)面過(guò)濾自己負(fù)責(zé)的單據(jù),再進(jìn)行操作,經(jīng)常把其它業(yè)務(wù)的單據(jù)給誤操作了,現(xiàn)場(chǎng)痛苦不已,小A更加痛不欲生。
▲沒有架構(gòu)的系統(tǒng)設(shè)計(jì)
而在一個(gè)好的產(chǎn)品架構(gòu)里,系統(tǒng)是分層而立的,哪些功能是核心主體,哪些功能是外圍分支,一目了然。以木筆的經(jīng)驗(yàn),產(chǎn)品架構(gòu)從里往外,可分成底層邏輯、核心業(yè)務(wù)邏輯和非核心邏輯三部分:
一)底層邏輯:這是系統(tǒng)的最底層的地基建設(shè),承接的是很多業(yè)務(wù)都公用的底層邏輯,一旦調(diào)整,影響面較廣,所以應(yīng)該從場(chǎng)景中剝離出來(lái),不過(guò)多的參與業(yè)務(wù)邏輯處理,保證它的穩(wěn)定性。比如倉(cāng)的庫(kù)存處理、中央庫(kù)存的分倉(cāng)、售后的賠付退款、促銷系統(tǒng)的發(fā)券等;
二)核心業(yè)務(wù)邏輯:依附在底層邏輯之上,處理與業(yè)務(wù)相關(guān)的主干流程及流程涉及的單據(jù)、狀態(tài)變更等,調(diào)整后會(huì)對(duì)當(dāng)前業(yè)務(wù)產(chǎn)生較大的影響,但不會(huì)影響其它業(yè)務(wù),在設(shè)計(jì)系統(tǒng)時(shí),核心業(yè)務(wù)要盡量保持獨(dú)立性,避免和其它業(yè)務(wù)交織到一起,以免相互影響,同時(shí),也要盡量保證主干流程的穩(wěn)定性,不要輕易調(diào)整。比如入庫(kù)流程、出庫(kù)流程、售后退款、維修流程等;
三)非核心邏輯:其它不對(duì)業(yè)務(wù)主干產(chǎn)生影響的非核心邏輯、輔助流程、工具等,在核心業(yè)務(wù)邏輯的基礎(chǔ)上,可根據(jù)業(yè)務(wù)需求靈活調(diào)整。如增加設(shè)備、自動(dòng)化執(zhí)行、批量操作、記錄日志等。
需要強(qiáng)調(diào)一點(diǎn)的是,核心業(yè)務(wù)并不等于核心邏輯,很多功能對(duì)業(yè)務(wù)很核心很重要,但在架構(gòu)里,只是一個(gè)非核心的邏輯,二者是兩個(gè)維度的劃分,并不矛盾。
▲分層設(shè)計(jì)的產(chǎn)品架構(gòu)
繼續(xù)小A的故事。
正在小A痛不欲生的時(shí)候,救星老L入職了,經(jīng)過(guò)一番調(diào)研和分析后,老L開始對(duì)倉(cāng)儲(chǔ)系統(tǒng)的架構(gòu)進(jìn)行梳理,只做了兩件事,所有的問題就迎刃而解了:
一是將庫(kù)存的處理獨(dú)立出來(lái)作為底層邏輯,并抽象出加庫(kù)存和減庫(kù)存兩個(gè)服務(wù),這兩個(gè)服務(wù)只做庫(kù)存的加減和事務(wù)處理,不涉及任何業(yè)務(wù),所有庫(kù)存變動(dòng)的場(chǎng)景都必須調(diào)用庫(kù)存服務(wù),通過(guò)庫(kù)存事務(wù)處理來(lái)保證庫(kù)存的準(zhǔn)確性;
二是把入庫(kù)、出庫(kù)和庫(kù)內(nèi)業(yè)務(wù)按照?qǐng)鼍安鸱譃椴煌哪K,并設(shè)計(jì)成不同的菜單,各業(yè)務(wù)之間相互獨(dú)立,互不干擾。如此一來(lái),現(xiàn)場(chǎng)再也沒有出現(xiàn)過(guò)誤操作的情況了,而且當(dāng)某個(gè)業(yè)務(wù)接到新需求需要升級(jí)時(shí),也不會(huì)影響其它業(yè)務(wù)。
經(jīng)過(guò)1個(gè)多月的調(diào)整,倉(cāng)儲(chǔ)系統(tǒng)終于穩(wěn)定下來(lái),再也沒有出現(xiàn)過(guò)大問題了,這就是產(chǎn)品架構(gòu)的魔力。
04 產(chǎn)品架構(gòu)設(shè)計(jì)9字心法
通過(guò)前面的故事,相信沒人會(huì)懷疑產(chǎn)品架構(gòu)的重要性了,產(chǎn)品架構(gòu)設(shè)計(jì)的目標(biāo)有兩個(gè):結(jié)構(gòu)清晰、通用擴(kuò)展。
結(jié)構(gòu)清晰:將復(fù)雜的業(yè)務(wù)進(jìn)行分類,并區(qū)分出主次,讓系統(tǒng)的結(jié)構(gòu)更加清晰。
通用擴(kuò)展:將重要的核心邏輯設(shè)計(jì)的盡量通用,減少業(yè)務(wù)邏輯的干擾,以便保證其穩(wěn)定性,后續(xù)也能接入更多的業(yè)務(wù)場(chǎng)景。
如何設(shè)計(jì)產(chǎn)品架構(gòu)呢?木筆總結(jié)了一個(gè)9字心法:列場(chǎng)景、提主干、附功能。
(一)列場(chǎng)景。在需求調(diào)研和分析的過(guò)程中,盡可能全的將所有業(yè)務(wù)場(chǎng)景都羅列出來(lái),比如倉(cāng)庫(kù)系統(tǒng)包含入庫(kù)、出庫(kù)、庫(kù)內(nèi)流程,入庫(kù)流程又包含收貨—驗(yàn)收—上架幾個(gè)環(huán)節(jié),在上架環(huán)節(jié)需要加庫(kù)存,這些都是場(chǎng)景。
(二)提主干。把場(chǎng)景進(jìn)行分類,找到各個(gè)場(chǎng)景都公用的邏輯,抽象成公共模塊,并剝離出業(yè)務(wù)特色,變成底層邏輯;然后對(duì)每個(gè)業(yè)務(wù)進(jìn)行設(shè)計(jì),剝離出業(yè)務(wù)的核心流程和非核心邏輯。這樣一來(lái),系統(tǒng)就被分成了底層邏輯、業(yè)務(wù)核心邏輯和非核心邏輯三層了。
比如在倉(cāng)儲(chǔ)系統(tǒng)中,商品、貨位基礎(chǔ)數(shù)據(jù),以及庫(kù)存處理是所有業(yè)務(wù)都公用的,這些功能就是系統(tǒng)的底層邏輯;入庫(kù)、出庫(kù)、庫(kù)內(nèi)這幾大流程又各自都有自己的單據(jù)、節(jié)點(diǎn)和狀態(tài),這是每個(gè)業(yè)務(wù)的核心邏輯。底層邏輯和業(yè)務(wù)核心邏輯就像房子的主體結(jié)構(gòu)和承重墻,也像樹干和樹枝一樣,構(gòu)成了系統(tǒng)的主干結(jié)構(gòu)。
(三)附功能。按照梳理出的系統(tǒng)結(jié)構(gòu)對(duì)場(chǎng)景和功能進(jìn)行劃分,將業(yè)務(wù)核心邏輯附到底層邏輯上,再將非核心邏輯附到業(yè)務(wù)核心邏輯上,就像拼積木一樣,便能按照產(chǎn)品架構(gòu)實(shí)現(xiàn)所有系統(tǒng)功能。
比如在梳理出倉(cāng)儲(chǔ)的基礎(chǔ)數(shù)據(jù)和庫(kù)存處理等核心邏輯后,將入庫(kù)業(yè)務(wù)嫁接到基礎(chǔ)數(shù)據(jù)和庫(kù)存處理上,然后在入庫(kù)業(yè)務(wù)基礎(chǔ)之上衍生的其它功能如收貨信息錄入、上架操作等,便是非核心邏輯了,這些功能雖然是業(yè)務(wù)最常用的,但因?yàn)椴簧婕昂诵倪壿?,所以可以跟隨業(yè)務(wù)需求隨意調(diào)整,就算推倒重來(lái)也影響不大。
▲如何設(shè)計(jì)產(chǎn)品架構(gòu)
以下是按照9字心法設(shè)計(jì)的倉(cāng)儲(chǔ)系統(tǒng)產(chǎn)品架構(gòu):最底層是所有業(yè)務(wù)公用的基礎(chǔ)數(shù)據(jù),第二層是在基礎(chǔ)數(shù)據(jù)之上設(shè)立的庫(kù)存處理和策略配置,第三層是在庫(kù)存和策略之上開展的入庫(kù)、出庫(kù)、庫(kù)內(nèi)業(yè)務(wù)和異常處理功能,最上層是輔助進(jìn)銷存業(yè)務(wù)開展而設(shè)立的人工作業(yè)模式和設(shè)備作業(yè)模式。
▲倉(cāng)儲(chǔ)系統(tǒng)產(chǎn)品架構(gòu)
如何驗(yàn)證一個(gè)產(chǎn)品架構(gòu)是不是好的產(chǎn)品架構(gòu)呢?木筆給幾個(gè)評(píng)判標(biāo)準(zhǔn)供參考:
(一)主次分明。好的架構(gòu)有很清晰的結(jié)構(gòu),底層邏輯、核心邏輯和非核心邏輯有很好的定位,不是混在一起的。
(二)邏輯通暢。好的架構(gòu)要支持業(yè)務(wù)流程連貫,除了一些必要的強(qiáng)校驗(yàn)外,應(yīng)極少出現(xiàn)分支和卡頓。對(duì)于那些影響主流程通暢的子流程,應(yīng)該剝離出去。
(三)邊界清晰。不同業(yè)務(wù)模塊之間相互獨(dú)立,保證模塊內(nèi)高內(nèi)聚,模塊間低耦合。
(四)擴(kuò)展性好。好的架構(gòu)一定是面向未來(lái)的,在保證主體結(jié)構(gòu)穩(wěn)定的前提下,能夠兼容更多業(yè)務(wù)場(chǎng)景以較小的成本接入。
(五)持續(xù)迭代。好的架構(gòu)不是一成不變的,而是可以隨著業(yè)務(wù)的迭代節(jié)奏不斷進(jìn)化的,時(shí)刻保持與業(yè)務(wù)的同步性。
做系統(tǒng)設(shè)計(jì)時(shí),業(yè)務(wù)理解固然很重要,但架構(gòu)設(shè)計(jì)也同樣不可或缺,業(yè)務(wù)理解幫我們貼合業(yè)務(wù)創(chuàng)造價(jià)值,架構(gòu)設(shè)計(jì)幫我們分清主次走得更遠(yuǎn)。當(dāng)我們從功能實(shí)現(xiàn)轉(zhuǎn)為梳理產(chǎn)品架構(gòu)的時(shí)候,就是產(chǎn)品能力躍遷的時(shí)候了,一起加油吧。
專欄作家
木筆,微信公眾號(hào):供應(yīng)鏈產(chǎn)品筆記,人人都是產(chǎn)品經(jīng)理專欄作家,產(chǎn)品一俗生,深耕于供應(yīng)鏈領(lǐng)域。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
我太愛你了
羅老師,倉(cāng)儲(chǔ)系統(tǒng)產(chǎn)品架構(gòu)里面的“策略定制”能舉例說(shuō)明一下嗎?
講的真棒
比較清晰的介紹了產(chǎn)品架構(gòu)設(shè)計(jì)的方法論,學(xué)到了
羅老師寫的非常棒,言簡(jiǎn)意賅,圖例也畫的很清楚,贊了贊了
謝謝??