軟件架構(gòu)的幾個(gè)誤區(qū)
1. 架構(gòu)的目標(biāo)即靈活性
靈活性越好的架構(gòu)越能適應(yīng)未來(lái)變化的需要礁击,但不是架構(gòu)設(shè)計(jì)的目標(biāo)恰画,一味追求容易陷入另外一個(gè)坑辙纬,造成性能的損失和資源的浪費(fèi)看彼。
2. 一套成熟的開(kāi)源框架就是架構(gòu)
框架是一類(lèi)軟件的可復(fù)用設(shè)計(jì)廊佩,是一個(gè)可擴(kuò)展的半成品軟件囚聚,并不是軟件的架構(gòu),架構(gòu)是軟件設(shè)計(jì)的重要決策罐寨。
3. 大型系統(tǒng)才會(huì)考慮架構(gòu)
的確靡挥,架構(gòu)的設(shè)計(jì)要依賴(lài)于用戶規(guī)模的考量,不能過(guò)度設(shè)計(jì)鸯绿,但是并不代表不需要考慮良好的架構(gòu)體系跋破,很多軟件產(chǎn)品一直以一個(gè)DEMO形式在運(yùn)行,無(wú)人問(wèn)津瓶蝴,并沒(méi)有投入到真正的生產(chǎn)環(huán)境毒返,問(wèn)題沒(méi)有暴露,若用戶真正使用時(shí)即使是一個(gè)簡(jiǎn)單的軟件依然會(huì)出現(xiàn)問(wèn)題舷手,優(yōu)勢(shì)是在數(shù)據(jù)安全拧簸、訪問(wèn)性能、伸縮性等非功能性需求上男窟。
4. 微服務(wù)是最好的架構(gòu)理念
獨(dú)立功能甚至獨(dú)立資源盆赤, 顆粒度小,松散耦合的組件化是微服務(wù)的優(yōu)點(diǎn)歉眷,但大部分開(kāi)發(fā)牺六、運(yùn)維在實(shí)踐中依然遇到了新的問(wèn)題:
- 服務(wù)分散排查問(wèn)題非常困難
- 服務(wù)的抽象以及之間如何協(xié)作是一個(gè)較大的難點(diǎn),設(shè)計(jì)往往被工期汗捡、成本所限制
- 部署維護(hù)造成了資源的浪費(fèi)和性能的損失
生產(chǎn)環(huán)境服務(wù)的現(xiàn)狀
- Beta測(cè)試才發(fā)現(xiàn)架構(gòu)問(wèn)題
- 產(chǎn)品2.0不到半年要開(kāi)發(fā)3.0
- 真正用戶來(lái)了之后各種故障和漏洞
從架構(gòu)設(shè)計(jì)上缺失了哪一環(huán)淑际?遺漏了什么?我們應(yīng)如何避免扇住,當(dāng)然架構(gòu)師是最重要的原因春缕,沒(méi)有不好的架構(gòu),只有不好的架構(gòu)師艘蹋,那我們可以有什么方法體系來(lái)避免此類(lèi)問(wèn)題的出現(xiàn)嗎锄贼?
其實(shí)這并不是笑話,有很多的實(shí)際案例女阀,每種角色都是從自身的角度去考率咱娶,沒(méi)有完整的方法體系和全局思維,所以我們?cè)谠O(shè)計(jì)架構(gòu)的時(shí)候除過(guò)專(zhuān)業(yè)能力之外應(yīng)具備以下3種思維模式强品,這也是技術(shù)人員最缺乏的思維膘侮,但我認(rèn)為也是最重要的思維,因?yàn)?“軟件架構(gòu)師不僅是技術(shù)方案的設(shè)計(jì)者”的榛。
用戶思維
用戶思維就是以用戶為導(dǎo)向的琼了,站在用戶的角度去思考問(wèn)題,用戶的需求即是企業(yè)的需求,用戶的喜好就是企業(yè)的喜好雕薪,同樣應(yīng)是產(chǎn)品軟件設(shè)計(jì)的喜好昧诱。
-
用戶是誰(shuí)?
用戶的需求所袁?
知道了用戶盏档,那么在架構(gòu)設(shè)計(jì)過(guò)程中就應(yīng)該考慮每類(lèi)用戶的需求
(1)最終客戶除過(guò)軟件滿足的功能性需求外,更關(guān)注的是用戶體驗(yàn)是否好燥爷,如果一個(gè)網(wǎng)頁(yè)的訪問(wèn)要等1分鐘蜈亩,顯然用戶是沒(méi)有耐心的
(2)產(chǎn)品經(jīng)理關(guān)注的用戶功能是否都能夠滿足,需求變動(dòng)響應(yīng)的及時(shí)性前翎,當(dāng)產(chǎn)品經(jīng)理提出一個(gè)新的需求或者需求變動(dòng)時(shí)稚配,如果你回答需要重構(gòu)的時(shí)候產(chǎn)品經(jīng)理會(huì)崩潰的
(3)開(kāi)發(fā)人員關(guān)注的是清洗的功能模塊以及模塊之間的明確協(xié)議,以及基礎(chǔ)的技術(shù)選型方案等
(4)運(yùn)維人員關(guān)注的更多的是部署的易用性港华,可維護(hù)性道川,容錯(cuò)性(異常及時(shí)恢復(fù))、數(shù)據(jù)安全等
(5)運(yùn)營(yíng)人員關(guān)注的是客戶問(wèn)題處理的及時(shí)性立宜,產(chǎn)品功能的穩(wěn)定性等
在架構(gòu)設(shè)計(jì)過(guò)程中首先要了解用戶是誰(shuí)冒萄,每類(lèi)用戶關(guān)注的需求是什么,再針對(duì)性的去思考橙数,這樣才不會(huì)出現(xiàn)遺漏宦言,但是僅僅了解需求是不夠的,我們還需要了解用戶是在什么樣的場(chǎng)景下使用這些功能商模。
場(chǎng)景思維
- 頻率場(chǎng)景
每類(lèi)用戶 是在什么情況下使用,是一個(gè)高頻還是低頻蜘澜,是剛需還是非剛需施流,剛需也可以是低頻。如果是一個(gè)高頻剛需鄙信,那就需要重點(diǎn)的去考慮瞪醋,我在公司負(fù)責(zé)大數(shù)據(jù)采集挖掘平臺(tái)的整體架構(gòu)設(shè)計(jì),隨著業(yè)務(wù)發(fā)展装诡,每天逐漸出現(xiàn)了數(shù)據(jù)的峰值银受,因資源不夠造成了數(shù)據(jù)的延時(shí)性不高,因?yàn)槊刻斐霈F(xiàn)鸦采,從而形成了一個(gè)高頻事件宾巍,這就需要我們?cè)诩軜?gòu)設(shè)計(jì)的時(shí)候考慮如何在峰值出現(xiàn)的時(shí)候不降低數(shù)據(jù)處理的及時(shí)性,同時(shí)又能不造成資源的浪費(fèi)渔伯,所以結(jié)合成本顶霞、技術(shù)、客戶體驗(yàn)設(shè)計(jì)了一套自動(dòng)伸縮的彈性資源擴(kuò)充機(jī)制,監(jiān)測(cè)數(shù)據(jù)處理的及時(shí)性选浑,如果及時(shí)性降低到一個(gè)預(yù)警值后則自動(dòng)觸發(fā)擴(kuò)充資源蓝厌。 - 空間場(chǎng)景
用戶是在PC端還是在移動(dòng)端,用戶所使用的是一個(gè)高配置還是一個(gè)低配置設(shè)備古徒,這些空間場(chǎng)景的因素都是我們?cè)诩軜?gòu)設(shè)計(jì)中應(yīng)該考慮到的問(wèn)題拓提,否則直接會(huì)影響到用戶的體驗(yàn)和感受。 - 特殊場(chǎng)景
在特定的場(chǎng)景下引發(fā)特定的需求隧膘。比如每年的淘寶雙11促銷(xiāo)活動(dòng)就是一個(gè)特殊的場(chǎng)景代态,在設(shè)計(jì)整個(gè)系統(tǒng)架構(gòu)時(shí)應(yīng)充分考慮系統(tǒng)的伸縮性和隊(duì)列機(jī)制。
場(chǎng)景化思維就是需要洞察用戶的身份舀寓、空間胆数、時(shí)間、意圖互墓、行為等特征必尼,同樣要考慮架構(gòu)設(shè)計(jì)關(guān)聯(lián)的所有用戶場(chǎng)景,不同類(lèi)用戶場(chǎng)景也會(huì)不同篡撵,比如運(yùn)維人員的場(chǎng)景和最終用戶的場(chǎng)景完全不同判莉。
敏捷思維
用戶思維和場(chǎng)景思維充分考慮之后,大部分人可能會(huì)認(rèn)為設(shè)計(jì)一個(gè)完整的架構(gòu)成本太高育谬,周期會(huì)很長(zhǎng)券盅,那我們應(yīng)如何降低成本,縮短周期膛檀,避免過(guò)度設(shè)計(jì)锰镀,造成資源、研發(fā)周期的浪費(fèi)呢咖刃,同敏捷開(kāi)發(fā)的思想一樣泳炉,我們?cè)谠O(shè)計(jì)架構(gòu)的時(shí)候同樣應(yīng)具備敏捷思維。
重大需求決定架構(gòu)的成敗
我們?cè)诰C合各類(lèi)用戶需求之后嚎杨,要對(duì)分散凌亂的需求進(jìn)行梳理花鹅,梳理出關(guān)鍵需求、關(guān)鍵質(zhì)量枫浙、關(guān)鍵約束刨肃,重點(diǎn)對(duì)這些重大需求先做架構(gòu)設(shè)計(jì)。
總結(jié)
用戶思維和場(chǎng)景思維是技術(shù)人員最缺失的箩帚,架構(gòu)師在業(yè)界大部分都被定義為技術(shù)人員真友,其實(shí)無(wú)論是架構(gòu)師或程序員都應(yīng)具備用戶思維和場(chǎng)景思維,這樣設(shè)計(jì)紧帕、研發(fā)出來(lái)的軟件系統(tǒng)才能更好的符合預(yù)期锻狗,符合用戶體驗(yàn),在這個(gè)時(shí)代,不僅是產(chǎn)品經(jīng)理具備用戶思維轻纪,企業(yè)中的每個(gè)角色都應(yīng)具備用戶思維和場(chǎng)景思維油额,同樣敏捷思維又保證了不會(huì)過(guò)度的設(shè)計(jì),造成不必要的浪費(fèi)刻帚,因?yàn)椴皇敲總€(gè)企業(yè)都有bat那樣的雄厚資金成本支撐潦嘶。
將凌亂分散的需求通過(guò)設(shè)計(jì)變成有序、多維的架構(gòu)是每個(gè)架構(gòu)師的價(jià)值所在崇众。
下篇分享《架構(gòu)設(shè)計(jì)的六種視圖》