架構(gòu)設(shè)計的三種思維

軟件架構(gòu)的幾個誤區(qū)

1. 架構(gòu)的目標(biāo)即靈活性
靈活性越好的架構(gòu)越能適應(yīng)未來變化的需要,但不是架構(gòu)設(shè)計的目標(biāo),一味追求容易陷入另外一個坑,造成性能的損失和資源的浪費。
2. 一套成熟的開源框架就是架構(gòu)
框架是一類軟件的可復(fù)用設(shè)計,是一個可擴展的半成品軟件,并不是軟件的架構(gòu),架構(gòu)是軟件設(shè)計的重要決策。
3. 大型系統(tǒng)才會考慮架構(gòu)
的確,架構(gòu)的設(shè)計要依賴于用戶規(guī)模的考量,不能過度設(shè)計,但是并不代表不需要考慮良好的架構(gòu)體系,很多軟件產(chǎn)品一直以一個DEMO形式在運行,無人問津,并沒有投入到真正的生產(chǎn)環(huán)境,問題沒有暴露,若用戶真正使用時即使是一個簡單的軟件依然會出現(xiàn)問題,優(yōu)勢是在數(shù)據(jù)安全、訪問性能、伸縮性等非功能性需求上。
4. 微服務(wù)是最好的架構(gòu)理念
獨立功能甚至獨立資源, 顆粒度小,松散耦合的組件化是微服務(wù)的優(yōu)點,但大部分開發(fā)、運維在實踐中依然遇到了新的問題:

  • 服務(wù)分散排查問題非常困難
  • 服務(wù)的抽象以及之間如何協(xié)作是一個較大的難點,設(shè)計往往被工期、成本所限制
  • 部署維護造成了資源的浪費和性能的損失

生產(chǎn)環(huán)境服務(wù)的現(xiàn)狀

  1. Beta測試才發(fā)現(xiàn)架構(gòu)問題
  2. 產(chǎn)品2.0不到半年要開發(fā)3.0
  3. 真正用戶來了之后各種故障和漏洞

從架構(gòu)設(shè)計上缺失了哪一環(huán)?遺漏了什么?我們應(yīng)如何避免,當(dāng)然架構(gòu)師是最重要的原因,沒有不好的架構(gòu),只有不好的架構(gòu)師,那我們可以有什么方法體系來避免此類問題的出現(xiàn)嗎?


引自《軟件架構(gòu)設(shè)計》一書

其實這并不是笑話,有很多的實際案例,每種角色都是從自身的角度去考率,沒有完整的方法體系和全局思維,所以我們在設(shè)計架構(gòu)的時候除過專業(yè)能力之外應(yīng)具備以下3種思維模式,這也是技術(shù)人員最缺乏的思維,但我認為也是最重要的思維,因為 “軟件架構(gòu)師不僅是技術(shù)方案的設(shè)計者”。

用戶思維

用戶思維就是以用戶為導(dǎo)向的,站在用戶的角度去思考問題,用戶的需求即是企業(yè)的需求,用戶的喜好就是企業(yè)的喜好,同樣應(yīng)是產(chǎn)品軟件設(shè)計的喜好。

  • 用戶是誰?


    架構(gòu)設(shè)計關(guān)聯(lián)用戶
  • 用戶的需求?
    知道了用戶,那么在架構(gòu)設(shè)計過程中就應(yīng)該考慮每類用戶的需求
    (1)最終客戶除過軟件滿足的功能性需求外,更關(guān)注的是用戶體驗是否好,如果一個網(wǎng)頁的訪問要等1分鐘,顯然用戶是沒有耐心的
    (2)產(chǎn)品經(jīng)理關(guān)注的用戶功能是否都能夠滿足,需求變動響應(yīng)的及時性,當(dāng)產(chǎn)品經(jīng)理提出一個新的需求或者需求變動時,如果你回答需要重構(gòu)的時候產(chǎn)品經(jīng)理會崩潰的
    (3)開發(fā)人員關(guān)注的是清洗的功能模塊以及模塊之間的明確協(xié)議,以及基礎(chǔ)的技術(shù)選型方案等
    (4)運維人員關(guān)注的更多的是部署的易用性,可維護性,容錯性(異常及時恢復(fù))、數(shù)據(jù)安全等
    (5)運營人員關(guān)注的是客戶問題處理的及時性,產(chǎn)品功能的穩(wěn)定性等

在架構(gòu)設(shè)計過程中首先要了解用戶是誰,每類用戶關(guān)注的需求是什么,再針對性的去思考,這樣才不會出現(xiàn)遺漏,但是僅僅了解需求是不夠的,我們還需要了解用戶是在什么樣的場景下使用這些功能。

