關於架構的幾件小事:架構綜述(1)

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不同於技術實現的絕對過程(代碼換一種形式可能就跑不了...)。架構設計是一個相對論。一切的一切,都建立在目標以及相對可承受的代價上。架構是一種平衡。我這裏說的目標,並不只有系統的目標。同樣也有相關的利益相關人的目標。對,任何系統的實現,可能都最終會變成該組織的映射。這種相對的關係,在架構綜述上有非常顯著的體現。同一個架構設計,可能會有很多種架構綜述,它們長的都不大一樣,但又有統一的目標。所以架構設計令很多架構師着迷,卻也令很多人困惑。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"綜述的綜述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構綜述,也叫:Architecture Overview。它是一個架構設計的大綱,也是核心。大多時候,架構綜述是架構設計在客戶的提案中集中體現。但架構綜述並不是整個架構設計的全部,它可能是一個架構設計的開端,可能是一個架構設計的結尾,也可能是中間過程。架構師可以用他覺得合適的方式去畫架構綜述。同一個架構設計也可能有多種架構綜述。但無論何種形式,架構師應該始終清楚架構綜述的目標:它是一個大綱。所有人通過這個大綱,來連接在一起,共同實現系統。所以爲了能讓人更好的理解這個大綱。所以針對不同的背景的人,可以有不同的表達方式。故架構綜述因人而異。但架構師需要把握整理,雖然不同的人看到的架構大綱不同,但他們的內在內核是同一個設計。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"[以下圖片來自互聯網,並非同一個項目,僅僅說明不同的視角(Viewpoint) 看到的架構綜述可能是不同的]"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"業務視角的架構綜述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/1a/1aaedf305ac519b60aefdb859f14e546.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"技術視角的架構綜述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0a/0aa736d50ee6211d97fdbd12f11ed95c.png","alt":"Web Portal Architecture Diagram Template","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"運維視角的架構綜述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/16/160726ac043d6c1304babcc89d65d965.png","alt":"Network architecture diagram overview - network devices and communications.","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"確定性的決策"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實在架構綜述的時候,不管是顯示的還是隱式,其實都包含了一個決策的過程。一般稱之爲架構決策(Architecture decision)。實際上這個過程纔是架構設計中最能體現架構師功力的過程。我們說了架構設計千變萬化,但內在是同一的。這個同一性,就是架構決策。所以的架構綜述裏面出現的元素,都要有理有據,有提問,有回答。圖上的元素,爲什麼用這此元素而非彼元素。需要明確的決策。即使元素是開放式的。例如數據庫連接形式,那麼也需要給出確定性的範圍:例如組件通過JDBC連接數據庫,連接數量不能多於10個。這個過程比較複雜,咱們這次不關注如何決策,而是關注確定性。經過這個過程之後,架構綜述纔是一個真正能站得住的架構綜述。當架構師站在臺前向客戶演示的時候,才能扛得住客戶暴風驟雨般的提問。實際上架構設計可能不是一個人設計的。這個過程會參與很多人。大家一條一條過,每個細節可能都千錘百煉。所以有經驗的架構師一眼就能分辨出來,這個架構綜述是copy 別人的,還是自己做出來的。至少架構決策在架構綜述上,可以初見端倪。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"新的開始"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構設計到此其實並未結束。架構綜述之所以稱之爲綜述。主要還是因爲架構總是隻是一個大綱,一開始並不精確。在整個架構設計過程內,架構綜述需要反覆迭代錘鍊,精益求精。這個過程做完,再往下一步的時候,又會發現新的問題,這時候回來繼續錘鍊,反覆迭代,直到架構是可落地的,嚴絲合縫的。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章