導讀:電商業(yè)務與我們的生活息息相關,大家可能對電商多少也有一些了解,事實上,即使是一個最小化的電商系統(tǒng),也依然是非常復雜的。
所以,我們先花一點時間,一起以一個創(chuàng)業(yè)公司的CTO的視角,設計一個最小化的電商系統(tǒng),并以此理清電商系統(tǒng)的架構。讓大家對電商系統(tǒng)的業(yè)務邏輯、系統(tǒng)架構、核心業(yè)務流程有一個基本的認知。

新公司很快就成立了,你成了新公司的CTO。關于改變世界,目前唯一能確定的是,首先要做一個電商系統(tǒng)。具體要做成什么樣,目前還不清楚。你需要與老板討論業(yè)務需求。
- 你:“咱們要做的業(yè)務模式是C2C、B2C還是B2B呢?”
- 老板:“什么B?什么C?我不懂你說的那些技術名詞。”
- 你:“這么說吧,你要做一個某寶網,還是某東網,還是某848網呢?”
- 老板:“不都是一樣的嗎?它們之間有什么區(qū)別?你趕緊做一個出來我看看不就知道了?!”
故事發(fā)展到這里,作為程序員的你是不是有一種似曾相識的感覺?現(xiàn)實就是,需求永遠不明確,永遠在變化,唯一不變的只有變化。優(yōu)秀的程序員適應變化,并且擁抱變化。在需求還不太明確的情況下,比較可行的方案就是,首先搭建不太會發(fā)生變化的核心系統(tǒng),然后盡量簡單地實現(xiàn)一個最小化的系統(tǒng),后續(xù)再逐步迭代和完善。
01 設計電商系統(tǒng)的核心流程
接下來,我們一起設計這個電商的核心系統(tǒng)。
遵照軟件工程的一般規(guī)律,我們先從需求階段開始。那么,需求分析應該如何做呢?理想情況下,系統(tǒng)分析師或產品經理應該負責完成需求分析的任務。但是,現(xiàn)實中絕大多數(shù)情況下,你得到的所謂的“需求”,很有可能就是一兩句話。需求分析的工作最終往往是由開發(fā)者完成的。
很多項目交付以后,仍需要不斷地進行修改和變更,用戶不滿意,開發(fā)者也很痛苦,造成這個問題的根本原因其實就是缺失了需求分析的步驟。所以,為了后續(xù)工作能夠順利開展,每位開發(fā)者都應該掌握一些用于需求分析的方法。
那么,開發(fā)者進行需求分析時應該做些什么呢?這里先不介紹那些做需求分析的方法和理論,只告訴你最重要、最關鍵的一個點:不要一上來就設計功能,而是先明確下面這兩個問題的答案。
- 這個系統(tǒng)(或者功能)是給哪些人用的?
- 這些人使用這個系統(tǒng)是為了解決什么問題?
這兩個問題的答案,我們稱之為業(yè)務需求。那么,對于我們將要設計的電商系統(tǒng),其業(yè)務需求又是什么呢?如果大家很熟悉電商的業(yè)務,那么回答這兩個問題應該很容易。
第一個問題,電商系統(tǒng)是給哪些人用的?首先是買東西的人,即“用戶”;其次是賣東西的人,即“運營”;還有一個非常重要的角色就是出錢的人,即“管理者”(請記住,在設計任何一個系統(tǒng)的時候,管理者的意見都是非常重要的)。綜上所述,電商系統(tǒng)是面向用戶、運營和管理者開發(fā)的。
第二個問題,用戶、運營和管理者使用電商系統(tǒng)分別想要解決什么問題?這個也很容易回答,用戶為了買東西,運營為了賣東西,管理者需要通過系統(tǒng)了解自己所得的收益。
這兩個問題的答案,或者說業(yè)務需求,稍加細化后,可以用圖1-1進行清晰的表述。
▲圖1-1 電商系統(tǒng)用例圖
圖1-1在UML(統(tǒng)一建模語言)中稱為用例圖(Use Case),是我們進行需求分析的時候所要畫的第一張圖。用例圖可用于回答業(yè)務需求中的兩個關鍵問題,即這個系統(tǒng)給誰用?他們用這個系統(tǒng)是為了解決什么問題?
一般來說,業(yè)務需求與我們要設計的系統(tǒng)關系不大。為什么這么說呢?因為我們將圖1-1中的用例,放在傳統(tǒng)的商業(yè)企業(yè)(比如,一個小雜貨鋪、一個線下實體商場或商店,或者一個做電視購物的公司)中也是適用的,所以,做業(yè)務需求的主要目的是理清楚業(yè)務場景是怎樣的。
下面就來分析電商系統(tǒng)的業(yè)務流程。很顯然,電商系統(tǒng)最主要的業(yè)務流程,一定是購物流程。購物流程很簡單,具體流程如圖1-2所示。
所有電商的購物流程幾乎都是如此,下面就來分析一下這個流程。
▲圖1-2 電商系統(tǒng)購物流程圖
流程從用戶選購商品開始,用戶首先在App中瀏覽商品,找到心儀的商品之后,把商品添加到購物車,選完商品之后,打開購物車,提交訂單。下單結算之后,用戶就可以支付了。支付成功后,運營人員會為已經支付的訂單發(fā)貨,為用戶郵寄相應的商品。最后,用戶收到商品并確認收貨。至此,一個完整的購物流程就結束了。
02 根據流程劃分功能模塊
接下來,我們再進一步細化電商購物的業(yè)務流程,看一下電商系統(tǒng)是如何實現(xiàn)該流程的。圖1-3所示的是細化之后的電商系統(tǒng)購物流程時序圖(Sequence Diagram)。
▲圖1-3 電商系統(tǒng)購物流程時序圖
下面就來詳細講解圖1-3所示的時序圖中的各個步驟。
- 用戶瀏覽商品,這個步驟需要通過一個商品模塊來展示商品詳情頁,用戶可以從中獲取所瀏覽商品的詳細介紹和價格等信息。
- 然后,用戶把選好的商品加入購物車,這個步驟需要使用一個購物車模塊來維護用戶購物車中的商品。
- 接下來是用戶下單,這個步驟需要基于一個訂單模塊來創(chuàng)建新訂單。訂單創(chuàng)建好了之后,系統(tǒng)需要把訂單中的商品從購物車中刪減掉。
- 訂單創(chuàng)建完成后,系統(tǒng)需要引導用戶付款,即發(fā)起支付流程,可通過一個支付模塊來實現(xiàn)支付功能,用戶成功完成支付之后,系統(tǒng)需要把訂單的狀態(tài)變更為“已支付”。
- 成功支付之后,運營人員就可以發(fā)貨了,發(fā)貨之后,系統(tǒng)需要扣減對應商品的庫存數(shù)量,這個步驟需要基于一個庫存模塊來實現(xiàn)庫存數(shù)量的變更,同時系統(tǒng)還需要把訂單狀態(tài)變更為“已發(fā)貨”。
- 最后,用戶收到商品,在系統(tǒng)中確認收貨,系統(tǒng)需要把訂單狀態(tài)變更為“已收貨”,流程結束。
這個流程涉及5大功能模塊,即商品、購物車、訂單、支付和庫存,這5大模塊就是一個電商系統(tǒng)中的核心功能模塊。
當然,僅有這5個模塊是不夠的,因為我們只分析了“購物”這個最主要的流程,并沒有完全涵蓋業(yè)務需求中的全部用例,比如,運營人員進貨、管理者查看報表等還沒有覆蓋到。
相比購物流程,剩下的幾個用例和流程都相對簡單一些,我們可以采用同樣的方法來分析其他的功能模塊。這里將省略分析過程,直接給出我們所要實現(xiàn)的電商系統(tǒng)的功能模塊劃分(如圖1-4所示)。
▲圖1-4 電商系統(tǒng)功能模塊劃分
圖1-4使用了UML中的包圖(Package Diagram)來表示電商系統(tǒng)的功能模塊。
整個系統(tǒng)按照功能,可以劃分為10個模塊,除了購物流程中涉及的商品、訂單、購物車、支付和庫存這5個模塊之外,還補充了促銷、用戶、賬戶、搜索推薦和報表這5個模塊,這些都是構建一個電商系統(tǒng)必不可少的功能模塊。下面就來逐一說明每個模塊需要實現(xiàn)的功能。
- 商品:維護和展示商品的相關信息。
- 訂單:維護訂單信息和訂單狀態(tài),計算訂單金額。
- 購物車:維護用戶購物車中商品的信息。
- 支付:負責與系統(tǒng)內外部的支付渠道對接,實現(xiàn)支付功能。
- 庫存:維護商品的庫存信息。
- 促銷:制定促銷規(guī)則,計算促銷優(yōu)惠信息。
- 用戶:維護系統(tǒng)的用戶信息,注意,用戶模塊是一個業(yè)務模塊,一般不負責用戶的登錄和認證,這是兩個完全不同的功能。
- 賬戶:賬戶模塊負責維護用戶的賬戶信息。
- 搜索推薦:提供商品搜索功能,并負責各種商品列表頁和促銷頁的組織和展示,簡單地說就是,搜索推薦決定用戶優(yōu)先看到哪些商品。
- 報表:實現(xiàn)數(shù)據統(tǒng)計和分析功能,生成報表,為管理者進行經營分析和決策提供數(shù)據信息。
這里需要特別說明的是,促銷模塊是電商系統(tǒng)中最復雜的一個模塊。各種優(yōu)惠券、滿減、返現(xiàn)等促銷規(guī)則,每一條都非常復雜,再加上這些規(guī)則往往還要疊加計算,有時甚至會復雜到連制定促銷規(guī)則的人都算不清楚。
所有電商公司無一例外都曾因為促銷規(guī)則制定失誤,導致商品實際售價遠低于成本價,使公司受到一定程度的損失。盡管如此,五花八門的促銷活動依然是提升銷量最有效的手段,因此需要充分利用。
作為電商系統(tǒng)的設計者,我們需要把促銷規(guī)則的變化和復雜性控制在促銷模塊內部,不能因為一個促銷模塊而導致整個電商系統(tǒng)都變得非常復雜,否則設計和實現(xiàn)將會很難。
一種可行的做法是,把促銷模塊與其他模塊的接口設計得相對簡單和固定,這樣系統(tǒng)的其他模塊就不會因為新的促銷規(guī)則改變而隨之進行改變。
在創(chuàng)建訂單時,訂單模塊需要把商品和價格信息傳給促銷模塊,促銷模塊返回一個可以使用的促銷列表,用戶選擇對應的促銷和優(yōu)惠,訂單模塊把商品、價格、促銷優(yōu)惠等信息,再次傳給促銷模塊,促銷模塊再返回促銷之后的價格。在最終生成的訂單中,系統(tǒng)只需要記錄訂單使用了哪幾種促銷規(guī)則,以及最終的促銷價格就可以了。
這樣,無論促銷模塊如何變化,訂單和其他模塊的業(yè)務邏輯都不需要隨之改變。
至此,我們就完成了一個電商系統(tǒng)的概要設計,大家對電商系統(tǒng)應該也有了一個初步的了解。
03 小結
下面就來回顧一下一個電商系統(tǒng)的設計中所包含的核心要點。
首先,電商系統(tǒng)面向的角色是:用戶、運營人員和管理者。這三個角色對電商系統(tǒng)的需求是:用戶通過系統(tǒng)來購物,運營人員負責商品的銷售,管理者關注系統(tǒng)中的經營數(shù)據。
電商系統(tǒng)最核心的流程是用戶購物的流程,購物流程從用戶瀏覽選購商品開始,加購、下單、支付、運營人員發(fā)貨、用戶確認收貨,至此電商系統(tǒng)的購物流程結束。
細化這個流程之后,我們可以分析出支撐這個流程的核心功能模塊:商品、訂單、購物車、支付和庫存。除此之外,一個完整的電商系統(tǒng)還包括促銷、用戶、賬戶、搜索推薦和報表這些必備的功能模塊。
作為一名開發(fā)者,在做需求分析的時候,需要把握的一個要點是:不要一上來就設計功能,而是要先理清業(yè)務需求。這也是本文反復強調的兩個問題:這個系統(tǒng)是給哪些人用的?他們分別用這個系統(tǒng)來解決什么問題?這樣就可以確保做出來的系統(tǒng)大體上不會偏離用戶的預期。
最后,在講解系統(tǒng)功能模塊劃分的時候,介紹了一個能夠有效降低系統(tǒng)復雜度的設計經驗。那就是,如果系統(tǒng)業(yè)務是復雜而多變的,那么請盡量識別出這部分復雜業(yè)務的邊界,將復雜業(yè)務控制在一個模塊內部,從而避免將這種復雜度擴散到整個系統(tǒng)中去。
聲明:本文由網站用戶liubaili發(fā)表,超夢電商平臺僅提供信息存儲服務,版權歸原作者所有。若發(fā)現(xiàn)本站文章存在版權問題,如發(fā)現(xiàn)文章、圖片等侵權行為,請聯(lián)系我們刪除。