国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

架構篇03-為什么要做架構設計?

這篇具有很好參考價值的文章主要介紹了架構篇03-為什么要做架構設計?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


架構篇03-為什么要做架構設計?,軟件架構,架構,java,開發(fā)語言,系統(tǒng)架構

談到架構設計,相信每個技術人員都是耳熟能詳,但如果深入探討一下,“為何要做架構設計?”或者“架構設計目的是什么?”類似的問題,大部分人可能從來沒有思考過,或者即使有思考,也沒有太明確可信的答案。

架構設計的誤區(qū)

關于架構設計的目的,常見的誤區(qū)有:

  1. 因為架構很重要,所以要做架構設計

這是一句正確的廢話,架構是很重要,但架構為何重要呢?

例如:不做架構設計系統(tǒng)就跑不起來么?

其實不然,很多朋友尤其是經(jīng)歷了創(chuàng)業(yè)公司的朋友可能會發(fā)現(xiàn),公司的初始產(chǎn)品可能沒有架構設計,大伙擼起袖子簡單討論一下就開始編碼了,根本沒有正規(guī)的架構設計過程,而且也許產(chǎn)品開發(fā)速度還更快,上線后運行也還不錯。

例如:做了架構設計就能提升開發(fā)效率么?

也不盡然,實際上有時候最簡單的設計開發(fā)效率反而是最高的,架構設計畢竟需要投入時間和人力,這部分投入如果用來盡早編碼,項目也許會更快。

例如:設計良好的架構能促進業(yè)務發(fā)展么?

好像有一定的道理,例如設計高性能的架構能夠讓用戶體驗更好,但反過來想,我們照抄微信的架構,業(yè)務就能達到微信的量級么?肯定不可能,不要說達到微信的量級,達到微信的 1/10 做夢都要笑醒了。

  1. 不是每個系統(tǒng)都要做架構設計嗎

這其實是知其然不知其所以然,系統(tǒng)確實要做架構設計,但還是不知道為何要做架構設計,反正大家都要做架構設計,所以做架構設計肯定沒錯。

這樣的架構師或者設計師很容易走入生搬硬套業(yè)界其他公司已有架構的歧路,美其名曰“參考”“微改進”。一旦強行引入其他公司架構后,很可能會發(fā)現(xiàn)架構水土不服,或者運行起來很別扭等各種情況,最后往往不得不削足適履,或者不斷重構,甚至無奈推倒重來。

  1. 公司流程要求系統(tǒng)開發(fā)過程中必須有架構設計

與此答案類似還有因為“架構師總要做點事情”,所以要做架構設計,其實都是舍本逐末。因為流程有規(guī)定,所以要做架構設計;因為架構師要做事,所以要做架構設計,這都是很表面地看問題,并沒有真正理解為何要做架構設計,而且很多需求并不一定要進行架構設計。如果認為架構師一定要找點事做,流程一定要進行架構設計,就會出現(xiàn)事實上不需要架構設計但形式上卻繼續(xù)去做架構設計,不但浪費時間和人力,還會拖慢整體的開發(fā)進度。

  1. 為了高性能、高可用、可擴展,所以要做架構設計

能夠給出這個答案,說明已經(jīng)有了一定的架構經(jīng)歷或者基礎,畢竟確實很多架構設計都是沖著高性能、高可用……等“高 XX”的目標去的。

但往往持有這類觀點的架構師和設計師會給項目帶來巨大的災難,這絕不是危言聳聽,而是很多實際發(fā)生的事情,為什么會這樣呢?因為這類架構師或者設計師不管三七二十一,不管什么系統(tǒng),也不管什么業(yè)務,上來就要求“高性能、高可用、高擴展”,結果就會出現(xiàn)架構設計復雜無比,項目落地遙遙無期,團隊天天吵翻天……等各種讓人抓狂的現(xiàn)象,費盡九牛二虎之力將系統(tǒng)整上線,卻發(fā)現(xiàn)運行不夠穩(wěn)定,經(jīng)常出問題,出了問題很難解決,加個功能要改 1 個月……等各種繼續(xù)讓人抓狂的事件。

