paulwong

          My Links

          Blog Stats

          常用鏈接

          留言簿(67)

          隨筆分類(1392)

          隨筆檔案(1150)

          文章分類(7)

          文章檔案(10)

          相冊

          收藏夾(2)

          AI

          Develop

          E-BOOK

          Other

          養生

          微服務

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          60天內閱讀排行

          聊聊架構

          什么是系統架構?

          從字面上理解,系統架構是系統的框架結構,是系統進行抽象之后的一個草圖。它包含了系統中各個抽象組件的協作方式。


          為什么需要架構?

          好的架構能夠降低系統的創造和維護成本,特別是維護成本。一個系統的創造成本低,而維護的成本大,特別是互聯網應用,一般情況下把一個系統搞上線只需要一個月,但是有的系統搞下線缺需要幾個月,而維護則需要數年。好的設計師不會在系統上線后對系統進行大的修改,從而減少系統的維護成本。

          如果區分創造和維護兩個階段的話,架構師分為系統架構師和維護架構師,架構新的系統的是系統架構師,而維護老系統的則是維護架構師,程序員大多數愿意做新系統不愿意維護老系統,因為感覺沒什么技術含量,但是維護老的系統反而更難,因為老系統的重構和改進更加復雜,維護架構師不僅需要讀懂老系統架構設計,還要在不影響老系統功能的情況下,進行功能新增和重構。我的一位同事在對一個舊的系統進行重構之前,讀了幾個星期的代碼,然后才開始設計改進方案。

          架構設計的目標

          設計的目標圍繞著降低成本這個需求進行。設計的目標非常多,不同的系統架構目標也不一致,但是我覺得比較重要的架構目標有以下幾個,可擴展性,靈活性和可插入性。

          可擴展性,新的功能容易加入到系統里,降低創造成本。
          靈活性,一處修改不會波及其他的地方,降低維護成本。
          可插入性,同樣的功能可方便的替換,降低創造和維護成本。
          那么如何實現這三個目標

          提高可擴展性:把不易變的抽象出來。抽象層要比實現層要更穩定,抽象層的變化要少。把變化的集中起來,比如把容易變化的功能放在單獨一個系統或者一個模塊里。
          靈活性:模塊化,每個模塊相互獨立,減少模塊之間的藕合度,修改不會互相傳遞。
          提高可插入性:模塊化,服務化。
          如何開始架構

          當一塊新業務放在你面前時,如何進行系統架構?我覺得需要進行以下幾個步驟的思考:

          業務分析:輸出業務架構圖,這個系統里有多少個業務模塊,從前臺用戶到底層一共有多少層。
          系統劃分:根據業務架構圖輸出系統架構圖,需要思考的是這塊業務劃分成多少個系統,可能一個系統能支持多個業務。基于什么原則將一個系統拆分成多個系統?又基于什么原則將兩個系統合并成一個系統?
          系統分層:系統是幾層架構,基于什么原則將一個系統進行分層,分成多少層?
          模塊化:系統里有多少個模塊,哪些需要模塊化?基于什么原則將一類代碼變成一個模塊。

          posted on 2014-11-28 23:06 paulwong 閱讀(340) 評論(0)  編輯  收藏 所屬分類: SOFTWARE ARCHITECTURE

          主站蜘蛛池模板: 汉源县| 竹溪县| 改则县| 东乌珠穆沁旗| 教育| 喜德县| 房山区| 星子县| 夹江县| 牟定县| 康马县| 罗田县| 沅江市| 四川省| 甘洛县| 南江县| 渝北区| 望谟县| 长沙县| 沈丘县| 睢宁县| 托里县| 巴中市| 长汀县| 平山县| 岐山县| 邵阳市| 曲沃县| 江川县| 和顺县| 大理市| 调兵山市| 工布江达县| 永福县| 屯留县| 大余县| 甘孜县| 长顺县| 富顺县| 剑阁县| 治多县|