新技術≠好技術,如何找準遺留系統(tǒng)突破口?


今天想跟大家聊聊遺留系統(tǒng),首先,看一下這張圖。

這是一家銀行的核心應用系統(tǒng)模塊之間的交互圖,我想沒有一個人愿意工作在這樣的系統(tǒng)上吧?
架構混亂,模塊之間職責不明,一個需求就要需要修改四五個服務,這就是遺留系統(tǒng),留給我們的問題。
?
遺留系統(tǒng)與架構
一個軟件架構的作用,是要解決多個業(yè)務模塊之間的協(xié)作問題。但如果架構混亂,多個模塊之間往復調用,數(shù)據(jù)也是隨意訪問,模塊之間的邊界就會變得模糊,數(shù)據(jù)所有權也會變得含糊。
其實遺留系統(tǒng)的架構重構,我們可以分成“改造老城區(qū)”和“建設新城區(qū)”兩類模式。
?
改造老城區(qū)模式是指對遺留系統(tǒng)內部的模塊進行治理、讓模塊內部結構合理、模塊之間職責清晰的一系列模式。

建設新城區(qū)模式是指將遺留系統(tǒng)內部的某個模塊拆分到外面,或將新需求實現(xiàn)在遺留系統(tǒng)外部的一系列模式。

遺留系統(tǒng)如何全面「改造或重構」
曾經(jīng)的我也遇到過遺留系統(tǒng),相當痛苦,每天為毫無頭緒的代碼和混亂不堪的架構發(fā)愁,新需求來了根本不知道從何改起。改造和替換又是高風險操作,應該遵循哪些改造原則?重構還是重寫,如何選擇?
?
后來我在搜索解決辦法時,看到了一段?Thoughtworks資深咨詢師「姚琪琳」分享重構遺留系統(tǒng)方法,給我啟發(fā)挺大,大約 4 分鐘,這里分享給大家。
簡單來說,首先,你要先梳理遺留系統(tǒng)的根本問題,找到切入口

?
其次,全面地了解改造過程,知其然,也知其所以然,就像這張圖。

將遺留系統(tǒng)模塊進行 6 步拆分,即:①假設驅動 → ②明確度量 → ③確定架構目標 → ④制定演進進度 → ⑤按迭代增量演進 → ⑥驗證。
?
「姚琪琳」Thoughtworks 資深咨詢師,技術書籍譯者。擁有超過十年的軟件開發(fā)、設計和架構經(jīng)驗。近年來在企業(yè)遺留系統(tǒng)現(xiàn)代化、領域驅動設計、敏捷軟件開發(fā)、整潔代碼和重構等方面持續(xù)精進,并通過理論指導、實戰(zhàn)演練等方式為企業(yè)研發(fā)團隊賦能。參與翻譯或審校多本技術書籍,包括《領域特定語言》《.NET 性能優(yōu)化》等10余本。
?
最近他專門寫了個專欄《遺留系統(tǒng)現(xiàn)代化實戰(zhàn)》,我第一時間就入手了,不得不說,真香!
深入剖析了遺留系統(tǒng)的特點和問題,詳解遺留系統(tǒng)現(xiàn)代化的原則、模式和最佳實踐,并從代碼、架構、DevOps 和團隊現(xiàn)代化 4 大方向,解決遺留系統(tǒng)治理的疑難雜癥。
?
上線一周已經(jīng)1000+人學習了,用我的優(yōu)惠口令「xitong888」,到手僅需¥68。
或者可以直接購買極客時間的超級會員,首月 6 元,即可免費學習這個課。
?
再簡單介紹下內容,他將遺留系統(tǒng)分成了 4 個篇章:

?
基礎篇:為什么要對遺留系統(tǒng)“現(xiàn)代化”
原則篇:以降低認知負載為前提、以假設驅動為指引、以增量演進為手段
模式篇:20+ 經(jīng)典模式,以及來自一線實戰(zhàn)總結的實用模式,幫你分而治之。具體的不說了,自己看圖,非常清晰。

實戰(zhàn)篇:將帶著你一起對一個典型的遺留系統(tǒng)進行現(xiàn)代化
?
干貨到底有多干,看看下面的專欄目錄

也許,你當前所在的項目上并沒有遺留系統(tǒng),所有的系統(tǒng)都生機勃勃、一片祥和。不過表面的祥和之下,可能暗藏波濤。
也許,你正在癡迷于新技術,但,新≠好,只有掌握了解決問題的方法,才能不懼任何問題。而不是把新技術當個錘子,看什么問題都是釘子。
掃碼試讀????
遺留系統(tǒng)怎么辦?將改造進行到底!
點擊“閱讀原文”,立即試讀。