架構設計的真正目的

那架構設計的真正目的究竟是什么?

從上篇分享的架構設計的歷史背景,可以看到,整個軟件技術發(fā)展的歷史,其實就是一部與“復雜度”斗爭的歷史,架構的出現(xiàn)也不例外。簡而言之,架構也是為了應對軟件系統(tǒng)復雜度而提出的一個解決方案,通過回顧架構產(chǎn)生的歷史背景和原因,我們可以基本推導出答案:架構設計的主要目的是為了解決軟件系統(tǒng)復雜度帶來的問題。

這個結論雖然很簡潔,但卻是架構設計過程中需要時刻銘記在心的一條準則,為什么這樣說呢?

首先,遵循這條準則能夠讓“新手”架構師心中有數(shù),而不是一頭霧水。

新手架構師開始做架構設計的時候,心情都很激動,希望大顯身手,甚至恨不得一出手就設計出世界上最牛的 XX 架構,從此走上人生巔峰,但真的面對具體的需求時,往往都會陷入一頭霧水的狀態(tài):

“這么多需求,從哪里開始下手進行架構設計呢?”。

“架構設計要考慮高性能、高可用、高擴展……這么多高 XX,全部設計完成估計要 1 個月,但老大只給了 1 周時間”。

“業(yè)界 A 公司的架構是 X,B 公司的方案是 Y,兩個差別比較大,該參考哪一個呢?”。

以上類似問題,如果明確了“架構設計是為了解決軟件復雜度”原則后,就很好回答。

  • “這么多需求,從哪里開始下手進行架構設計呢?”
    ——通過熟悉和理解需求,識別系統(tǒng)復雜性所在的地方,然后針對這些復雜點進行架構設計。

  • “架構設計要考慮高性能、高可用、高擴展……這么多高 XX,全部設計完成估計要 1 個月,但老大只給了 1 周時間”
    ——架構設計并不是要面面俱到,不需要每個架構都具備高性能、高可用、高擴展等特點,而是要識別出復雜點然后有針對性地解決問題。

  • “業(yè)界 A 公司的架構是 X,B 公司的方案是 Y,兩個差別比較大,該參考哪一個呢?”
    ——理解每個架構方案背后所需要解決的復雜點,然后才能對比自己的業(yè)務復雜點,參考復雜點相似的方案。

其次,遵循這條準則能夠讓“老鳥”架構師有的放矢,而不是貪大求全。

技術人員往往都希望自己能夠做出最牛的東西,架構師也不例外,尤其是一些“老鳥”架構師,為了證明自己的技術牛,可能會陷入貪大求全的焦油坑而無法自拔。例如:

“我們的系統(tǒng)一定要做到每秒 TPS 10 萬”。

“淘寶的架構是這么做的,我們也要這么做”。

“Docker 現(xiàn)在很流行,我們的架構應該將 Docker 應用進來”。

以上這些想法,如果拿“架構設計是為了解決軟件復雜度”這個原則來衡量,就很容易判斷。

  • “我們的系統(tǒng)一定要做到每秒 TPS 10 萬”
    ——如果系統(tǒng)的復雜度不是在性能這部分,TPS 做到 10 萬并沒有什么用。

  • “淘寶的架構是這么做的,我們也要這么做”
    ——淘寶的架構是為了解決淘寶業(yè)務的復雜度而設計的,淘寶的業(yè)務復雜度并不就是我們的業(yè)務復雜度,絕大多數(shù)業(yè)務的用戶量都不可能有淘寶那么大。

  • “Docker 現(xiàn)在很流行,我們的架構應該將 Docker 應用進來”
    ——Docker 不是萬能的,只是為了解決資源重用和動態(tài)分配而設計的,如果我們的系統(tǒng)復雜度根本不是在這方面,引入 Docker 沒有什么意義。

