架構(gòu)設(shè)計這個詞不知道大家是否聽說過,對于非技術(shù)人員來說可能比較難懂。今天我們就來介紹一下什么是架構(gòu)設(shè)計?架構(gòu)設(shè)計的方向是什么?架構(gòu)設(shè)計就是一個找準(zhǔn)數(shù)據(jù)主體,明確處理邏輯,平衡矛盾關(guān)系的一個過程。它需要根據(jù)實際業(yè)務(wù)進(jìn)行適當(dāng)?shù)某橄螅@樣它就可以適合體現(xiàn)在計算機的世界。架構(gòu)設(shè)計的需要我們不斷的積累經(jīng)驗,當(dāng)然也靠一點悟性和靈感。下面我們來看看如何根據(jù)不同需求進(jìn)行不同的架構(gòu)設(shè)計。
架構(gòu)的本質(zhì)是事物與事物之間恰當(dāng)?shù)年P(guān)系,不同領(lǐng)域的架構(gòu),其事物的指代不同,比如對于組織架構(gòu)而言,事物指的是人與機構(gòu);建筑架構(gòu),事物指的是鋼筋混凝土與空間。那在軟件領(lǐng)域,事物指的是什么呢?我們知道,軟件系統(tǒng)的本質(zhì)是人類將自身無法處理的大量業(yè)務(wù)相關(guān)的數(shù)據(jù)進(jìn)行篩選分類,并轉(zhuǎn)換成計算機可以識別的格式,借助其強大計算能力來輔助處理。因此在軟件領(lǐng)域,架構(gòu)中的事物指的是業(yè)務(wù)數(shù)據(jù)與基于運算能力的業(yè)務(wù)邏輯,說的再寬泛一點就是數(shù)據(jù)與處理數(shù)據(jù)的計算能力。那么,架構(gòu)設(shè)計其本質(zhì)就是尋找數(shù)據(jù)、計算以及它們之間的平衡關(guān)系,這里面包括三個方面的要素,即數(shù)據(jù)、計算、以及平衡關(guān)系,其中數(shù)據(jù)和計算是架構(gòu)設(shè)計的基礎(chǔ),根據(jù)實際業(yè)務(wù)需求一般不難找出,而平衡關(guān)系是綜合考慮多方面得到的一種狀態(tài),也是衡量一個架構(gòu)設(shè)計優(yōu)劣的核心要素。
1、數(shù)據(jù),在對一個系統(tǒng)進(jìn)行架構(gòu)設(shè)計時,首先我們需要做的就是依據(jù)本系統(tǒng)所承載的業(yè)務(wù)需求,找出需要處理的最重要或最核心的數(shù)據(jù),這些數(shù)據(jù)一般隱藏在線下的紙質(zhì)材料里,或者記錄在日常辦公的筆記里,或是約定俗成的共同認(rèn)識,只要從實際業(yè)務(wù)出發(fā),找這些數(shù)據(jù)并不難。如果你無從下手,這里有個小竅門可以利用,找一個出現(xiàn)率很高的業(yè)務(wù),在該業(yè)務(wù)處理前盡可能多的記錄一些可能與該業(yè)務(wù)相關(guān)的數(shù)據(jù)狀態(tài),待業(yè)務(wù)處理完成后,再次記錄,并與之前的數(shù)據(jù)進(jìn)行比較,那些發(fā)生了變化的往往就是我們需要重點關(guān)注的重要數(shù)據(jù)。舉例來說,如果這是一個政府行政辦公的系統(tǒng),那么辦公流轉(zhuǎn)過程就是數(shù)據(jù),每個環(huán)節(jié)辦理狀態(tài)就是數(shù)據(jù);如果這是銀行信用卡管理系統(tǒng),那么用戶信用卡可用金額、賬單、有效期等狀態(tài)信息就是數(shù)據(jù),每筆刷卡流水就是數(shù)據(jù);如果這是電子商務(wù)系統(tǒng),那么商品信息、用戶訂單、購物車信息就是數(shù)據(jù)。。。等等,所有那些在實際業(yè)務(wù)過程中會變化的,并且是與該業(yè)務(wù)緊密相關(guān)的數(shù)據(jù),都是我們需要找到的數(shù)據(jù),在所有已經(jīng)找到的數(shù)據(jù)中,再依據(jù)實際業(yè)務(wù)的重要程度,找出最重要最核心的數(shù)據(jù),作為在架構(gòu)設(shè)計中我們需要重點處理的對象,其他次重要的數(shù)據(jù)在核心數(shù)據(jù)充分處理的前提下作為平衡關(guān)系的備用因素。
2、計算,重要數(shù)據(jù)找到后我們還需要確定如何處理這些數(shù)據(jù),即計算,說的明白一點就是計算邏輯是什么,計算邏輯類似但并不完全等同于業(yè)務(wù)邏輯,它是業(yè)務(wù)邏輯在計算機世界里的一種體現(xiàn),業(yè)務(wù)邏輯在真實世界里需要考慮人、時間、空間的因素,而計算邏輯在計算機的世界里,是二進(jìn)制碼、CPU、內(nèi)存、存儲、網(wǎng)絡(luò)等因素,還是以上面的例子來說,政府行政辦公系統(tǒng)需要將線下的紙質(zhì)簽字蓋章從發(fā)起請求到辦結(jié)的全過程搬移到線上由系統(tǒng)處理,那就需要轉(zhuǎn)化成線上的在線申請、辦理、流轉(zhuǎn)、通知、辦結(jié)、存檔等過程,這些過程在線下可能有不同的部門來負(fù)責(zé),但是線上將由我們設(shè)計的系統(tǒng)完全支撐;對于銀行信用卡管理系統(tǒng),需要將銀行對信用卡的管理業(yè)務(wù)轉(zhuǎn)化成具體的設(shè)置或查詢可用金額、賬單、有效期等信息的功能,還有記錄和統(tǒng)計用戶消費流水等,如果業(yè)務(wù)有需求,甚至需要根據(jù)用戶的消費流水對用戶畫像,以便進(jìn)行精準(zhǔn)營銷等所謂的大數(shù)據(jù)分析模塊;電子商務(wù)系統(tǒng)也是一樣,需要系統(tǒng)提供向用戶展示商品信息,記錄用戶點擊購買后的購物車信息,創(chuàng)建或更新用戶的訂單信息,以及跟蹤訂單從倉庫打包到送達(dá)的物流信息等等,這些都是我們對數(shù)據(jù)進(jìn)行的動作,而動作不是我們憑空想象出來的,是從實際的業(yè)務(wù)處理轉(zhuǎn)化到計算機領(lǐng)域而來的,在轉(zhuǎn)化的過程中我們需要時刻對應(yīng)現(xiàn)實中的處理動作如何轉(zhuǎn)換成計算機世界里的處理數(shù)據(jù)的能力。由于尋找計算是一種業(yè)務(wù)動作的轉(zhuǎn)化,在轉(zhuǎn)化時我們可以多問自己期望系統(tǒng)應(yīng)該如何幫我更好的處理數(shù)據(jù),那些利用機器能很好的完成而人工較難做到的但又是經(jīng)常需要做的且與業(yè)務(wù)相關(guān)的動作一般都是我們需要找的,常見的動作有數(shù)據(jù)跟蹤記錄、查詢統(tǒng)計、修改更新、導(dǎo)出展現(xiàn)、匯總分析等。當(dāng)然有一點需要注意,我們在尋找計算因素的時候一定要基于計算機世界的客觀現(xiàn)實,畢竟計算機不是萬能的。
3、關(guān)系,明確了數(shù)據(jù)及如何處理數(shù)據(jù),架構(gòu)設(shè)計接下來要做的就是如何平衡好各種相互影響的關(guān)系,這些關(guān)系是所有我們能想到的會影響到系統(tǒng)的矛盾體,如數(shù)據(jù)處理效率與處理能力的關(guān)系、數(shù)據(jù)體量與存儲能力的關(guān)系、數(shù)據(jù)展現(xiàn)與用戶要求的關(guān)系、系統(tǒng)部署與網(wǎng)絡(luò)環(huán)境的關(guān)系、系統(tǒng)建設(shè)與建設(shè)成本的關(guān)系、系統(tǒng)易用性與客戶要求的關(guān)系等等,在做架構(gòu)設(shè)計的時候要盡可能多的考慮到這些關(guān)系,并根據(jù)實際情況劃分關(guān)系的重要程度,重點保障那些重要性高的關(guān)系,畢竟再完美的架構(gòu)設(shè)計也無法平衡好所有的關(guān)系,從這個角度來說,架構(gòu)設(shè)計是一種平衡的藝術(shù)。當(dāng)然,要準(zhǔn)確找出這些關(guān)系,并對它們劃分重要性等級,還需要做到按等級進(jìn)行平衡是需要經(jīng)驗積累的,非一朝一夕之功,這也是人人都能做架構(gòu)設(shè)計,但不是人人都能做好架構(gòu)設(shè)計的原因。好在這一步并不是完全無規(guī)律可循的,首先我們講如何找出這些關(guān)系,雖然涉及影響一個系統(tǒng)的矛盾體很多,架構(gòu)設(shè)計的方向:
1、第一個方向是與人相關(guān)的,這里的人包括籌建系統(tǒng)的甲方、建設(shè)系統(tǒng)的乙方、以及使用系統(tǒng)的用戶,對于籌建系統(tǒng)的甲方來說,他一般關(guān)注系統(tǒng)的建設(shè)進(jìn)度、成本、質(zhì)量等,對于建設(shè)系統(tǒng)的乙方來說,重點會關(guān)注建設(shè)范圍、風(fēng)險、開發(fā)工具、實施環(huán)境等,而對于用戶來說,更關(guān)系系統(tǒng)易用性、界面友好,操作舒暢、能幫其解決實際問題等。涉及到與人相關(guān)的關(guān)系,除了從經(jīng)驗中獲取,更重要的是需要在前期系統(tǒng)設(shè)計的過程中通過調(diào)研的方式,多與相關(guān)的干系人溝通,從他們那里獲取,這也是為什么系統(tǒng)建設(shè)一般都是有需求調(diào)研過程的原因。針對與人相關(guān)的關(guān)系這部分設(shè)計內(nèi)容一般體現(xiàn)在架構(gòu)設(shè)計說明書中的概述里,包括項目目標(biāo)、項目背景及其他說明等,當(dāng)然與用戶相關(guān)的一般也會在非功能性上有所體現(xiàn),如易用性、可用性、安全等。
2、第二個方向是與外部系統(tǒng)相關(guān)的,主要指其運行所在的操作系統(tǒng)及服務(wù)器,以及與之交互的外部系統(tǒng),系統(tǒng)需要運行在服務(wù)器特定的操作系統(tǒng)上,受服務(wù)器操作系統(tǒng)計算存儲網(wǎng)絡(luò)等因素影響,需要考慮服務(wù)器計算能力是否能處理數(shù)據(jù)、存儲能力是否足夠、網(wǎng)絡(luò)是否穩(wěn)定、如果服務(wù)器計算存儲網(wǎng)絡(luò)能力不夠如何擴展等;與外部系統(tǒng)的交互方面,本系統(tǒng)需要從外部系統(tǒng)獲取哪些數(shù)據(jù)與能力、需要為外部系統(tǒng)提供哪些數(shù)據(jù)與能力、交互方式是什么、交互協(xié)議如何等。一般來說,服務(wù)器的能力總是會有不夠的,尤其是設(shè)計大數(shù)據(jù)量處理,大量用戶同時訪問的系統(tǒng)時,這就需要我們根據(jù)系統(tǒng)的特點提前做好擴展的設(shè)計,高并發(fā)處理、分布式理論、多機房部署等這些技術(shù)概念可以給我們很好的指引,這也是為什么架構(gòu)師一定要眼界開闊的原因。這部分的設(shè)計內(nèi)容一般體現(xiàn)在架構(gòu)設(shè)計說明書中的邏輯架構(gòu)、技術(shù)架構(gòu)、接口設(shè)計、部署架構(gòu)、以及相關(guān)性能、可維護(hù)、可擴展等非功能性設(shè)計上。
3、第三個方向是數(shù)據(jù)相關(guān)的,數(shù)據(jù)是系統(tǒng)處理的主體,需要劃分本系統(tǒng)所處理的數(shù)據(jù)與外部數(shù)據(jù)的邊界,明確與外部數(shù)據(jù)的流向關(guān)系,還需要根據(jù)實際業(yè)務(wù)來區(qū)分?jǐn)?shù)據(jù)內(nèi)部之間的關(guān)系,數(shù)據(jù)如何劃分、各部分?jǐn)?shù)據(jù)的邊界在哪、與整體數(shù)據(jù)的關(guān)系如何等等。在劃分與外部數(shù)據(jù)的邊界時要基于本系統(tǒng)所承載的實際業(yè)務(wù)內(nèi)容,從業(yè)務(wù)出發(fā),那些只受本業(yè)務(wù)影響的數(shù)據(jù)肯定在邊界內(nèi),而本業(yè)務(wù)與其他業(yè)務(wù)共同影響的還需要進(jìn)一步分析哪方是影響主體,如果本業(yè)務(wù)是影響主體,那么在邊界內(nèi),但是需要考慮提供給外部系統(tǒng)的交互接口,如果本業(yè)務(wù)非影響主體,那么再看是否有間接影響或關(guān)聯(lián)影響,一般來說這部分?jǐn)?shù)據(jù)都要考慮與外部系統(tǒng)的交互關(guān)系。對于邊界內(nèi)的數(shù)據(jù)關(guān)系也是如此,可以根據(jù)業(yè)務(wù)特點劃分一些區(qū)塊,每個區(qū)塊內(nèi)又是一個相對獨立的單元,與相關(guān)的其他區(qū)塊單元存在哪些數(shù)據(jù)上的直接或間接影響,他們之間如何交互等。所有這些關(guān)系都是我們需要發(fā)現(xiàn)并在架構(gòu)設(shè)計時考慮的。針對這部分的設(shè)計內(nèi)容一般體現(xiàn)在架構(gòu)設(shè)計說明書中的數(shù)據(jù)架構(gòu)、整體架構(gòu)里。
人與外部系統(tǒng)、數(shù)據(jù)是我們在發(fā)掘關(guān)系時可以參考的方向,根據(jù)系統(tǒng)各自的特點,在架構(gòu)設(shè)計過程中還會有一些需要實際去考慮的關(guān)系,這些關(guān)系一般都是所謂的系統(tǒng)最大的特點或特殊情況,常見于重大需求,特色需求,亮點需求等形式,一般也不難找出。待把所有這些關(guān)系找出后,可以先做一個粗略的重要性分級,分級的依據(jù)是關(guān)系的相關(guān)性,一般是重要需求相關(guān)>特色亮點需求>甲方相關(guān)>用戶相關(guān)>乙方相關(guān)>外部系統(tǒng)相關(guān)>外部數(shù)據(jù)相關(guān)>內(nèi)部數(shù)據(jù)相關(guān)>其他次重要的數(shù)據(jù),在進(jìn)行架構(gòu)設(shè)計時優(yōu)先滿足重要性高的關(guān)系,得出一個基本的架構(gòu)雛形,再根據(jù)弱一級的關(guān)系不斷地優(yōu)化完善架構(gòu)模型,待大部分關(guān)系都可以滿足后,架構(gòu)設(shè)計也就出來了。當(dāng)然,很多關(guān)系之間都是矛盾的,比如籌建系統(tǒng)的甲方要求的低成本與高質(zhì)量、系統(tǒng)間數(shù)據(jù)交互與操作舒暢等,需要我們在做架構(gòu)設(shè)計時不斷權(quán)衡,盡可能的兼顧,對于實在無法兼顧的,需要進(jìn)行權(quán)衡取舍。
以上我們介紹架構(gòu)設(shè)計的方向還有關(guān)于架構(gòu)設(shè)計是什么的問題,其實,架構(gòu)設(shè)計都不只是架構(gòu)師的工作,而是任何人都可以做的一項有趣的工作。如果您想了解更多詳細(xì)信息,請您及時關(guān)注中培偉業(yè)。