讓技術人員看得懂的流程(7)——部署模型(完結篇)
讓技術人員看得懂的流程(7)
——部署模型(完結篇)
在上一篇博文“處理模型”中已經提到:在“處理模型”階段劃分為子係統後,為下一階段打下了基礎。當時賣了個關子沒說具體是什麼,本博就來揭開它的麵紗,這就是:“部署模型”。l “部署模型”階段的任務
“部署模型”英文是“Deployment Model”,正好對應UML中的“Deployment Diagrams”,有的文章或者書籍也叫“物理模型”。我之所以沒有用“物理模型”,是因為“物理模型”的概念容易誤解大家認為這個階段隻需要關注物理設備,而“部署模型”相對更加全麵。我們來看部署模型的任務:
1) 確定部署實體,即采用什麼樣的物理設備,例如PC機、服務器、小型機;
2) 確定部署方式,例如局域網部署,企業網部署,因特網部署;
3) 確定部署連接,即組網方案,設計如何將這些物理設備連接起來;
l 具體操作步驟
1)確定部署實體
在“處理模型”階段我們已經將子係統劃分出來了,但如果你的係統性能、可靠性等質量屬性要求很高,那麼就需要進一步考慮將子係統再“排列組合”,分布到不同的機器上去。
“排列組合”的原則還是和劃分子係統的第四步一樣:根據“高內聚、低耦合”的原則、以及性能、可靠性、可擴展性、可測試性等質量屬性要求,將子係統劃分到不同的機器上去。
簡單的說就是“一台不夠用兩台,兩台不夠用三台;PC不夠用工作站,工作站不夠用小型機”。那麼是不是機器數量越多越好,質量越高越好呢?也不盡然,因為還需要考慮成本的因素,這就需要架構師、設計師進行權衡了(可以參閱我的博文:《軟件設計漫談之一:什麼是軟件設計?》)。
2)確定部署方式
確定好“部署實體”後,就需要考慮部署方式,因為不同的部署方式決定了需要采用不同的網絡設備和組網方式。
常見的部署方式有:局域網部署、企業網部署、因特網部署,下麵簡單的介紹一下:
(1) 局域網部署:俗稱LAN,即機器都在一個局域網內部,通過Hub、Lanswitch、網橋等連接,這是範圍最小的一種部署方式;
(2)企業網部署:金融、電信、物流等稍微大的公司都會有企業內部網,企業網內部還會劃分VPN等,通過路由器、交換機等進行連接,這是中等範圍的部署方式;
(3)因特網部署:相信大家對這個都很熟悉,最常見的就是網站,如Sina、CSDN等,需要向寬帶服務商如電信等申請因特網IP地址,這是範圍最廣的一種部署方式;
具體采用哪種方式呢?其實很簡單:客戶會告訴你的:)
當然客戶不會直接告訴你說“我們要采用企業網部署”,客戶會在需求中隱含描述出來,比如說“分公司將數據發給總公司”,這句話就隱含了要采用“企業網部署”或者“因特網部署”這種方式。
3)確定部署連接
確定好部署實體和部署方式後,就需要考慮如何將這些機器連接起來了,即常說的組網,這時就是TCP/IP大顯身手的時候,我們看看具體如何應用TCP/IP:
(1)確定IP地址:包括網段、子網掩碼、每台機器的IP地址;
(2)確定連接方式:單連接、雙連接、四連接,至於八連接,好像還沒有見過:)
(3)確定連接設備:連接設備和部署方式有關,同時也和性能、可靠性有關。例如:局域網要求不高的可以用hub,要求再高點就要低端的Lanswitch了;企業網和因特網就需要路由器了。
千言萬語不如一個樣例,讓我們來看看POS係統在“部署階段”如何操作。在“處理模型”階段我們已經劃分出3個子係統了:商品管理係統、交易係統、信息係統,我們基於這3個係統進行簡要分析:
1)確定部署實體
假設要買POS係統的超市的物流和庫存是集中管理,而交易是由各個分店分散管理,那麼“商品管理係統”和“信息係統”可以部署在同一台小型機上麵(根據性能和可靠性等要求的不同,可能是兩台、三台甚至更多,樣例中我們假設一台就夠了)。
“交易係統”由於是分散的,服務器配置應該就夠了,每個分店一台。
2)確定部署方式
從需求可以很容易看出:POS係統最好采用企業網部署的方式,因為有分店、有總店,這些分店和總店是分散的。
3)確定部署連接
IP地址的分配根據具體情況分配即可。根據部署方式可以推斷出需要采用路由器類型的設備進行連接,而為了保證交易係統的可靠性(總不能網線一斷,超市就關門不做生意了吧),需要雙連接甚至是四連接。
=========================連載完畢==================================
到這裏這一係列就結束了,各位看官是否有所收獲呢?
如果以下問題能夠正確答複,恭喜你,說明你已經基本上掌握了麵向對象設計全流程的處理:
1、客戶的需求是描述性的,例如“我們需要一個POS機”,而代碼是一個一個具體的類和函數,那麼如何從描述性的語言最後轉化到具體的類和函數呢?
2、具體語言的特性,例如Java和C++的private、protected、public這些屬性是從哪裏來的?什麼時候設計的?
3、不管什麼代碼,最後都要運行在具體的平台上,如Windows、Linux、UNIX等,那麼這些平台相關的進程、線程什麼時候設計、如何設計?(不要說你所有的產品都是單線程或者單進程哈:-P)
4、如果是稍微大一點的產品,需要運行在多台機器上,那麼如何確定需要多少機器?如何分工?
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最後更新:2017-04-02 04:01:45