簡單的復雜度分析案例

我們來分析一個簡單的案例,一起來看看如何將“架構設計的真正目的是為了解決軟件系統(tǒng)復雜度帶來的問題”這個指導思想應用到實踐中。

假設我們需要設計一個大學的學生管理系統(tǒng),其基本功能包括登錄、注冊、成績管理、課程管理等。當我們對這樣一個系統(tǒng)進行架構設計的時候,首先應識別其復雜度到底體現(xiàn)在哪里。

性能:一個學校的學生大約 1 ~ 2 萬人,學生管理系統(tǒng)的訪問頻率并不高,平均每天單個學生的訪問次數(shù)平均不到 1 次,因此性能這部分并不復雜,存儲用 MySQL 完全能夠勝任,緩存都可以不用,Web 服務器用 Nginx 綽綽有余。

可擴展性:學生管理系統(tǒng)的功能比較穩(wěn)定,可擴展的空間并不大,因此可擴展性也不復雜。

高可用:學生管理系統(tǒng)即使宕機 2 小時,對學生管理工作影響并不大,因此可以不做負載均衡,更不用考慮異地多活這類復雜的方案了。但是,如果學生的數(shù)據(jù)全部丟失,修復是非常麻煩的,只能靠人工逐條修復,這個很難接受,因此需要考慮存儲高可靠,這里就有點復雜了。我們需要考慮多種異常情況:機器故障、機房故障,針對機器故障,我們需要設計 MySQL 同機房主備方案;針對機房故障,我們需要設計 MySQL 跨機房同步方案。

安全性:學生管理系統(tǒng)存儲的信息有一定的隱私性,例如學生的家庭情況,但并不是和金融相關的,也不包含強隱私(例如玉照、情感)的信息,因此安全性方面只要做 3 個事情就基本滿足要求了:Nginx 提供 ACL 控制、用戶賬號密碼管理、數(shù)據(jù)庫訪問權限控制。

成本:由于系統(tǒng)很簡單,基本上幾臺服務器就能夠搞定,對于一所大學來說完全不是問題,可以無需太多關注。

還有其他方面,如果有興趣,你可以自行嘗試去分析。通過我上面的分析,可以看到這個方案的主要復雜性體現(xiàn)在存儲可靠性上,需要保證異常的時候,不要丟失所有數(shù)據(jù)即可(丟失幾個或者幾十個學生的信息問題不大),對應的架構如下:

架構篇03-為什么要做架構設計?,軟件架構,架構,java,開發(fā)語言,系統(tǒng)架構

學生管理系統(tǒng)雖然簡單,但麻雀雖小五臟俱全,基本上能涵蓋軟件系統(tǒng)復雜度分析的各個方面,而且絕大部分技術人員都曾經(jīng)自己設計或者接觸過類似的系統(tǒng),很多本科生畢業(yè)論文會選擇類似的系統(tǒng)作為課題,如果將這個案例和自己的經(jīng)驗對比,相信會有更多的收獲。

小結
今天我們分析了架構設計的誤區(qū),結合上篇講的架構設計的歷史背景,給出架構設計的主要目的是為了解決軟件系統(tǒng)復雜度帶來的問題,并分析了一個簡單復雜度的案例,希望對你有所幫助。


【星猿雜談】:在這里我們共同探索科技新趨勢,分享積累的點滴,從編程語言到系統(tǒng)架構,從人工智能到高性能計算,我們追求技術的進步,同時珍視分享的力量。歡迎關注我們,在技術的精彩世界中一起遨游,發(fā)現(xiàn)更多未知!文章來源地址http://www.zghlxwxcb.cn/news/detail-812689.html

到了這里,關于架構篇03-為什么要做架構設計?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包