都是架構,憑什麼你是對的?架構視圖那點事

工作中,我們經常會發現老闆畫的架構圖,產品經理畫的架構圖,和研發經理髮的架構圖,看起來完全都不一樣,到底誰的是對的?

對於這個問題,我們先來回顧下,架構的定義:

架構,這個詞最早來源於建築工程,後來應用到組織和軟件等各個領域,比如組織架構、IT架構,數據庫架構,等等,他們都有做一個共同的特點,就是結構和願景。

所以,架構的定義可以概況爲:

爲了達到某個目標(願景),將產品分解爲一系列組件、模塊和交互(結構)。

對同一個目標,不同的人有不同的觀察角度,當然就會形成不同的分解方案,這就是所謂的架構視圖。理論上觀察角度無窮多,架構視圖也會無窮,實際上當然不需要那麼多。

1、架構視圖的分類

基本能滿足我們需求的架構視圖,可以歸結爲五種:

應用架構:也叫邏輯架構,關注子系統劃分,大功能塊。不僅包括用戶可見的功能,也包括一些基礎模塊以及輔助模塊。

業務架構:也叫俯視架構,包括業務規劃,業務模塊、業務流程,對整個系統的業務進行拆分,對領域模型進行設計,把現實的業務轉化成抽象對象。

技術架構:也叫系統架構, 確定組成應用系統的實際運行組件(lvs,nginx,tomcat,php-fpm等),這些運行組件之間的關係。存儲方案及策略。進程、線程、對象等運行時概念,以及相關的併發、同步、通信等問題。這就是我們通常理解的架構。

代碼架構:也叫開發架構,關注程序包,主要爲開發人員提供切實可行的指導,不僅包括要編寫的程序,還包括可以直接使用的第三方SDK或者現成的框架、類庫以及開發的系統將運行於其上的系統軟件或者中間件。

部署架構:也叫物理架構,關注‘目標程序及其依賴的運行庫和系統軟件’最終如何安裝或部署到物理機器,以及如何部署機器和網絡來配合軟件系統的可靠性、可伸縮性等要求。

2、架構視圖怎麼用?

架構即決策。架構需要面向業務需求,並在各種資源(人、財、物、時、事)約束條件下去做權衡、取捨。下面就用一個例子帶大家感受不同架構視圖在決策過程中的作用。

第一步:確定目標
搬磚的:“頭,我們要造什麼?”;
設計師:“XXX商城”;
翻譯:【目標】比如微博系統

第二步:劃分子系統
搬磚的:“圖紙畫出來了嘛?”;
設計師:“一樓主要以女性消費爲主體、二樓以大衆娛樂爲主體、三樓以美食爲主體”;
翻譯:【結構】相當於微博系統中的各個子系統,比如評論子系統、動態子系統、消息子系統

注:這相當應用架構,領導更關注的

第三步:劃分業務模塊
搬磚的:“頭,說人話”;
設計師:“一樓有賣衣服、化妝品的,二樓有唱歌、看電影的,三樓有吃的”;
翻譯:【模塊】按照邏輯區分,比如存儲數據模塊、搜索模塊、消息推送模塊

注:這相當於業務架構,產品經理關注的

第四步:劃分功能組件
搬磚的:“有沒有很知名的店啊?”;
設計師:“有的,一樓有香奈兒、優衣庫…、二樓有好樂迪、萬達影院…、三樓有海底撈、避風塘…”;
翻譯:【組件】比如按存儲數據模對應Mysql、搜索對應ElasticSearch、 消息推送對應Kafka

注:這相當於技術架構,碼農更關注的

第五步:確定技術路線
搬磚的:“對了,頭,商城大門有啥需要叮囑的施工規範不?或有啥簡化施工工藝的新技術嘛?”;
翻譯:有框架的可以用嗎?
設計師猛吸了一口煙,把菸頭扔在地上,用皮鞋左右攆了兩下,緩緩從嘴裏崩出四個字。
“老樣子吧”。
翻譯:【框架】Spring全家桶甩起來

注:這相當於代碼架構,碼農更關注的

第六步:系統如何上線
搬磚的:“頭,搞好了商家怎麼入住?”;
設計師:“統一裝修,統一搬運,拎包入住…哦,錯了,搬貨入駐”
翻譯:【部署】雲服務,docker走起來

注:這相當於部署架構,售後更關注的

3、一些概念解釋

(1)系統與子系統?

  • 系統是由一系列有關聯,按特定規則組成的個體,並且產生新的能力。
  • 系統與子系統的劃分則是觀察的角度不同。

需要注意的是,“產生新的能力”,這是系統/子系統和組件/模塊的差別。

(2)架構和框架?

  • 框架 Framework:關注“規範”,比如MVC、Spring MVC 架構
  • Architecture:關注的是“結構”。不同的分解角度,產生不同的架構。

框架是規範也是約束,可以理解爲封閉性的話題,定義好,讓別人如何去使用,而架構是一種結構,是一種開放性的話題,如何去設計組織架構,如何讓架構更具有拓展性,減少溝通錯誤成

比如大家常用的Spring MVC框架,從開發規範角度,也可以叫做Spring MVC架構,他是一種技術架構的具現。

(3)組件和模塊?

  • 模塊:從業務維度上職責的劃分,比如登錄模塊。通常在業務視圖中體現。
  • 組件:從物理上或技術上的劃分,更像一個零件。比如我們常說的插件。通常在技術視圖中體現。

所以,在功能相同的情況下,模塊也可能等同於組件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章