在開始這個系列之前,讓我們來思考一個問題,什么是架構?當我們在談到架構的時候,我們指的到底是什么?很多人都嘗試給架構下一個定義,但是這些定義本身很難統一,結合我的理解,我認為架構的內涵包括以下內容:
- 最高層次的系統分解
- 系統中難以改變的東西
- 架構包括組成部分和這些組成之間的交互
架構是分層次的,不同層次的架構關注的內容不同,描述方法不同,實現方式也不同。按照TOGAF的定義,架構主要分為幾個層次即業務架構、應用架構、數據架構和技術架構。
- 業務架構 - 關注組織(類如企業)的業務流程、業務域和業務組件
- 應用架構 - 業務架構中的流程和組件應該分成多少應用,應用之間如何集成和交互
- 數據架構 - 物理和邏輯數據的結構
- 技術架構 - 技術架構是應用架構的技術需求,包括如何進行純技術層面的分層,開發框架選擇,語言選擇,涉及到各自非功能性需求的技術點(安全,性能,日志,異常,緩存,消息,大數據量)等需要使用的關鍵技術
關于架構層次的劃分和相互之間的關系,可以參考http://blog.sina.com.cn/s/blog_493a84550101cfen.html。如果沒有特別指明,文章包括后續的架構都指的是技術架構。
既然有了架構,就應該可以判斷一個架構是好還是壞的,或者說哪方面好、哪方面壞;一個架構的衡量主要通過以下的系統特性來進行:
- 系統高可用性
- 系統性能(包括響應時間、吞吐量等)
- 系統伸縮性
- 系統可擴展性
- 系統安全性
我們要認識到,不同行業的架構復雜性有很大差別,例如電信行業的架構可能需要重點關注硬件設備,而企業應用一般來說業務邏輯復雜并且數據量大。在設計架構時,需要根據實際情況進行綜合考慮,沒有最好的架構,只有最合適的架構;架構的核心理念就是兩個字“平衡”,根據業務需求找到多個系統特性之間的平衡點,它反映了業務、應用、技術甚至是組織架構間的博弈過程。