前面已經講述瞭如何做需求分析,通過準確、全面、深入的需求分析,我們搞清楚了到底要做什麼,形成了可落地的業務架構,以及完整的功能點列表。
接下來,我們就要來進行架構設計了。
架構設計是一個軟體從無到有的過程,不是一蹴而就的,我們先來看看高層架構設計。
一:在高層架構設計階段,架構師需要做什麼,包含但不限於:
技術架構、部署架構、安全架構、儲存架構、網路架構 等
這是架構師的主戰場之一
在這個階段裡面,我們需要對軟體進行各個方面的架構設計,前面已經有了業務架構,這是我們做技術架構的前提。
技術架構涉及很多,比如:平臺架構、開發架構、資料庫架構等,這些統稱是技術架構,就是技術方面的架構。
我們還需要考慮未來這個系統如何部署,進一步到軟硬體的架構、網路架構等,這些都需要在部署架構上進行考慮。
還有呢就是安全方面的架構,這個也涉及到很多個層次,比如:防火牆的服務;進入系統的時候,閘道器進行的鑑權;資料進入系統,傳輸的安全、儲存的安全等。
除了這些,還有類似於抵抗業務攻擊、API回放;或者是跟業務規則結合的風控等等,這些都要在安全架構裡面來考慮。
我們們做系統,可能有很多資料需要儲存,不僅僅是存放到資料庫,可能還有很多資料,需要根據要求和特點,分別儲存到NoSql、檔案 或 網路儲存等地方,這就需要我們做儲存架構設計。
那是不是除了這些,就不用考慮其他的呢,不是的,還有很多,比如:我們的系統需要和其他系統進行結合,那麼,你的應用整合架構是怎樣的?
或者說我們的系統需要對接第三方,比如:SAP、ERP、WMS等,對接的形式和對接架構是怎樣的?
如果我們的系統要開放介面給其他外部系統使用,我們可能要做OpenAPI的開放架構,架構形式是怎樣的?
等等的吧,這些都是我們們在做高層架構設計階段要考慮的。
當然,這個階段一般只是考慮高層的架構或者是結構形式,儘量不考慮業務功能的具體實現,這些工作可以放到後面的架構設計和詳細設計階段再去做。
好,瞭解了架構師在這個階段需要做什麼過後,來看看具體做的方法。
對於做架構設計來講,沒有特別通用的,放之四海而皆準的方法,因為如果有標準方法的話,大家依葫蘆畫瓢的套用,也就不需要做什麼架構設計了。
根據多年的經驗,不管做什麼樣的架構,基本都會遵循一定的方式,稍微總結一下,形成下面的基本方法。
二:基本方法
從外向內,由粗到精,逐步細化
估計大家會覺得:看上去非常簡單,但感覺比較空洞,聽上去是那麼回事,但實際上不理解,也不知道怎麼做。
這都很正常,要真正理解和掌握這幾句話,需要大量的實踐和思考。後面如果有機會,會給大家開設專門的訓練,通過持續的訓練,大家才能領悟它們背後的含義和精髓。
這裡還是稍微展開給大家描述一下。
(一)從外向內
當我們去設計一個系統的高層架構的時候,我們首先把系統當成一個黑盒來看,是什麼都沒有的,就是要從零開始來設計。
從系統之外來看待系統,系統就是一個黑盒。然後,當我進入到系統的時候,可能會看到很多的黑球,每個黑球代表一個高層的子系統或者是大的服務。
類似的,當你把視角進入到一個黑球的時候,你又看到很多更小的黑球,相當於是模組或元件,以此類推。
這也就是所謂的從外向內,看到這個系統內部的一些組成結構,以及它們之間的關係,比如A黑球依賴於B黑球之類的。
(二)由粗到精
把從外向內審視系統內部的這個過程,當作分層來看待的話。
每一層,你都要考慮這部分具體的模組多少,相互之間什麼關係,每個模組究竟完成些什麼功能,每個模組的邊界是什麼等等的。
那麼在設計的時候,剛開始肯定是一個粗略的設計,比如:A子系統的大致功能,和其他子系統的互動關係等。
隨著你的視角,從外向內,一層一層審視,那麼,你的設計就會逐漸從粗略走向精化。類似於剛開始只看見個輪廓,很粗略;然後一層一層的精化,會變得越來越清晰,慢慢地可以看到裡面的脈絡和紋路了。
這就是一個由粗到精到過程,也是實際進行軟體架構設計的過程。
(三)逐步細化
由粗到精的過程中,也是設計逐步細化的一個過程。
先是整個系統到子系統;然後到模組;到元件;最後到一個一個功能塊,然後繼續細化,就到一個一個具體的功能了。
把這些東西都設計清楚,細化好了,就是一份不錯的架構設計了。
事實上,這裡講的這個基本方法,並不僅限於高層架構設計階段,後面的架構設計、設計細化、詳細設計等階段,也都是基於這樣的方法來做,只不過不同的層次,關注點不一樣而已。
基本方法大致就聊完了,估計有一些朋友還是會覺得沒有什麼感覺,前面也說了,後面有機會的話,給大家一些實際的訓練,這樣才能更深入的理解和掌握這些方法。
這個就跟大家去學游泳,學打羽毛球一個道理,每節課,教練教你一到兩個動作,然後給你做個示範,通常也就五六分鐘,如果講完你就走了,你能學會游泳、學會打羽毛球嗎?
答案肯定是不能的。同樣道理,學習架構設計也一樣,給你講了每個階段要做什麼,以及如何做,就是做的方法,你不去反覆實踐和思考,不去按照這些方法反覆進行練習,是很難真正理解和掌握的。
好了,本次就先聊到這兒,歡迎留言評論,與我互動,歡迎點贊、轉發、收藏,希望能對大家有點幫助。
更多架構師之路乾貨文章,已在路上,稍後就到!