架構(gòu)重構(gòu)實(shí)踐

局部架構(gòu)重構(gòu)

1. 架構(gòu)重構(gòu)的驅(qū)動(dòng)力

  • 壞味道驅(qū)動(dòng)
  • 規(guī)劃驅(qū)動(dòng)
  • 架構(gòu)組織與架構(gòu)過(guò)程中的重構(gòu)

2. 壞味道如何判斷

以下情況忿偷,可能是架構(gòu)的問(wèn)題引起的

  • 增加人員但開發(fā)效率沒(méi)有提升

隨著項(xiàng)目的擴(kuò)展需要增加人員,但整體的開發(fā)效率反而降低了

  • 系統(tǒng)可用性

不穩(wěn)定所刀,可靠性降低

  • 系統(tǒng)擴(kuò)展性

不易于擴(kuò)展支持新業(yè)務(wù)接入

3. 壞味道有哪些

  • 組件臃腫

一個(gè)組件里包含太多功能:拆分

  • 組建貧血

一個(gè)組建的功能太單一闯估,比如只是簡(jiǎn)單轉(zhuǎn)發(fā)器:砍掉

  • 組建缺失

找出公共的功能點(diǎn),抽象為組建

  • 組建冗余

相同功能的組建應(yīng)該抽象、整合為一個(gè)組建

  • 組建抽象不足

一直隨著業(yè)務(wù)新增或變化頻繁變更

  • 組建反向依賴

底層組建依賴高層組建

  • 循環(huán)依賴
  • 網(wǎng)狀依賴
    -長(zhǎng)鏈依賴
  • 強(qiáng)依賴

要完成一個(gè)事情一連串的組建都需要隨之修改

  • 資源瓶頸

一個(gè)組建成功全部依賴業(yè)務(wù)的瓶頸昔头,如DB、cache影兽、身份校驗(yàn)組建

  • 單一故障點(diǎn)

一個(gè)組建失效后揭斧,全部依賴的業(yè)務(wù)都出現(xiàn)故障

4. 客觀評(píng)價(jià)架構(gòu)重構(gòu)方案

架構(gòu)評(píng)價(jià)標(biāo)準(zhǔn)

以10分制來(lái)劃分,制定可量化的評(píng)判標(biāo)準(zhǔn)
根據(jù)業(yè)務(wù)的重要性要求,選出主要目標(biāo)讹开,確定權(quán)重
制定方案盅视,依據(jù)選擇的標(biāo)準(zhǔn)去評(píng)分,分值不能低于下限

  • 一個(gè)組建需要提供很多業(yè)務(wù)依賴旦万,有兩種方案

工程依賴闹击,邏輯抽象并實(shí)現(xiàn)打包為jar,其他業(yè)務(wù)引入依賴:可伸縮性不足
搭建公共服務(wù)成艘,給全部業(yè)務(wù)調(diào)用及訪問(wèn)和處理資源的邏輯:原業(yè)務(wù)的遷移成本高(需要大全部依賴的業(yè)務(wù)都改造)赏半、增加故障點(diǎn)

5. 控制架構(gòu)重構(gòu)風(fēng)險(xiǎn)

重構(gòu)就是做高速公路上換輪胎

重構(gòu)前

原則:消除風(fēng)險(xiǎn)、獲得支持

  • 關(guān)鍵技術(shù)準(zhǔn)備

做好技術(shù)預(yù)研
做好物理資源和運(yùn)維能力的支持度

  • 架構(gòu)概念驗(yàn)證原型POP

用于驗(yàn)證架構(gòu)設(shè)計(jì)是否滿足業(yè)務(wù)需求

  • 確定重構(gòu)項(xiàng)目的目標(biāo)與范圍

一定要做好預(yù)判淆两,根據(jù)待重構(gòu)業(yè)務(wù)緊迫性断箫、時(shí)間要求、關(guān)鍵技術(shù)秋冰、人力仲义、新業(yè)務(wù)支持等現(xiàn)狀,設(shè)定可行的目標(biāo)與范圍

  • 明確業(yè)務(wù)影響

