應(yīng)用架構(gòu)圖

????????在上一節(jié)有了業(yè)務(wù)架構(gòu)的基礎(chǔ)之上,當(dāng)我們需要落地具體的技術(shù)方案時,此時就需要技術(shù)人員開始考慮技術(shù)架構(gòu)了。技術(shù)架構(gòu)是應(yīng)接應(yīng)用架構(gòu)的技術(shù)需求,并根據(jù)識別的技術(shù)需求,進行技術(shù)選項,把各個關(guān)鍵技術(shù)和技術(shù)之間的關(guān)系描述清楚。
????????基礎(chǔ)結(jié)構(gòu)解決的主要問題包括:如何進行技術(shù)層面的分層、開發(fā)框架的選擇、開發(fā)語言的選擇、涉及非功能性需求的技術(shù)選擇。由于應(yīng)用架構(gòu)體系是分層的,那么對應(yīng)的技術(shù)架構(gòu)體系自然也是分層的。大的分層有微服務(wù)架構(gòu)分層模型,小的則是單個應(yīng)用的技術(shù)分層框架。大的技術(shù)體系考慮清楚后,剩下問題就是根據(jù)實際業(yè)務(wù)考慮選擇具體的技術(shù)點。各個技術(shù)點的分析、方案選擇,最終形成關(guān)鍵技術(shù)清單,關(guān)鍵技術(shù)清單應(yīng)考慮架構(gòu)本身的分層邏輯,最終形成一個完整的技術(shù)架構(gòu)圖。
????????簡而言之,技術(shù)架構(gòu)試講產(chǎn)品需求轉(zhuǎn)變?yōu)榧夹g(shù)實現(xiàn)的過程。
單體應(yīng)用架構(gòu)
單體應(yīng)用架構(gòu)一般是比較傳統(tǒng)的分為4層:數(shù)據(jù)層(Data Layer)、應(yīng)用邏輯層(Business Layer)、表現(xiàn)層(Presentation Layer)和基礎(chǔ)通用層(Common Layer)。

展現(xiàn)層
展現(xiàn)層是整個應(yīng)用面向用戶的入口,用戶通過展現(xiàn)層實現(xiàn)與系統(tǒng)的交互。展現(xiàn)層為用戶提供系統(tǒng)功能的操作、系統(tǒng)數(shù)據(jù)的展現(xiàn)。展現(xiàn)層按照面向的用戶類型提供不同的交互服務(wù)。例如在業(yè)務(wù)場景中,用戶有實操層用戶、管理層用戶、決策層用戶。針對不同層級的用戶,系統(tǒng)所提供的功能是不相同:
面向?qū)嵅賹佑脩?,提供的是對系統(tǒng)的操作功能,滿足業(yè)務(wù)日常運營。往往更多的是執(zhí)行具體操作。
面向管理層用戶,滿足管理者的日常管理需求,通常提供經(jīng)營數(shù)據(jù)、日常管理數(shù)據(jù)、團隊業(yè)務(wù)數(shù)據(jù)等等。通過數(shù)據(jù)分析,改善日常運營的流程。
面向決策層用戶,這一層的用戶不需要太細的數(shù)據(jù),為其提供企業(yè)的經(jīng)營診斷數(shù)據(jù)和報告,輔助決策支持。
業(yè)務(wù)層
業(yè)務(wù)層是應(yīng)用為解決業(yè)務(wù)需求,按照產(chǎn)品架構(gòu)中的功能模塊進行細化。業(yè)務(wù)層是對將產(chǎn)品層從粗到細的分解過程。這個過程是對業(yè)務(wù)的細化過程,把項目要交付的模塊細分到最基本的單元。最基本單元是實現(xiàn)日常業(yè)務(wù)操作的最細粒度的功能點。由此,我們能夠得到實現(xiàn)業(yè)務(wù)邏輯的全功能結(jié)構(gòu)。
數(shù)據(jù)層
數(shù)據(jù)層按照應(yīng)用的數(shù)據(jù)模型分別進行存儲。這里的存儲介質(zhì)包含關(guān)系型數(shù)據(jù)庫、NoSQL、分布式文件系統(tǒng)。
基礎(chǔ)層
通用基礎(chǔ)層是為系統(tǒng)提供通用能力的中間件,比如流程引擎、消息中間件、緩存、搜索引擎等等。這些中間件和業(yè)務(wù)是無相關(guān)性的,提供的是通用的基礎(chǔ)技術(shù)能力。
基于上述分析,我們可以得到一個如下單體應(yīng)用的技術(shù)架構(gòu):

