領(lǐng)域模型的技術(shù)實踐能給我們什么啟發(fā)?
編輯導(dǎo)語:對于互聯(lián)網(wǎng)軟件開發(fā)流程中,領(lǐng)域模型的技術(shù)實踐比較適用于當(dāng)前的開發(fā)人員,同時很多思維也適用于產(chǎn)品人員,它更加傾向于給大家傳遞良好的思路與習(xí)慣。作者總結(jié)梳理了自己的個人經(jīng)驗,與你分享。
前幾期的文章,主要給大家描述了領(lǐng)域模型的概念和用法。針對互聯(lián)網(wǎng)軟件開發(fā)流程中,領(lǐng)域模型技術(shù)實踐比較傾向于給大家傳遞良好的編程習(xí)慣和思路,適用于當(dāng)前的開發(fā)人員。
但我自己在總結(jié)梳理以及結(jié)合個人經(jīng)驗的同時發(fā)現(xiàn),這里面其實也有很多思維同樣適用于產(chǎn)品人員,分享出來希望給大家一點啟發(fā)。
一、如何開始調(diào)研設(shè)計產(chǎn)品
當(dāng)我們置身于一個陌生業(yè)務(wù)領(lǐng)域時,看不清業(yè)務(wù)全貌甚至存在很多潛在場景,困惑和不知所措是大多數(shù)的人狀態(tài)。
針對這種情形,領(lǐng)域模型中關(guān)于研發(fā)人員從哪里敲下第一行代碼的講解能帶給我們一些啟發(fā)。常規(guī)來說,一般在研發(fā)前會進(jìn)行設(shè)計,無論是數(shù)據(jù)庫還是時序交互,一般都是由下而上,打好地基再來搭建上層建筑。
(領(lǐng)域模型技術(shù)實踐提倡的開發(fā)習(xí)慣)
但把我們自己放進(jìn)真實的工作場景中,其實會發(fā)現(xiàn)即使業(yè)務(wù)本身比較明確,在設(shè)計的時候考慮數(shù)據(jù)庫結(jié)構(gòu)的字段,業(yè)務(wù)間的數(shù)據(jù)交互等等時還是會有一些困惑。這種工作由下而上的方式很多時候會演變成為了設(shè)計而設(shè)計。
所以我們會建議大家先從確定性的功能業(yè)務(wù)開始寫代碼,當(dāng)所有確定性的東西完成后模糊的東西會更加清晰,在這個過程中我們底層的結(jié)構(gòu)會自然清晰。
對于這種思維方式,我覺得同樣適用于產(chǎn)品工作。任何業(yè)務(wù)領(lǐng)域中從基本或確定性場景出發(fā),慢慢拓展,能夠高效的幫你盡快熟悉陌生業(yè)務(wù)領(lǐng)域。
在這里我們拿電商購物的場景舉例,我們從用戶購買這個核心場景出發(fā)。在梳理時,盡量先補(bǔ)全業(yè)務(wù)全貌,不要急于去思考細(xì)節(jié)。
從確定性業(yè)務(wù)場景出發(fā),我們能比較快速的補(bǔ)全主流程的業(yè)務(wù)線。再在各個流程業(yè)務(wù)間去考慮其他相關(guān)因素,慢慢補(bǔ)全整個業(yè)務(wù)全貌。
(學(xué)會用業(yè)務(wù)滋養(yǎng)中臺)
這種方式能比較快的幫助我們探索一個陌生業(yè)務(wù)領(lǐng)域,但在梳理的過程中一定要從主干出發(fā),切勿一開始就深究細(xì)節(jié)。用業(yè)務(wù)本身幫助完善我們的業(yè)務(wù)領(lǐng)域模型。
二、學(xué)會拆分產(chǎn)品形成邊界
之前我們有提到一個概念叫業(yè)務(wù)領(lǐng)域模型,在實際操作過程中我們的業(yè)務(wù)領(lǐng)域模型需要區(qū)分核心域和公共域。
核心域其實就是業(yè)務(wù)的核心本質(zhì),不同于公共域消息、權(quán)限等比較常見的業(yè)務(wù)。因此我們需要對我們的領(lǐng)域模型以及產(chǎn)品進(jìn)行拆分,從而形成邊界。
拆分的原則其實就是遵從業(yè)務(wù)本身,圍繞業(yè)務(wù)能力進(jìn)行組織。這里我們還用之前的乘車業(yè)務(wù)舉例。
可以比較清晰的看到,拆分的結(jié)果分為核心和公共兩個部分。針對大多數(shù)的微服務(wù)架構(gòu),就是根據(jù)這樣的業(yè)務(wù)模式進(jìn)行拆分。拆的過細(xì)或者太粗對于微服務(wù)和業(yè)務(wù)領(lǐng)域都沒有太大價值,所以還是要以業(yè)務(wù)本身為準(zhǔn)。
大家也可以根據(jù)整個服務(wù)的拆分,自己去梳理整體的業(yè)務(wù)流程。
三、用資產(chǎn)的眼光去看待產(chǎn)品并保持演進(jìn)
不管是業(yè)務(wù)領(lǐng)域模型還是產(chǎn)品本身,一定都存在一直迭代的過程。對于迭代,我們需要承認(rèn)的是產(chǎn)品本身的不完美和缺陷。但這也是任何產(chǎn)品自身但宿命和現(xiàn)實,世界上根本不存在完美的事物。
對于現(xiàn)有的代碼和業(yè)務(wù)領(lǐng)域模型,我們一定要用資產(chǎn)的眼光去看待。資產(chǎn)本身會有一個欠債的概念,當(dāng)我們的代碼在實現(xiàn)過程中沒有真正考慮復(fù)用性,只是為了實現(xiàn)需求,本身其實就相當(dāng)于欠下了無形的債務(wù)。
當(dāng)業(yè)務(wù)擴(kuò)張時,會發(fā)現(xiàn)我們的代碼完全支持不了業(yè)務(wù)本身,這個時候其實就是還債的過程,對于業(yè)務(wù)領(lǐng)域模型也是同樣的道理。
任何過度設(shè)計,缺陷設(shè)計下的弊端總有一天會暴露出來,欠下的債務(wù)也一定需要償還。好了,這次的領(lǐng)域模型講解就到這里,對于領(lǐng)域模型我也梳理了大綱,有興趣的朋友可以看看。
領(lǐng)域模型技術(shù)實踐個人梳理:
本文由 @都市擺渡人 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
學(xué)習(xí)了
請問前幾期文章在哪里呢?
可以來公眾號看:都市擺渡人