重構(gòu)過(guò)程中剑勾,因?yàn)橥度肴肆图嫒菪栽虬D欤聵I(yè)務(wù)研發(fā)肯定需要停下來(lái)一段時(shí)間,不停下來(lái)怎么換輪胎甥材,需要預(yù)判停下來(lái)多長(zhǎng)時(shí)間盯另,接下來(lái)這段時(shí)間有哪些緊急的業(yè)務(wù)要去做,有哪些關(guān)鍵商務(wù)合作在進(jìn)行中洲赵,都要去關(guān)心和提前溝通好

  • 曬項(xiàng)目

把業(yè)務(wù)損失風(fēng)險(xiǎn)向上匯報(bào)鸳惯,要有人承擔(dān),需要團(tuán)隊(duì)內(nèi)叠萍、外都知曉芝发,必須有領(lǐng)導(dǎo)知道并支持

  • 組建項(xiàng)目團(tuán)隊(duì)

需要各種角色搭配,這樣有利于培養(yǎng)新人

  • 創(chuàng)造業(yè)務(wù)需求真空期

詳細(xì)制定重構(gòu)計(jì)劃苛谷,需要人力和時(shí)間辅鲸,告知業(yè)務(wù)方,這段時(shí)間不接收新的業(yè)務(wù)腹殿,并承諾什么時(shí)間點(diǎn)會(huì)重構(gòu)好

重構(gòu)中

原則:短独悴、平、快

  • 前置重構(gòu)

把一些小的重構(gòu)項(xiàng)目先做掉锣尉,竟可能的消除項(xiàng)目重構(gòu)的風(fēng)險(xiǎn)

  • 嚴(yán)格控制項(xiàng)目的擴(kuò)展

如果有非常必須支持的需求刻炒,必須在老系統(tǒng)上改造,而不是重構(gòu)過(guò)程不成熟的系統(tǒng)上實(shí)現(xiàn)自沧,重構(gòu)后把新業(yè)務(wù)再合入新系統(tǒng)

  • 項(xiàng)目切割

項(xiàng)目盡可能的切分坟奥,組成一些列迭代,迭代的上線

重構(gòu)發(fā)布

原則:穩(wěn)、平滑

  • 非停機(jī)發(fā)布
  • 可快速回滾
  • 新舊系統(tǒng)并行運(yùn)行

平滑切換爱谁,流量逐步放開晒喷,并做好監(jiān)控和驗(yàn)證,有技術(shù)访敌、性能凉敲、用戶體驗(yàn)的風(fēng)險(xiǎn)

  • 監(jiān)控方案
  • 所有方案必須經(jīng)過(guò)測(cè)試
  • 檢查項(xiàng)目目標(biāo)是否達(dá)到
  • 復(fù)盤

是否達(dá)到目標(biāo),有哪些不足寺旺,有哪些值得我們吸取

二荡陷、 全局架構(gòu)重構(gòu)

如何讓架構(gòu)重構(gòu)交付最大價(jià)值

1. 理解全局架構(gòu)

  • 經(jīng)典架構(gòu)模式、視圖

架構(gòu)= 組建 + 關(guān)系 + 原則/約束
RUP的4+1視圖:邏輯迅涮、進(jìn)程、物理徽龟、開發(fā)叮姑、用例

  • 更宏觀的架構(gòu)視圖

多視角:業(yè)務(wù)、數(shù)據(jù)据悔、應(yīng)用传透、技術(shù)
描述多個(gè)視角之間的關(guān)系,數(shù)據(jù)如何支持技術(shù)极颓,技術(shù)如何支持應(yīng)用朱盐,應(yīng)用如何支持業(yè)務(wù)
自頂向下,分而治之:用一張大圖全局描述菠隆,必須分層兵琳,比如:

全局架構(gòu)模型

2. 建立全局架構(gòu)基線

  • 從業(yè)務(wù)入手:建立L0層基線全局架構(gòu),必須包含完整的業(yè)務(wù)骇径、應(yīng)用躯肌、技術(shù)、數(shù)據(jù)破衔、各種協(xié)議
  • 選擇最關(guān)鍵的1級(jí)架構(gòu)域清女,簡(jiǎn)歷完整的L0-L3業(yè)務(wù)、應(yīng)用晰筛、數(shù)據(jù)嫡丙、技術(shù)架構(gòu)視圖
  • 建立L0-->L2完整業(yè)務(wù)、應(yīng)用读第、數(shù)據(jù)曙博、技術(shù)架構(gòu)視圖,構(gòu)建完整產(chǎn)品卦方、應(yīng)用羊瘩、數(shù)據(jù)集清單
  • 以產(chǎn)品為單元完成L3全面建設(shè)

