領(lǐng)域模型的技術(shù)實(shí)踐能給我們什么啟發(fā)?

3 評(píng)論 6177 瀏覽 6 收藏 7 分鐘

編輯導(dǎo)語:對(duì)于互聯(lián)網(wǎng)軟件開發(fā)流程中,領(lǐng)域模型的技術(shù)實(shí)踐比較適用于當(dāng)前的開發(fā)人員,同時(shí)很多思維也適用于產(chǎn)品人員,它更加傾向于給大家傳遞良好的思路與習(xí)慣。作者總結(jié)梳理了自己的個(gè)人經(jīng)驗(yàn),與你分享。

前幾期的文章,主要給大家描述了領(lǐng)域模型的概念和用法。針對(duì)互聯(lián)網(wǎng)軟件開發(fā)流程中,領(lǐng)域模型技術(shù)實(shí)踐比較傾向于給大家傳遞良好的編程習(xí)慣和思路,適用于當(dāng)前的開發(fā)人員。

但我自己在總結(jié)梳理以及結(jié)合個(gè)人經(jīng)驗(yàn)的同時(shí)發(fā)現(xiàn),這里面其實(shí)也有很多思維同樣適用于產(chǎn)品人員,分享出來希望給大家一點(diǎn)啟發(fā)。

一、如何開始調(diào)研設(shè)計(jì)產(chǎn)品

當(dāng)我們置身于一個(gè)陌生業(yè)務(wù)領(lǐng)域時(shí),看不清業(yè)務(wù)全貌甚至存在很多潛在場(chǎng)景,困惑和不知所措是大多數(shù)的人狀態(tài)。

針對(duì)這種情形,領(lǐng)域模型中關(guān)于研發(fā)人員從哪里敲下第一行代碼的講解能帶給我們一些啟發(fā)。常規(guī)來說,一般在研發(fā)前會(huì)進(jìn)行設(shè)計(jì),無論是數(shù)據(jù)庫還是時(shí)序交互,一般都是由下而上,打好地基再來搭建上層建筑。

(領(lǐng)域模型技術(shù)實(shí)踐提倡的開發(fā)習(xí)慣)

但把我們自己放進(jìn)真實(shí)的工作場(chǎng)景中,其實(shí)會(huì)發(fā)現(xiàn)即使業(yè)務(wù)本身比較明確,在設(shè)計(jì)的時(shí)候考慮數(shù)據(jù)庫結(jié)構(gòu)的字段,業(yè)務(wù)間的數(shù)據(jù)交互等等時(shí)還是會(huì)有一些困惑。這種工作由下而上的方式很多時(shí)候會(huì)演變成為了設(shè)計(jì)而設(shè)計(jì)。

所以我們會(huì)建議大家先從確定性的功能業(yè)務(wù)開始寫代碼,當(dāng)所有確定性的東西完成后模糊的東西會(huì)更加清晰,在這個(gè)過程中我們底層的結(jié)構(gòu)會(huì)自然清晰。

對(duì)于這種思維方式,我覺得同樣適用于產(chǎn)品工作。任何業(yè)務(wù)領(lǐng)域中從基本或確定性場(chǎng)景出發(fā),慢慢拓展,能夠高效的幫你盡快熟悉陌生業(yè)務(wù)領(lǐng)域。

在這里我們拿電商購物的場(chǎng)景舉例,我們從用戶購買這個(gè)核心場(chǎng)景出發(fā)。在梳理時(shí),盡量先補(bǔ)全業(yè)務(wù)全貌,不要急于去思考細(xì)節(jié)。

從確定性業(yè)務(wù)場(chǎng)景出發(fā),我們能比較快速的補(bǔ)全主流程的業(yè)務(wù)線。再在各個(gè)流程業(yè)務(wù)間去考慮其他相關(guān)因素,慢慢補(bǔ)全整個(gè)業(yè)務(wù)全貌。

(學(xué)會(huì)用業(yè)務(wù)滋養(yǎng)中臺(tái))

這種方式能比較快的幫助我們探索一個(gè)陌生業(yè)務(wù)領(lǐng)域,但在梳理的過程中一定要從主干出發(fā),切勿一開始就深究細(xì)節(jié)。用業(yè)務(wù)本身幫助完善我們的業(yè)務(wù)領(lǐng)域模型。

二、學(xué)會(huì)拆分產(chǎn)品形成邊界

之前我們有提到一個(gè)概念叫業(yè)務(wù)領(lǐng)域模型,在實(shí)際操作過程中我們的業(yè)務(wù)領(lǐng)域模型需要區(qū)分核心域和公共域。

核心域其實(shí)就是業(yè)務(wù)的核心本質(zhì),不同于公共域消息、權(quán)限等比較常見的業(yè)務(wù)。因此我們需要對(duì)我們的領(lǐng)域模型以及產(chǎn)品進(jìn)行拆分,從而形成邊界。

拆分的原則其實(shí)就是遵從業(yè)務(wù)本身,圍繞業(yè)務(wù)能力進(jìn)行組織。這里我們還用之前的乘車業(yè)務(wù)舉例。

可以比較清晰的看到,拆分的結(jié)果分為核心和公共兩個(gè)部分。針對(duì)大多數(shù)的微服務(wù)架構(gòu),就是根據(jù)這樣的業(yè)務(wù)模式進(jìn)行拆分。拆的過細(xì)或者太粗對(duì)于微服務(wù)和業(yè)務(wù)領(lǐng)域都沒有太大價(jià)值,所以還是要以業(yè)務(wù)本身為準(zhǔn)。

大家也可以根據(jù)整個(gè)服務(wù)的拆分,自己去梳理整體的業(yè)務(wù)流程。

三、用資產(chǎn)的眼光去看待產(chǎn)品并保持演進(jìn)

不管是業(yè)務(wù)領(lǐng)域模型還是產(chǎn)品本身,一定都存在一直迭代的過程。對(duì)于迭代,我們需要承認(rèn)的是產(chǎn)品本身的不完美和缺陷。但這也是任何產(chǎn)品自身但宿命和現(xiàn)實(shí),世界上根本不存在完美的事物。

對(duì)于現(xiàn)有的代碼和業(yè)務(wù)領(lǐng)域模型,我們一定要用資產(chǎn)的眼光去看待。資產(chǎn)本身會(huì)有一個(gè)欠債的概念,當(dāng)我們的代碼在實(shí)現(xiàn)過程中沒有真正考慮復(fù)用性,只是為了實(shí)現(xiàn)需求,本身其實(shí)就相當(dāng)于欠下了無形的債務(wù)。

當(dāng)業(yè)務(wù)擴(kuò)張時(shí),會(huì)發(fā)現(xiàn)我們的代碼完全支持不了業(yè)務(wù)本身,這個(gè)時(shí)候其實(shí)就是還債的過程,對(duì)于業(yè)務(wù)領(lǐng)域模型也是同樣的道理。

任何過度設(shè)計(jì),缺陷設(shè)計(jì)下的弊端總有一天會(huì)暴露出來,欠下的債務(wù)也一定需要償還。好了,這次的領(lǐng)域模型講解就到這里,對(duì)于領(lǐng)域模型我也梳理了大綱,有興趣的朋友可以看看。

領(lǐng)域模型技術(shù)實(shí)踐個(gè)人梳理:

 

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

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

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 學(xué)習(xí)了

    回復(fù)
  2. 請(qǐng)問前幾期文章在哪里呢?

    回復(fù)
    1. 可以來公眾號(hào)看:都市擺渡人

      回復(fù)