在最近一段時(shí)間一直有幾個(gè)問(wèn)題纏繞著我,架構(gòu)師該做什么?如何成為一個(gè)名副其實(shí)的架構(gòu)師?帶著這個(gè)問(wèn)題我查閱了很多資料,請(qǐng)教了很多人,但依然沒(méi)有找到我需要的答案。
請(qǐng)教猛哥,他告訴我,就把你對(duì)質(zhì)量的知識(shí)遷移到質(zhì)量運(yùn)營(yíng)就好了,當(dāng)時(shí)不得其解。后來(lái)一次和周老師討論這個(gè)問(wèn)題,他說(shuō)你就別管架構(gòu)師這高深的名詞,就從你擅長(zhǎng)的角度思考這個(gè)問(wèn)題,作為一個(gè)質(zhì)量負(fù)責(zé)人,你需要關(guān)注產(chǎn)品的那些方面?我很快的告訴了他以下六個(gè)詞。
可用、可靠、易用、效率、可配置(可維護(hù))、兼容(可移植)
然后他很認(rèn)真的對(duì)我說(shuō),架構(gòu)本身就是為軟件質(zhì)量服務(wù)的,你就從你剛才理解的這六個(gè)詞重新思考下什么是架構(gòu),然后你就明白該如何做了。
回到工位把那六個(gè)詞寫(xiě)下來(lái),并認(rèn)真思考,在某個(gè)瞬間恍然大悟,這六個(gè)詞不就是ISO9126中關(guān)于質(zhì)量模型的六大特性么?有了這個(gè)啟發(fā),我重新從質(zhì)量的視角思考架構(gòu)師的工作。

