大型机现代化很少是单一决策。它是在几种截然不同的策略之间做选择,每种策略都有非常不同的成本、周期和风险特征,而正确答案取决于你的业务目标,而非技术偏好。在 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 更小。
评论