模塊先于接口

通過業(yè)務拆解圖,我們把業(yè)務需求拆解到場景和功能點,然后又把功能點拆分為頁面和接口,下面,我們就可以進入接口的開發(fā)了嗎?還不是,還要進行接口的歸類,模塊的設計,下面,我們就來聊一下這個話題。

什么是模塊呢?模塊就是組成系統(tǒng)的各個單元,他由一系列接口和數(shù)據(jù)字典組成。具體來說,對接口進行模塊梳理,就是看哪些接口可以合并,哪些接口需要單獨拆開,哪些接口屬于一類,應該歸屬到一個模塊下,模塊就是接口的分類。

為什么要在開發(fā)之前,先進行模塊的設計呢?因為一個系統(tǒng)所包含的接口是非常多的,動輒幾百上千個,而且每次產(chǎn)品的迭代,還會不斷引入新的接口。對接口進行模塊拆解,就是梳理接口的一個過程。

好的模塊劃分就是系統(tǒng)的頂層設計,他會讓系統(tǒng)架構更容易理解和維護。其實,隨著業(yè)務的不斷發(fā)展,系統(tǒng)的不斷迭代,復雜度肯定會越來越高,怎么讓系統(tǒng)保持簡潔,每次系統(tǒng)迭代的時候就得需要進行模塊的重新梳理,梳理模塊也是大家一起給系統(tǒng)做打掃的過程。如果不進行梳理,就像總不收拾的房間,會越來越亂。每次進行斷舍離,才能讓房間保持整潔干凈。

那么,好的模塊劃分有什么標準呢?

第一個標準,模塊劃分首要的目標就是要讓人容易理解,不需要額外的解釋成本。容易理解才容易掌握,維護起來才會更加方便。

怎么能讓人容易理解呢?首先,模塊名字得足夠準確和容易理解,好的名字應該能準確的概括旗下所有接口完成的功能,能讓別人更容易理解模塊主要的內容。要站在所有相干方的角度去考慮,模塊名字和劃分盡量貼近實際的業(yè)務場景,這樣大家理解的成本都比較低。

其次,模塊既然是接口的分類,那么,怎么分類就需要滿足人們理解事物的邏輯規(guī)則,比如分類的原則,完全窮盡,相互獨立。完全窮盡就是說各個模塊加起來能完整描述業(yè)務的功能場景,以電商系統(tǒng)為例,他分為商品、訂單、庫存、物流等模塊,這些模塊加在一起,大家就能想到一個電商購買的流程。相互獨立就是說各個模塊的劃分維度應該是一個,模塊之間不要有功能的重合。達到這樣的標準,大家理解起來就不會有歧義。

最后,模塊梳理后的架構圖應該畫出來,并且標記上版本號,每次迭代都要去更新他,要讓大家時刻都能看得到系統(tǒng)最新的結構框架,以及歷史的架構改變。統(tǒng)一的架構圖可以方便大家形成統(tǒng)一的理解,通過查看歷史的變更也能夠了解每個模塊變遷的原因。

第二個標準,模塊的劃分還需要滿足非功能性的需求,也就是要滿足系統(tǒng)對可用性、性能、可維護性、安全性和數(shù)據(jù)一致性等要求。很多情況下,不同的功能和接口在非功能性需求方面的要求是不一致的,這種不一致促使了模塊的重新劃分,重新劃分之后,才能針對不同的模塊做更專業(yè)化的處理。

以電商系統(tǒng)為例,其中,首頁、商品、店鋪和搜索等頁面的訪問量是最高的,因此,這些頁面對數(shù)據(jù)讀取的可用性和性能要求也是最高的。但是對庫存、訂單、物流等模塊來說,都是內部員工來使用,反而對數(shù)據(jù)一致性要求比較高,對性能要求不高。那么,我們就可以把訪問量高的,給用戶來使用的功能劃分到一個模塊,可以叫前臺模塊,給內部用戶使用的功能劃分到一個模塊,可以叫后臺模塊。這么劃分后,我們就可以針對不同的模塊做針對性的架構設計。兩個模塊之間就可以通過異步的方式進行數(shù)據(jù)的同步。

再比如,類似商品秒殺之類的功能,因為用戶會在非常短的時間內,同時進行商品的查詢和購買,對性能和可用性的要求是非常高的,要遠高于系統(tǒng)日常的狀態(tài)。這時候,我就要把秒殺的功能單獨劃分出一個模塊,進行單獨的、針對性的架構設計。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容