1.架構(gòu)師分類
從質(zhì)量模型的上圖從左往右前三個(gè)是對(duì)用戶來(lái)說(shuō)可以感知的屬,后三個(gè)主要是質(zhì)量?jī)?nèi)建相關(guān)的屬性,系統(tǒng)運(yùn)維運(yùn)營(yíng)需要關(guān)注的點(diǎn)。這樣來(lái)看,功能性、可靠性和易用性,其實(shí)不就是應(yīng)用架構(gòu)師的職責(zé)么;效率、維護(hù)性和可移植性不就是系統(tǒng)架構(gòu)師職責(zé)么?
應(yīng)用架構(gòu)師:負(fù)責(zé)構(gòu)建一個(gè)以解決特定業(yè)務(wù)問(wèn)題為目標(biāo)的軟件應(yīng)用,一般以滿足各種功能性需求以及維護(hù)性需求為設(shè)計(jì)考慮目標(biāo);從應(yīng)用程序的維度,偏業(yè)務(wù)系統(tǒng),從用戶的角度關(guān)注業(yè)務(wù)理解,負(fù)責(zé)某個(gè)應(yīng)用的技術(shù)架構(gòu),梳理模型,設(shè)計(jì)模式,接口,數(shù)據(jù)交互等方面。
系統(tǒng)架構(gòu)師:以企業(yè)的持續(xù)經(jīng)營(yíng)目標(biāo)為考慮要素來(lái)構(gòu)建企業(yè)所需要的內(nèi)在結(jié)構(gòu)設(shè)計(jì);提供運(yùn)營(yíng)支撐軟件應(yīng)用的信息系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)。從系統(tǒng)的維度,負(fù)責(zé)整體系統(tǒng)的架構(gòu)設(shè)計(jì),主要是基礎(chǔ)服務(wù)和各系統(tǒng)間協(xié)調(diào)上,著眼全局不太注重某個(gè)應(yīng)用本身架構(gòu),比如關(guān)注服務(wù)器負(fù)載,可靠性,伸縮,擴(kuò)展,數(shù)據(jù)庫(kù)切分,緩存應(yīng)用等方面的基礎(chǔ)架構(gòu)設(shè)計(jì)。
當(dāng)然,現(xiàn)實(shí)中的架構(gòu)師往往會(huì)身兼數(shù)職,而不僅僅是構(gòu)思架構(gòu)本身。比如,大部分軟件架構(gòu)師也會(huì)組織軟件團(tuán)隊(duì)、進(jìn)行一些相關(guān)研究,甚至擔(dān)負(fù)一些行政管理的工作,在此不再延伸贅述。
2.架構(gòu)師應(yīng)該關(guān)注點(diǎn)重點(diǎn)
1. 從功能的角度需要思考:
用戶真正想要什么?這些是用戶想要的么?是否準(zhǔn)確的實(shí)現(xiàn)和解決了用戶的需求和痛點(diǎn)?系統(tǒng)的邊界在哪里?確定系統(tǒng)干什么不干什么?流程是否合理?系統(tǒng)產(chǎn)品之間數(shù)據(jù)流轉(zhuǎn)過(guò)程合理?系統(tǒng)安全可靠,允許經(jīng)過(guò)授權(quán)的用戶和系統(tǒng)能夠正常的訪問(wèn)相應(yīng)的數(shù)據(jù)和信息,禁止未授權(quán)的用戶訪問(wèn).......
2.從可靠性的角度需要思考:
系統(tǒng)是否成熟可靠,設(shè)計(jì)時(shí)是否考慮系統(tǒng)內(nèi)部錯(cuò)誤,導(dǎo)致軟件失效的各種異常流程和錯(cuò)誤的兼容性處理;軟件出現(xiàn)故障,是否能夠快速修復(fù),甚至自我修復(fù);失效情況下的如何恢復(fù)并正常運(yùn)行?
3.從易用性的角度需要思考:
設(shè)計(jì)的產(chǎn)品是否符合心理學(xué)和行為學(xué),是否能夠很方便快速的被操作者使用和理解,就像iPhone手機(jī)Home鍵設(shè)計(jì),一兩歲的孩子只要探索一兩遍,便能夠很容易操作并使用,作為架構(gòu)師也需要從業(yè)務(wù)領(lǐng)域相關(guān)的背景知識(shí)中抽取和提練業(yè)務(wù)流程,并結(jié)合用戶的特點(diǎn)給產(chǎn)品設(shè)計(jì)提出指導(dǎo)性原則和積極的建議。
4.從效率性的角度需要思考:
需要關(guān)注用戶操作端到端的系統(tǒng)響應(yīng)時(shí)間,實(shí)現(xiàn)這個(gè)目標(biāo),架構(gòu)師從縱向分解和橫向分解,縱向分解是將整個(gè)系統(tǒng)分層,從而將整體系統(tǒng)分解成下一級(jí)的子系統(tǒng)與組件;橫向分解是在系統(tǒng)分解成不同的邏輯層或服務(wù)后,對(duì)邏輯層進(jìn)行分塊,確定層與層之間的關(guān)系,從中選擇最優(yōu)的一種方案。
并且關(guān)注系統(tǒng)前端到后臺(tái)、系統(tǒng)之間業(yè)務(wù)數(shù)據(jù)交互的時(shí)間及效率,如業(yè)務(wù)響應(yīng)時(shí)間,吞吐率、TPS(每秒事務(wù)數(shù))等業(yè)務(wù)指標(biāo);以及系統(tǒng)資源的利用率,CPU 內(nèi)存 磁盤(pán) IO 網(wǎng)絡(luò)帶寬、隊(duì)列、共享內(nèi)存。
5.從軟件維護(hù)性的角度需要思考:
主要從運(yùn)營(yíng)的角度思考軟件架構(gòu)如何設(shè)計(jì),如何能夠快速分析定位問(wèn)題;軟件產(chǎn)品出現(xiàn)的失效可以通過(guò)外部修改修復(fù),同時(shí)又能防止意外修改導(dǎo)致程序失效,確保已修改軟件能被正確的運(yùn)行的能力。
6.從軟件可移植性的角度需要思考:
軟件的可移植性就是需要考慮,軟件從一種環(huán)境遷移到另一種環(huán)境的能力,是否可以在不同的硬件服務(wù)器、操作系統(tǒng)或者中間件產(chǎn)品上不需要修改就能夠被部署和搭建;并且能夠很方便快速的被安裝的能力。
3.架構(gòu)師能力要求
架構(gòu)師到底有哪些能力要求呢?網(wǎng)上有張關(guān)于架構(gòu)師能力要求調(diào)研報(bào)告,其中37%的人認(rèn)為架構(gòu)師的設(shè)計(jì)能力最重要,技術(shù)實(shí)力重要度排在第二占了24%,溝通能力則排在第三占比14%,此次,我們?cè)敿?xì)分析排在前三的能力。