場景思維

  • 頻率場景
    每類用戶 是在什么情況下使用,是一個高頻還是低頻,是剛需還是非剛需,剛需也可以是低頻。如果是一個高頻剛需,那就需要重點的去考慮,我在公司負責(zé)大數(shù)據(jù)采集挖掘平臺的整體架構(gòu)設(shè)計,隨著業(yè)務(wù)發(fā)展,每天逐漸出現(xiàn)了數(shù)據(jù)的峰值,因資源不夠造成了數(shù)據(jù)的延時性不高,因為每天出現(xiàn),從而形成了一個高頻事件,這就需要我們在架構(gòu)設(shè)計的時候考慮如何在峰值出現(xiàn)的時候不降低數(shù)據(jù)處理的及時性,同時又能不造成資源的浪費,所以結(jié)合成本、技術(shù)、客戶體驗設(shè)計了一套自動伸縮的彈性資源擴充機制,監(jiān)測數(shù)據(jù)處理的及時性,如果及時性降低到一個預(yù)警值后則自動觸發(fā)擴充資源。
  • 空間場景
    用戶是在PC端還是在移動端,用戶所使用的是一個高配置還是一個低配置設(shè)備,這些空間場景的因素都是我們在架構(gòu)設(shè)計中應(yīng)該考慮到的問題,否則直接會影響到用戶的體驗和感受。
  • 特殊場景
    在特定的場景下引發(fā)特定的需求。比如每年的淘寶雙11促銷活動就是一個特殊的場景,在設(shè)計整個系統(tǒng)架構(gòu)時應(yīng)充分考慮系統(tǒng)的伸縮性和隊列機制。

場景化思維就是需要洞察用戶的身份、空間、時間、意圖、行為等特征,同樣要考慮架構(gòu)設(shè)計關(guān)聯(lián)的所有用戶場景,不同類用戶場景也會不同,比如運維人員的場景和最終用戶的場景完全不同。

敏捷思維

用戶思維和場景思維充分考慮之后,大部分人可能會認為設(shè)計一個完整的架構(gòu)成本太高,周期會很長,那我們應(yīng)如何降低成本,縮短周期,避免過度設(shè)計,造成資源、研發(fā)周期的浪費呢,同敏捷開發(fā)的思想一樣,我們在設(shè)計架構(gòu)的時候同樣應(yīng)具備敏捷思維。
重大需求決定架構(gòu)的成敗
我們在綜合各類用戶需求之后,要對分散凌亂的需求進行梳理,梳理出關(guān)鍵需求、關(guān)鍵質(zhì)量、關(guān)鍵約束,重點對這些重大需求先做架構(gòu)設(shè)計。

關(guān)鍵需求決定架構(gòu)成敗

總結(jié)

用戶思維和場景思維是技術(shù)人員最缺失的,架構(gòu)師在業(yè)界大部分都被定義為技術(shù)人員,其實無論是架構(gòu)師或程序員都應(yīng)具備用戶思維和場景思維,這樣設(shè)計、研發(fā)出來的軟件系統(tǒng)才能更好的符合預(yù)期,符合用戶體驗,在這個時代,不僅是產(chǎn)品經(jīng)理具備用戶思維,企業(yè)中的每個角色都應(yīng)具備用戶思維和場景思維,同樣敏捷思維又保證了不會過度的設(shè)計,造成不必要的浪費,因為不是每個企業(yè)都有bat那樣的雄厚資金成本支撐。

架構(gòu)設(shè)計思維過程

將凌亂分散的需求通過設(shè)計變成有序、多維的架構(gòu)是每個架構(gòu)師的價值所在。

下篇分享《架構(gòu)設(shè)計的六種視圖》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.埋點是做什么的 2.如何進行埋點 3.埋點方案的設(shè)計 近期常被問到這個問題,我擔(dān)心我的答案會將一些天真爛漫的孩...
    lxg閱讀 2,335評論 0 1
  • 一、生命周期 一個事物一旦出生,就必然會長大,變異,一旦長大,就面臨著衰老,接下來就是消亡了,這個過程就稱為一個事...
    ZyBlog閱讀 2,832評論 1 11
  • 第六章 開發(fā)方法 6.1 軟件生命周期 軟件生命周期劃分為8個階段:可行性研究與計劃、需求分析、概要設(shè)計、詳細設(shè)計...
    步積閱讀 1,530評論 0 3
  • 請看下面的圖片: 這段代碼的主要目的是把一個c字符串賦給一個string。最后一條語句顯然是一個兼容類型賦給一個類...
    Stroman閱讀 456評論 0 0
  • 人們常說熬夜不好,經(jīng)常熬夜會對人體造成損害??茖W(xué)也證實了這一點,熬夜會讓人變傻、變丑、變胖…… 沒...
    Mg__4b7a閱讀 903評論 0 0

友情鏈接更多精彩內(nèi)容