3. 案例

  • 建立樣板文檔,挪列關(guān)鍵元素,統(tǒng)一用wiki管理
  • 把應(yīng)用等各種依賴關(guān)系可視化
  • 團(tuán)隊(duì)緊密交流尘吗,每天分享梳理出來(lái)的業(yè)務(wù)和技術(shù)逝她,相互了解及借鑒
識(shí)別全局架構(gòu)關(guān)鍵問(wèn)題
  • 容量
  • 穩(wěn)定
  • 新業(yè)務(wù)支持
  • 相應(yīng)速度
確定目標(biāo)架構(gòu)
設(shè)計(jì)架構(gòu)演進(jìn)路線的經(jīng)驗(yàn)
  • 順勢(shì)而為

與業(yè)務(wù)發(fā)展路線合拍

  • 分而治之

邊界優(yōu)先

-專注主線

按住關(guān)鍵業(yè)務(wù)、技術(shù)
輻射周邊業(yè)務(wù)

  • 步步為營(yíng)

逐步交付價(jià)值
不要停留在危險(xiǎn)的中間狀態(tài)

  • 安全試錯(cuò)

創(chuàng)造生產(chǎn)環(huán)境的架構(gòu)實(shí)驗(yàn)室

三睬捶、更深層次的架構(gòu)重構(gòu)

架構(gòu)組織:專職架構(gòu) + 業(yè)務(wù)架構(gòu)融合


架構(gòu)組織

資料

鏈接: https://pan.baidu.com/s/1nbVX1jzLvBa4iDwzlw4mmQ 提取碼: 2egc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黔宛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子擒贸,更是在濱河造成了極大的恐慌臀晃,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介劫,死亡現(xiàn)場(chǎng)離奇詭異徽惋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)座韵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門险绘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人誉碴,你說(shuō)我怎么就攤上這事宦棺。” “怎么了黔帕?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵代咸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我成黄,道長(zhǎng)呐芥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任奋岁,我火速辦了婚禮贩耐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厦取。我一直安慰自己潮太,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布虾攻。 她就那樣靜靜地躺著铡买,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霎箍。 梳的紋絲不亂的頭發(fā)上奇钞,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音漂坏,去河邊找鬼景埃。 笑死媒至,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谷徙。 我是一名探鬼主播拒啰,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼完慧!你這毒婦竟也來(lái)了谋旦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屈尼,失蹤者是張志新(化名)和其女友劉穎册着,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脾歧,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甲捏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞭执。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摊鸡。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚕冬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情是辕,我是刑警寧澤囤热,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站获三,受9級(jí)特大地震影響旁蔼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疙教,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一棺聊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贞谓,春花似錦限佩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至理疙,卻和暖如春晕城,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窖贤。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工砖顷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贰锁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓滤蝠,卻偏偏與公主長(zhǎng)得像豌熄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子几睛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,179評(píng)論 25 707
  • 用兩張圖告訴你房轿,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,732評(píng)論 2 59
  • 忙了一個(gè)多月所森,一直沒(méi)時(shí)間寫文章囱持。終于把項(xiàng)目重構(gòu)完了,借此機(jī)會(huì)淺談一下對(duì)Android架構(gòu)的見解焕济。筆者將會(huì)把重構(gòu)分為...
    Robin_Lrange閱讀 3,696評(píng)論 0 1
  • 前兩天聽了羅輯思維的《如何成為高手》纷妆,羅胖說(shuō)學(xué)習(xí)的過(guò)程是把外界的知識(shí)縫接在自己的知識(shí)結(jié)構(gòu)之上,深有同感的同時(shí)自己的...
    零瓏心閱讀 762評(píng)論 0 1
  • 經(jīng)典美文 The evening of the concert Mom wore glittery earring...
    我的小窩閱讀 445評(píng)論 0 0