1.設(shè)計(jì)能力-擅長(zhǎng)整合分析
架構(gòu)是過(guò)程,并非結(jié)果。架構(gòu)是架構(gòu)師洞察內(nèi)在結(jié)構(gòu)、原則、規(guī)律與邏輯的過(guò)程,架構(gòu)師要做到清晰理解系統(tǒng),以及簡(jiǎn)潔描述,這是分析整合的能力。
一個(gè)架構(gòu)師必須具備極強(qiáng)的分析能力,要做到根據(jù)產(chǎn)品宗旨和目標(biāo),分析清楚產(chǎn)品定位以及產(chǎn)品業(yè)務(wù),再整合利用現(xiàn)有的技術(shù)領(lǐng)域,找出最佳方案,實(shí)現(xiàn)產(chǎn)品概念。
2.技術(shù)實(shí)力-實(shí)現(xiàn)產(chǎn)品規(guī)劃
能夠在業(yè)務(wù)需求清楚的前提下,能夠?qū)⒁粋€(gè)完整的業(yè)務(wù)系統(tǒng)從功能模塊和系統(tǒng)架構(gòu)的角度進(jìn)行分解,從技術(shù)的角度給予技術(shù)選型提供建議,前端到底用瘦客戶端還是富客戶端呢?數(shù)據(jù)庫(kù)是用MySQL還是MSSQL又或是Oracle呢?等等,架構(gòu)師還應(yīng)該深入一線解決和攻克技術(shù)難點(diǎn)。
3.溝通能力-能夠橫向溝通
架構(gòu)師參與項(xiàng)目開(kāi)發(fā)全過(guò)程,包括確認(rèn)需求、系統(tǒng)分解、架構(gòu)設(shè)計(jì)、技術(shù)選型、制定技術(shù)規(guī)格說(shuō)明、系統(tǒng)實(shí)現(xiàn)、集成測(cè)試和部署各階段,在這一系列過(guò)程中,架構(gòu)師會(huì)與各部門(mén)溝通交流。
一個(gè)產(chǎn)品會(huì)有多部門(mén)合作,架構(gòu)師在其中的溝通極為重要,直接影響產(chǎn)品進(jìn)度與質(zhì)量。架構(gòu)師不僅要與開(kāi)發(fā)人員溝通,也要和項(xiàng)目經(jīng)理、分析人員甚至用戶溝通,來(lái)實(shí)現(xiàn)產(chǎn)品的各種可能性。所以,對(duì)于架構(gòu)師來(lái)講,不僅有技術(shù)方面的要求,還有能夠橫向溝通的要求。
從以上綜合來(lái)看,架構(gòu)師是一個(gè)既需要掌控整體又需要洞悉局部瓶頸并依據(jù)具體的業(yè)務(wù)場(chǎng)景給出解決方案的團(tuán)隊(duì)領(lǐng)導(dǎo)型人物。架構(gòu)師不是一個(gè)人,他需要建立高效的體系,帶領(lǐng)團(tuán)隊(duì)去攻城略地,在規(guī)定的時(shí)間內(nèi)完成項(xiàng)目。
以上知識(shí)筆者希望從既往工作中,快速?gòu)?fù)制和遷移其能力的一些思考,并未經(jīng)過(guò)真是檢驗(yàn)。希望有相關(guān)經(jīng)驗(yàn)的同學(xué)一起思考并給予建議和指導(dǎo)。
特別說(shuō)明:本文第三部分內(nèi)容,部分內(nèi)容來(lái)源于網(wǎng)絡(luò)