把壹個整體(完成人類生存的所有工作)切分成不同的部分(分工),由不同角色來完成這些分工,並通過建立不同部分相互溝通的機制,使得這些部分能夠有機的結合為壹個整體,並完成這個整體所需要的所有活動,這就是架構。
1、邊界劃分:根據要解決的問題,對目標系統的邊界進行界定。
2、能力劃分:對目標系統按某個原則的進行切分。切分的原則,要便於不同的角色,對切分出來的部分,並行或串行開展工作,壹般並行才能減少時間。
3、交互機制:並對這些切分出來的部分,設立溝通機制。
4、根據3,使得這些部分之間能夠進行有機的聯系,合並組裝成為壹個整體,完成目標系統的所有工作。
架構可以分為:業務架構、應用架構、數據架構和技術架構。
業務(邏輯)架構:使用壹套方法論對產品(項目)所涉及到的需求的業務進行業務邊界劃分,簡單的講就是根據壹套邏輯思路進行業務的拆分,總體原則是對業務進行業務邊界的劃分,比如做壹個企業訂購服務網站,妳需要把商品類目、商品、訂單、訂單服務、支付、退款很清晰的劃分出來,而業務架構不需要考慮諸如我用什麽技術開發、我的並發大怎麽辦、我選擇什麽樣的硬件等等。
應用架構:應用是介於業務語言與技術語言之間,是對整個系統實現的總體上的架構,他需要指出系統的層次、系統開發的原則、系統各個層次的應用服務,例如,上述系統中可以分為、數據層(資源層)、數據服務層、中間構建服務層、業務邏輯層、表現層,並寫明每個層次應用服務。應用架構是要說明產品架構分哪些應用系統,應用系統間是如何集成的,考慮兩個事情:第壹、考慮的是子系統間的關系。第二、考慮將可復用的組件或模塊進行下沈,沈澱到平臺層,為業務組件提供統壹的支撐。數據(持久化)架構:對存儲數據(資源)的架構方法論,其架構原則同應用架構大同小異,即考慮到各個系統應用場景、不同時間段的應用場景對數據進行諸如數據異構、讀寫分離、數據庫或NOSQL的策略、緩存的使用、分布式數據(數據庫)策略等等。數據架構主要解決三個問題:第壹,系統需要什麽樣的數據;第二,如何存儲這些數據;第三,如何進行數據架構設計。
技術架構:應用架構本身只關心需要哪些應用系統,哪些平臺來滿足業務目標的需求,而不會關心在整個構建過程中妳需要使用哪些技術。技術架構是應接應用架構的技術需求,並根據識別的技術需求,進行技術選型,把各個關鍵技術和技術之間的關系描述清楚。技術架構解決的問題包括:如何進行純技術層面的分層、開發框架的選擇、開發語言的選擇、涉及非功能性需求的技術選擇。總體來看,首先需要熟悉業務,形成業務架構,根據業務架構,做出相應的數據架構和應用架構,最後通過技術架構落地實施。
業務架構是戰略,應用架構是承上啟下,壹方面承接業務架構的落地,另壹方面影響技術架構的選型。如何針對當前需求,選擇合適的架構,如何面向未來,保證架構平滑過渡,這個是軟件開發者,特別是架構師,都需要深入思考的問題。
沒有最優的架構,只有最合適的架構,壹切系統設計原則都要以解決業務問題為最終目標,脫離實際業務的技術情懷架構往往是空中樓閣。