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