分布式應(yīng)用架構(gòu)
分布式應(yīng)用架構(gòu)圖實質(zhì)是產(chǎn)品內(nèi)部所有應(yīng)用在分布式環(huán)境下的調(diào)用關(guān)系圖。各應(yīng)用間通過服務(wù)的形式相互調(diào)用,這是典型的 SOA 架構(gòu)。在應(yīng)用架構(gòu)圖中,SOA 架構(gòu)中的服務(wù)注冊、服務(wù)治理、服務(wù)發(fā)現(xiàn)這些 RPC 框架的基礎(chǔ)平臺功能不用在應(yīng)用架構(gòu)中體現(xiàn)。
應(yīng)用架構(gòu)圖的重點是體現(xiàn)應(yīng)用之間的邏輯關(guān)系和通信關(guān)系,體現(xiàn)產(chǎn)品的內(nèi)部關(guān)系和外部關(guān)系。內(nèi)部關(guān)系是產(chǎn)品內(nèi)各應(yīng)用的調(diào)用關(guān)系;外部關(guān)系展現(xiàn)的是產(chǎn)品與外部系統(tǒng)間的調(diào)用關(guān)系。將應(yīng)用的內(nèi)外關(guān)系呈現(xiàn)在應(yīng)用架構(gòu)中,產(chǎn)品在整個業(yè)務(wù)中的定位和影響將變得清晰。
應(yīng)用間調(diào)用關(guān)系
在產(chǎn)品內(nèi)部的各子系統(tǒng)之間,為了解決業(yè)務(wù)需求,通過應(yīng)用之間的服務(wù)調(diào)用或者異步消息調(diào)用產(chǎn)生數(shù)據(jù)關(guān)系。通過產(chǎn)品架構(gòu)圖中得到的應(yīng)用系統(tǒng)劃分,按照系統(tǒng)間的調(diào)用關(guān)系,形成內(nèi)部應(yīng)用的集成架構(gòu)圖。在應(yīng)用集成架構(gòu)圖中,需要標(biāo)注調(diào)用鏈路中的業(yè)務(wù)含義,清楚的標(biāo)注應(yīng)用之間發(fā)生的業(yè)務(wù)關(guān)系。

外部系統(tǒng)調(diào)用關(guān)系
數(shù)據(jù)輸入做為產(chǎn)品的業(yè)務(wù)數(shù)據(jù)來源,很大部分是外部系統(tǒng)提供。在應(yīng)用架構(gòu)圖中,按照業(yè)務(wù)屬性、來源關(guān)系進行對外部系統(tǒng)進行歸類,并將外部的來源系統(tǒng)納入整個應(yīng)用架構(gòu)中。我們知道計算機系統(tǒng)中,數(shù)據(jù)輸入和數(shù)據(jù)輸出是作為一個整體。應(yīng)用架構(gòu)中除了輸入系統(tǒng),輸出系統(tǒng)做為整個產(chǎn)品的一部分,需要納入到應(yīng)用架構(gòu)圖中。

明確應(yīng)用調(diào)用邊界
應(yīng)用邊界對于產(chǎn)品的定位、產(chǎn)品的設(shè)計有很重要的影響。在應(yīng)用架構(gòu)中需要通過不同顏色的標(biāo)注,來確定產(chǎn)品與外部系統(tǒng)的邊界。通過不同顏色標(biāo)注外部來源系統(tǒng)、內(nèi)部應(yīng)用、應(yīng)用依賴系統(tǒng)、輸出系統(tǒng)。為后續(xù)的規(guī)劃、發(fā)展提供基礎(chǔ)。
