大型主機現代化很少是單一決策。它是在幾種截然不同的策略之間做選擇,每種策略都有非常不同的成本、週期與風險特徵,而正確答案取決於你的業務目標,而非技術偏好。在 replatform 已足夠時卻選擇「全部重寫」,或在真正問題是不可維護的程式碼時卻選擇「lift and shift」,正是現代化專案浪費數百萬的原因。
本指南比較主要的現代化策略、每種策略何時合理,以及如何選擇。
TL;DR
- 主要策略是 rehost、replatform、refactor、rearchitect/rewrite、replace 與 retire;大多數通常歸為 rehost、replatform 與 refactor/rewrite
- rehosting 最快最便宜,但改變最少;rewrite 帶來最現代的結果,但成本與風險最高
- 正確的選擇取決於業務驅動因素:成本削減、敏捷性、風險、人才可得性以及現有程式碼的狀態
- 大多數英國大型專案在整個資產範圍內混合使用策略,而非對所有系統採用單一方法
為什麼要現代化大型主機
各驅動因素在英國企業中是一致的:COBOL 與大型主機的人才儲備正在退休,大型主機營運成本高,系統難以快速變更,而將它們與現代雲端、資料與 AI 平台整合也很困難。隨著專業知識的消失,什麼都不做本身也帶有不斷增長的風險。問題通常不是是否現代化,而是如何現代化。
大型主機現代化策略
產業框架列出六到七個選項;在實務上它們歸併為幾個有意義的選擇。
Rehost(「Lift and Shift」)
將現有應用程式基本原樣遷移到新基礎設施,例如在雲端或通用硬體上模擬大型主機環境。COBOL 程式碼大致保持原樣。
- 優點: 最快、成本最低的選項;交付風險低;立即擺脫大型主機硬體與授權成本。
- 缺點: 幾乎不改變程式碼。你仍然有 COBOL,仍然有人才問題,敏捷性收益甚微。這是一種成本舉措,而非對軟體本身的現代化。
- 最適合: 需要快速退出大型主機硬體並延後更深層現代化的組織。
Replatform
在做出一些調整的情況下遷移到新平台,例如重新編譯 COBOL 以在 Linux 或雲端執行,或將資料庫從 DB2 遷移到現代等價物,而不重寫業務邏輯。
- 優點: 以適中的投入獲得顯著的基礎設施與成本收益;保持經過驗證的業務邏輯完好無損;風險低於 rewrite。
- 缺點: 應用程式從根本上仍是舊應用程式;敏捷性收益有限,程式碼層面的人才問題依然存在。
- 最適合: 希望獲得雲端與成本收益,同時保留可用邏輯並限制風險的組織。
Refactor
重構並改進現有程式碼,通常在不改變其外部行為的情況下將其轉換為現代語言。從 COBOL 到現代語言的自動轉換正屬於此類,它以擁有健康開發者儲備的語言產出可維護的程式碼。
- 優點: 透過轉向主流語言解決人才問題;提升可維護性;保留行為;可以增量進行。
- 缺點: 投入大於 rehost 或 replatform;需要嚴格的輸出一致性測試;自動轉換在資料存取與精度方面仍需人工處理。
- 最適合: 邏輯健全但語言與結構成為負擔的系統。這是大多數 COBOL 現代化的最佳選擇。
Rearchitect / Rewrite
重建系統,重新設計其架構(例如轉為服務或雲原生設計),並在現代技術堆疊上重新實作業務邏輯。
- 優點: 帶來最現代、最敏捷、最可維護的結果;徹底消除累積的技術債。
- 缺點: 成本最高、週期最長、風險最大;從零開始重新實作數十年未記錄的業務規則,正是大型專案失敗之處。
- 最適合: 真正不再適用的系統,即業務需要當前設計無法支援的能力。
Replace 與 Retire
用商業現成產品(COTS)或 SaaS 產品替換系統,或在不再需要時完全退役。
- 優點: 當存在合適產品或功能已過時時,可以是最具成本效益的結果。
- 缺點: COTS 很少能精確符合客製化邏輯;遷移與變更管理工作量大;對真正具有差異化的系統不可行。
- 最適合: 存在成熟產品的通用功能(例如薪資單或總帳)。
策略比較
| 策略 | 成本 | 週期 | 風險 | 現代化收益 |
|---|---|---|---|---|
| Rehost | 最低 | 最短 | 低 | 低(僅基礎設施) |
| Replatform | 低到中 | 短到中 | 低到中 | 中 |
| Refactor | 中 | 中 | 中 | 高(程式碼與人才) |
| Rewrite | 最高 | 最長 | 高 | 最高 |
| Replace / Retire | 不定 | 不定 | 中到高 | 不定 |
如何選擇
讓業務驅動因素來決定,而非技術:
- 主要驅動因素是成本與快速退出硬體: 從 rehost 或 replatform 開始。
- 主要驅動因素是人才短缺與可維護性: refactor,通常是將 COBOL 轉換為主流語言。
- 主要驅動因素是舊設計無法支援的新能力: 對需要的部分進行 rearchitect 或 rewrite。
- 該功能屬於通用功能: 考慮 replace。
在實務中,英國的大型資產會混合各種方法:對穩定部分進行 replatform,對難以維護的程式碼進行 refactor,對少數需要新能力的系統進行 rewrite,並對不再使用的部分進行 retire。如果所選路徑涉及將 COBOL 轉換為現代語言,COBOL 遷移概述 比較了 C#、Java、Python、Go、C++ 與 Rust 等目標語言,而 COBOL 遷移成本指南 則列出了切合實際的預算。
Mecanik 遺留大型主機遷移服務 涵蓋了與程式碼遷移並行的基礎設施退役工作,而 COBOL 現代化服務 涵蓋了程式碼層面的 refactor 與轉換工作。
關鍵要點
- 大型主機現代化是在 rehost、replatform、refactor、rewrite 與 replace/retire 之間的選擇,每種都有獨特的成本-風險特徵。
- rehost 最快最便宜,但現代化程度最低;rewrite 變革性最強,但最昂貴、風險最高。
- refactoring(通常是將 COBOL 轉換為現代語言)是邏輯健全但語言與人才成為問題時的最佳選擇。
- 大多數大型專案在整個資產範圍內混合策略;讓業務驅動因素而非技術偏好來決定。
常見問題(FAQ)
大型主機應用程式的 rehosting 與 refactoring 有什麼區別? rehosting(「lift and shift」)將現有應用程式遷移到新基礎設施,程式碼基本保持不變,因此它解決了硬體成本問題,但沒有解決程式碼或人才問題。refactoring 重構程式碼並通常在保留行為的同時將其轉換為現代語言,從而解決可維護性與人才問題。
COBOL 是重寫好還是遷移好? 這取決於系統。如果業務邏輯健全但語言成為負擔,將 COBOL 轉換(refactoring)為現代語言通常比 rewrite 的風險與成本更低。只有當當前設計無法支援業務所需能力時,完整的 rewrite 才是合理的。
哪種大型主機現代化策略最便宜? rehosting 通常最便宜、最快,但它帶來的現代化程度最低,因為應用程式從根本上保持不變。replatforming 以適中的成本增加適中的收益。rewriting 最為昂貴。
我們可以增量地現代化大型主機嗎? 可以。增量式(strangler fig )現代化每次替換或轉換系統的一部分,從而降低大爆炸式風險。大多數英國大型專案會混合策略,並在整個資產範圍內增量推進。
大型主機現代化中最大的風險是什麼? 重新實作數十年未記錄的業務邏輯,尤其是在完整的 rewrite 中,以及輸出一致性測試不足。保留經過驗證邏輯的策略(replatform、refactor)所承擔的這類風險,比從頭開始的 rewrite 更小。
評論