深度调研报告 · 2026-09

13 年遗留系统的 AI 时代重建路线图
——从「推倒重来」到「AI 加速的绞杀者迁移」

面向 73 万行 Java 遗留系统(Spring 3.2 / JDK 1.7 / 自研 reed 平台 / Oracle)的现代化专项调研:综合大厂一手案例、行业反证与数据迁移工程实践,给出一套可实操的五阶段路线图。

系统画像:reed 2.0.6 平台(grail 建模 / pigeon 工作流 / brick 页面设计器 / tiger 安全 / runway 聚合)· 3412 个 Java 文件 / 约 73 万行 · contract 域 928 文件 · operation 域 623 文件 · MyBatis 508 mapper XML + 元数据 ORM + Hibernate 3 三轨数据访问 · 2013–2026 持续演进 · 手头资产:全部源代码 + oracle.dmp

00摘要:九条核心论断

以下每一条论断都可以被证据证伪,报告正文即为论证。每条后附证据强度:一手案例 > 大样本调查 > 行业分析 > 单一实践。

1

「用 AI 全部重写一个全新系统」是本项目最大的风险,而不是解决方案。25 年重写史(Netscape、Borland、Chandler)表明大爆炸式重写默认失败——不是代码写不出来,而是旧代码里 13 年积累的未成文业务规则会静默丢失。证据强度:多案例交叉验证 + Gartner 预测过度押注生成式 AI 的迁移项目 70% 以上不达预期。

2

AI 真正改变的是「理解与翻译」环节的成本曲线,不是「验证」环节。一手案例显示代码考古、文档提取、测试生成提速 60–90%(Salesforce 33 个 API 迁移:231 人天 → 13 天;LG CNS:2913 个 API 99.1% 自动转换),但最后 10–15% 的业务规则人工验证不可压缩。证据强度:厂商一手案例,注意厂商有利益相关。

3

你们最大的资产不是 73 万行代码,而是系统 13 年来的实际行为。508 个手写 SQL、合同域 928 个文件、2013 年至今的生产修复,都是未成文业务规则的唯一载体。迁移第一步是「表征测试 + 双跑对账」把行为锁定成可执行的规约,之后才谈得上动代码。证据强度:工程方法论(Michael Feathers 表征测试 + 金融业影子运行实践)。

4

三轨数据访问是理解成本的最大黑洞,也是 AI 考古的第一切面。MyBatis 508 个手写 XML(业务规则的最大藏身处)+ reed-grail 元数据 ORM(规则在元数据和数据库对象里)+ Hibernate 3(pigeon 工作流专用)——业务规则散落三处,任何只读 Java 代码的考古都会漏掉一半以上。证据强度:基于系统画像的结构性推断 + CAST 死代码研究。

5

迁移顺序由业务域波次决定,不由技术栈决定。对 3412 个文件按业务价值 / 耦合度 / 变更频率做 A/B/C 分级:从边缘、高频变更的域试点,contract 域按子模块最后分批切换。金仓 A/B/C 分级迁移与 Salesforce 波次制都是可直接抄的作业。证据强度:厂商一手实践 + 单一案例。

6

目标架构首选「模块化单体」,微服务不是必选项。为 73 万行系统直接上微服务会放大「第二系统效应」;先按 DDD 边界做模块化(Maven 多模块 + 接口隔离),服务化按需演进。508 个 MyBatis XML 里的 SQL 大部分是可以复用的资产而非负债。证据强度:行业方法论(DDD + 绞杀者模式共识)。

7

AI 工程化的核心是「修流程,而不是修生成的代码」。Salesforce 与 Anthropic 的一手方法论一致:用规则文件(CLAUDE.md / markdown 规约)+ 阶段门 + 自动验证回路 + PR 反馈回写,让每一次失败沉淀进流程。无门禁的 AI 生成代码只是把技术债换成概率性缺陷。证据强度:厂商一手案例。

8

数据迁移是与代码重写同等重要的独立工程。oracle.dmp 不只是数据,里面有存储过程、视图、触发器和 grail 元数据——是第四条考古线索。迁移走「全量 + 增量同步 + 三级校验 + 单写双轨」路线,银行级验收线是校验通过率 99.99%、TPS 不低于旧库基线 95%。证据强度:厂商实践 + 银行案例。

9

组织因素比技术选型更能预测成败。对 78 个企业现代化项目的研究显示:技术改造与组织转型双轮驱动的项目 91% 达成业务目标,纯技术驱动的只有 43%。懂合同业务的专家必须全程坐在迁移闭环里。证据强度:学术研究(WJARR 2025,n=78,单篇期刊、中等强度)。

01你的处境:系统解剖与真实风险评估

先冷静地看清楚手里有什么。这套系统的技术栈确实老了,但它的真正价值和真正风险都不在「老」上。

1.1 规模画像

73 万
行 Java 代码(3412 文件),2013–2026 年持续演进
928
contract 域文件数(合同全生命周期,最大业务域)
508
个 MyBatis mapper XML(手写 Oracle SQL)
623
operation 域文件数(经营指标,第二大业务域)
3 轨
数据访问并存:MyBatis / reed-grail 元数据 ORM / Hibernate 3
13 年
生产运行积累的未成文业务规则与边界修复

1.2 分层解剖

这套系统的特殊之处在于:业务代码只是冰山露出水面的一半,另一半藏在 reed 自研平台的元数据里。理解这一点对后面所有决策至关重要。

业务模块层(插件形式挂接) contract 合同域 928 文件 · 全生命周期 operation 经营域 623 文件 · 经营指标 其他业务模块 约 1863 文件 · 分散挂接 reed 2.0.6 自研平台层 —— 元数据驱动,规则一半藏在这里 grail 建模 业务对象元数据 ORM pigeon 工作流 审批流 · Hibernate 3 brick 页面设计器 页面配置存元数据 tiger 安全 权限模型 · 组织架构 runway 聚合 门户 / 集成 底座层(风险最高:均已停止安全支持) Spring 3.2(2013 年发布,EOL)· JDK 1.7(2015 年停止公开更新)· 仅是承重墙,不是业务价值所在 数据访问三轨制 —— 业务规则的三大藏身处,考古必须三轨并行 MyBatis 508 个 mapper XML 手写 SQL · 规则密度最高 reed-grail 元数据 ORM 规则在元数据表和数据库对象里 Hibernate 3(仅 pigeon) 工作流状态机的映射逻辑 Oracle 数据库 —— oracle.dmp 里藏着第四条考古线索 表数据 · 存储过程 / 函数 / 触发器(可能承载核心业务规则)· 视图 · grail 元数据表 · brick 页面配置表 · 13 年生产数据 ⚠ 只读 Java 源码的考古会漏掉这一整层
图 1 · 系统分层解剖:业务插件、reed 平台五组件、老底座、三轨数据访问与 Oracle。风险最高的地方(底座)业务价值最低;业务价值和未知规则集中在平台元数据、508 个手写 SQL 与数据库对象里。

1.3 风险清单与真实紧迫性

风险项等级事实与影响
JDK 1.7 已停止公开更新(2015 年起)高十年无安全补丁,等保 / 审计 / 客户安全问卷都是硬伤;新依赖库全部无法引入。
Spring 3.2 / Hibernate 3 EOL高已知漏洞(如 Spring 相关反序列化类 CVE)不再修复;招不到也留不住会用这些栈的工程师。
reed 平台知识集中在少数人高grail / pigeon / brick 的设计意图只存在于原作者脑中(巴士系数 = 1–2);这是比技术老 10 倍的风险。
Oracle 许可与迁移被锁中许可成本与议价能力逐年恶化;若有信创要求则成为硬性约束。
业务规则未成文中13 年的需求变更、政策适配、客户特例全部沉淀为代码补丁,没有任何系统外文档能还原。
单体全量发布低-中若当前发布节奏尚可接受,此项不构成重写的充分理由——只构成模块化的理由。

一个关键自问:这套系统现在每月出几次生产事故?新需求交付周期多长?如果答案是「偶尔出事、改需求很痛苦但可控」,那么问题本质是演进能力受限,解法是受控迁移;如果答案是「随时可能崩溃、没人敢动」,解法是先做行为锁定(第 06 章)再谈其他。两种情况都不是「全部重写」。

02范式判定:为什么「推倒重来」是最危险的答案

「我有源代码和 dmp,让 AI 重写一个全新系统」——这个直觉必须先被认真质疑一次。过去 25 年,这种做法杀死公司的案例远多于成功案例。

2.1 Netscape 的教训:重写杀死的不是代码,是知识

1998 年 Netscape 决定将浏览器推倒重写:3 年没有任何有竞争力的版本发布,IE 吃掉市场,公司消亡。Joel Spolsky 2000 年的《Things You Should Never Do》把它定义为「软件公司所能犯的最糟糕的战略错误」。核心洞察是:那些看起来丑陋的老代码,每一行怪异的条件判断都是一次生产事故后的修复。扔掉代码 = 扔掉 13 年无人记录的业务知识,然后等着把每一个坑重新踩一遍。

0 100 200 业务交付能力(相对值) 0 6月 12月 18月 24月 30月 36月 feature freeze 谷底 旧系统冻结 · 新系统无产出 · 竞争对手在跑 新系统上线, 但带着重新踩过的坑 绞杀者式渐进迁移:每个波次都在交付,业务永不中断 大爆炸重写(Netscape / Borland / Chandler 模式) AI 加速的绞杀者迁移(Twitter / Salesforce / LG CNS 模式)
图 2 · 两种路线的交付能力曲线。大爆炸重写在数年内业务交付趋零,回升时还带着重新引入的老 bug;渐进迁移每个波次都有产出。示意图,非实测数据。

2.2 失败墓园与幸存者

失败墓园

案例结局
Netscape 浏览器重写3 年无发布,市场归零,公司消亡
Borland dBase / Quattro Pro两个产品同时重写,双双被竞品抢滩
Chandler PIM(2002–2008)6 年、数千万美元,只产出勉强可用的预览版;Google Calendar 免费解决了同一个问题

共同点:大爆炸、旧系统冻结、工期 2–3 倍超支、未成文规则丢失、竞品全速前进。(Spolsky 2000;Brooks《人月神话》第二系统效应;potapov.dev 25 年案例综述)

幸存者

案例做法
Twitter 2008–2013Rails 单体 → 组件逐个替换(消息队列 → 存储 → 服务化),5 年不停服
LG CNB 韩企系统MiPlatform → React + 云原生,API 转换率 99.1%,7 个月、约一半成本
某保险企业核心系统绞杀者模式单体 → 微服务,2 年,零业务中断

共同点:旧系统全程在线、逐波替换、每波都有验证与回滚。(Anthropic 官方案例;CSDN 架构实践综述)

2.3 什么时候全量重写才是对的?(判别式)

「永远不要重写」同样是一种懒惰。以下四个条件同时满足时,重写才是合理选项:

判别条件本系统的情况
① 平台/语言已死且无法过渡(如 COBOL、无法迁移的框架)不满足。Java 语言是活的,只是版本老;Spring 3.2 → Boot 3 有成熟升级路径。
② 原架构在结构上无法承载目标业务(不是「难受」,是「不可能」)不满足。合同/经营管理这类 CRUD + 工作流 + 报表系统,是现代技术栈最成熟的领域。
③ 旧系统没有生产风险包袱(可以停机、可以慢慢对齐)不满足。13 年生产系统,合同数据是公司命脉,不可能「重写完再对」。
④ 无人能理解旧系统,且维护成本已超过重建部分满足。reed 平台知识确实在流失——但这恰恰是第 05 章 AI 考古要解决的,而不是重写的理由。

本报告判断

四条判别式三条不满足、一条部分满足。正确定义你们的项目不是「重写」,而是「AI 加速的演进式重建」:新系统在旧系统旁边一个域一个域地长出来,旧系统每个域验证通过后退役。AI 的作用是把这个过程从「10 年」压缩到「18–30 个月」,而不是允许你们跳过过程本身。Gartner 2026 年预测:过度依赖生成式 AI 承担主要工作的大型机迁移项目,70% 以上无法产生预期效益——AI 是转型工具箱里缺失的一件工具,不是工具箱本身。

03AI 改变了什么、没改变什么:证据全景

这一章回答一个问题:把「AI 能力」放进第 02 章的框架里,哪些环节的成本结构真的变了?每个数字标注来源与证据强度。

3.1 一手案例:AI 在迁移各环节的实测产出

案例场景结果AI 承担的环节证据强度
Salesforce(2026 官方)33 个 API 端点迁往云原生架构估算 231 人天 → 13 天完成(约 18 倍);最大单 PR 21 个端点、100% 测试覆盖;同时期事故率反降 5%规则框架 + 自治 build-fix-validate 循环 + 并行生成一手(有利益相关)
LG CNS(Anthropic 官方案例)韩国企业系统现代化:2913 个 API + 1340 个屏幕(MiPlatform → React)99.1% API 转换率(2888/2913),7 个月、约为传统重建一半成本;随后推广到 200 人团队遗留分析 + 代码转换 + 屏幕迁移一手(有利益相关)
Morgan Stanley DevGen.AI900 万行过时代码解读节省约 28 万开发者小时代码理解与翻译一手
Fiserv大型机现代化预计 29 个月 → 17 个月(-41%);AI 生成测试套件捕获人工遗漏的边界用例测试生成 + 代码转换厂商披露
Sanlam / BBDCOBOL 地址管理 → Spring Boot 微服务核心功能迁移从约 2 个月 → 3–4 天(提速 90%+);路径是「COBOL → 业务文档 → API」两步法文档提取 + 代码生成厂商披露
Deluxe(2026 CIO 100)50 年历史大型机整体迁云约 12 个月完成、无重大故障,预计年省 490 万美元;同口径 Gartner 预测多数同类项目不达预期重写 + 文档 + 测试生成厂商披露
AWS Transform(Twitch)913 个仓库 AWS SDK v1 → v2节省约 2876 开发者日(11 人年),提速 70%规模化机械转换一手(有利益相关)
各案例时间/工期压缩率(同一工作传统方式 vs AI 辅助) 0% 20% 40% 60% 80% 100% Salesforce · 33 API 迁移 94%(231 人天 → 13 天) Sanlam · COBOL→Spring Boot 90%+(约 2 月 → 3–4 天) Rakuten · 功能上市周期 79%(24 天 → 5 天) Fiserv · 大型机现代化 41%(29 月 → 17 月)
图 3 · 时间压缩率对比。数值换算:Salesforce (231−13)/231≈94%;Sanlam 按厂商披露「提速 90%+」取下限;Rakuten (24−5)/24≈79%;Fiserv (29−17)/29≈41%。注意:越是大体量、长周期的项目,压缩率越低——40% 已属优秀,宣称 95%+ 的多是小范围试点。

3.2 反证:AI 没有改变的部分

反证对你们的含义
Gartner(2026 预测):过度依赖生成式 AI 的迁移项目 70%+ 不达预期;分析师明确指出「代码转换类工具尚无广泛成功先例,作为业务转型一部分的项目效果更好」AI 必须嵌在第 02 章的受控迁移框架内使用,而不能替代框架本身。
Stack Overflow 2025 开发者调查(n≈4.9 万):84% 开发者在用或计划用 AI,但信任其准确性的比例从 40% 降至 29%「AI 说改好了」不是验收标准;行为对账(第 06 章)才是。
Adidas RPG 系统案例:自动化转换完成 85% 后,剩余 3 万行需要 4 名专家 3 个月人工修复(Sogeti 2026 评估:最后 15% 须人工)按 73 万行等比推算,最后一公里仍有数千行硬骨头;工期估算必须给「最后一公里」单列预算。
Forrester 2026(转述):失败项目 47% 源于「未知依赖」依赖地图(第 05 章)的质量直接决定成败,这是 AI 考古的第一产出物。
CAST 研究:大型 COBOL 遗产中死代码可占 25%;Java 遗产通常也有可观死代码73 万行未必都是有效资产。考古阶段先剥离死代码,可能直接减掉 10–15 万行的迁移量。

本章结论(论断 2 的展开):AI 把三件事的成本打掉了 60–90%——代码理解与文档化、机械翻译、测试用例生成。它没有改变三件事——业务规则的最终裁决权在业务方手里、边界行为必须与生产对账、组织必须学会管理一个「高产出但需要门禁」的新成员。把「AI 重写」理解为「把 Netscape 式重写的风险用更快的速度重新踩一遍」,是本报告最想阻止的一件事。

04总体路线图:五阶段,18–30 个月

综合绞杀者模式、金仓五阶段迁移法与 Salesforce 波次制,你们的项目可以拆成五个阶段。每个阶段有明确的产出物和退出标准——不达标不进下一阶段。

阶段甘特(月为刻度,M0 = 项目启动) M0 M6 M12 M18 M24 M30 ① AI 评估与考古 4-6周 ② 行为锁定 8-10周 ③ 试点域迁移 8-12周 ④ 波次迁移 × N contract 域分模块、operation 域、其他域分波推进,每波 6-10 周 ⑤ 数据双轨与割接 与④重叠推进 ⑥ 旧系统退役 按域逐个下线 里程碑 A:试点验收 里程碑 B:50% 流量在新系统 里程碑 C:正式割接
图 4 · 五阶段路线图(18–30 个月)。注意两点:数据双轨(⑤)不是最后才开始的独立阶段,从第一个域切流量起就同步运行;「行为锁定」(②)在试点之前完成,此后每个波次复用同一套表征测试基线并持续扩充。

4.1 各阶段目标与退出标准

阶段核心动作关键产出物退出标准(不达标不进入下一阶段)
① AI 评估与考古
第 05 章展开
AI 代码考古(Java / 三轨数据访问 / dmp 数据库对象三线并行);死代码剥离;A/B/C 业务域分级业务规则目录、依赖地图、A/B/C 分级与波次计划、死代码清单合同域至少 1 个子模块的业务规则经业务专家逐条确认;依赖地图覆盖全部对外接口
② 行为锁定
第 06 章展开
对试点域生成表征测试;搭建双跑对账设施;确定哨兵指标表征测试基线库、新旧系统对账平台、差异分类规则试点域表征测试覆盖全部对外接口与核心分支;对账平台在生产影子流量上运行且差异可解释
③ 试点域迁移
第 07 章展开
选一个边缘、高频变更、边界清晰的域,用 AI 规则流水线重建到新架构,灰度切流新架构骨架、AI 迁移流水线(规则文件 + 阶段门)、试点域 100% 切流试点域 30 天生产运行零 P1 事故、对账差异率收敛到约定阈值、回滚演练通过
④ 波次迁移按 A/B/C 分级分波推进;每波复用③打磨的流水线;每波结束复盘并把经验写回规则文件每波次的验收报告;持续更新的迁移规则库每波独立验收;contract 域按子模块(台账→起草→审批→履约→归档)拆成 3–5 个波次
⑤ 数据双轨与割接
第 09 章展开
全量迁移 + 增量同步 + 三级校验;单写双轨;择机割接数据校验报告、割接手册、回滚预案校验通过率 ≥99.99%;新库性能 ≥ 旧库基线 95%;故障注入演练通过
⑥ 旧系统退役按域逐个关闭旧入口;数据归档;reed 平台知识文档化封存退役清单、归档库、复盘报告每个域在旧系统关闭前有 30 天 clean run 记录

为什么不是「先定新架构再动手」?传统做法会花 3–6 个月写新架构方案,然后发现方案里一半的假设不成立。绞杀者模式把这个顺序反过来:用试点域的真实迁移来逼出架构决策。第 08 章给出的目标架构是「预置立场」而非「最终裁决」——试点波次结束时回头修订它。

05阶段一:AI 代码考古——四条线索挖出全部业务规则

评估阶段的目标只有一个:把散落在四处的业务规则变成一份「人可审、AI 可用」的业务规则目录。这是整个项目 ROI 最高的阶段——行业共识是:过去这类「发现与分析」吃掉现代化预算的一半,AI 把它压缩了 60–80%。

5.1 四条考古线索,缺一不可

线索里面藏着什么AI 考古方法
① Java 源码
3412 文件 / 73 万行
Service 层业务逻辑、校验规则、状态流转、计算公式;contract 域 928 个文件是重点按域分批投喂 AI(agentic 工具可全程自主遍历),产出:模块清单、调用关系图、业务规则候选列表(每条带源码位置引用)
② MyBatis 508 个 mapper XML手写 Oracle SQL 是规则密度最高的地方:报表口径、权限过滤、特殊 join、UNION 里的业务分支、ROWNUM 分页里的隐含语义逐个 mapper 提取 SQL → AI 解释每条 SQL 的业务意图 → 与 Java 层规则交叉对照。经验上这一步会挖出大量「代码里看不出来、只有 SQL 才知道」的规则
③ reed-grail 元数据业务对象定义、字段约束、页面配置(brick)、流程定义(pigeon)——平台是元数据驱动的,一半业务逻辑不在 Java 里而在元数据表里从 grail 元数据表导出对象模型 → AI 重建 ER 图与对象关系;从 brick 配置表还原页面清单与字段级规则
④ oracle.dmp 数据库对象存储过程 / 函数 / 触发器 / 视图(若存在,核心财务与状态计算很可能在这里);序列初始值;历史数据本身的分布规律把 dmp 还原到一个隔离测试库(expdp → impdp),提取全部 PL/SQL 对象 → AI 逐个解释业务意图并标注「待迁移 / 可废弃 / 需业务确认」

最容易踩的坑:只让 AI 读 Java 代码。对本系统而言,②③④加起来的规则占比很可能不低于 40%——三轨数据访问 + 元数据驱动平台意味着「源代码考古」这个词本身就不完整。 dmp 文件不是「等新系统好了再导数据」的备份,它是要在第一周就还原、就分析的活体。

5.2 考古的五类产出物

a. 业务规则目录(最重要)

每条规则一条记录:规则描述 / 源码位置(文件+行号或 SQL id)/ 生效场景 / 最后修改原因(可考时)/ 置信度。AI 初筛 + 业务专家逐条确认——确认过程本身就是把老人脑子里的知识显性化,这一步的价值独立于迁移项目存在。

b. 依赖地图与接口清单

对外系统接口(银行、税务、OA、邮件…)、内部模块耦合点、定时任务清单。失败项目 47% 死于未知依赖(Forrester 转述),这份清单是保险单。

c. 死代码清单

无入口、无配置引用、无调用的模块。CAST 研究显示大型遗产死代码可达 25%——先删后迁,每删 10% 就少迁一个波次的工作量。删除动作本身也要有灰度(先下线观察一个季度再物理删除)。

d. A/B/C 域分级 + 波次计划

按业务影响、数据敏感性、耦合度三维分级(金仓方法论):A 类核心域最后动但投入最多,C 类边缘域先动练手。输出波次表(第 07 章)。

e. 风险热力图与改造工作量清单:每个域的「AI 可自动转换比例 / 需人工比例 / 需业务确认比例」预估,作为全项目工期的量化基础。注意第 03 章教训:自动化比例按保守口径报(大型项目 40% 的压缩率是优秀水平,别按试点口径拍胸脯)。

5.3 AI 考古的操作纪律

  • 规则文件法(Salesforce 一手经验):把「本公司的命名规约、领域术语表、已确认的业务规则」维护成 markdown 规则库,每次 AI 会话都带上。每轮人工纠错都回写规则库——AI 的产出质量随规则库增长而复利式提升。
  • 每条 AI 结论必须带源码引用,业务专家按引用抽查。无引用的结论视为不存在。这对应 AWS Transform 的「全链路可追溯」设计:业务规则 → 源码行 → 需求 → 新代码,审计链完整。
  • 保密边界先谈好:内部信息化系统涉及合同与经营数据。三个选项:合规的企业级 SaaS(数据不用于训练、可部署在指定区域,参照 Pictet 在瑞士银行业的做法);私有化部署开源模型(能力有折损);或「代码脱敏 + 混合」策略。这个决策要在阶段①开始前完成,而不是出事之后。

06阶段二:行为锁定——迁移前必须先给旧系统做「行为公证」

表征测试(characterization tests,Michael Feathers 提出)的哲学只有一句话:不测试代码「应该」做什么,只记录它「实际」做什么。旧系统虽然代码丑,但它是「正确行为」的唯一权威来源——哪怕那些行为当年是 bug,只要下游已经依赖,它就是事实契约。

① 表征测试 AI 读旧代码生成测试 记录输入→输出(含边界) 含「历史上的 bug」行为 人工审核边界用例 ② Golden Master 双跑 同一生产流量喂新旧系统 输出逐字段比对(bit 级) 典型运行 4–8 周 覆盖季度末/年末等罕见路径 ③ 灰度切流 真实流量 1%→10%→50%→100% 网关层开关,回滚=改配置 每档观察期 + 哨兵指标 差异实时对账 ④ 退役 30 天 clean run 记录 关闭旧入口 数据归档 进入下一波次 发现未记录行为 → 补表征测试基线 对账差异 → 三方归因: 新实现错 / 基线漏 / 旧系统真实缺陷 生产异常 → 一键回滚(网关配置),旧系统仍在 任何一步不通过都不前进:这是「每一波都可控」的机制保证,不是态度口号
图 5 · 行为锁定四步法与三条失败回环。经典案例:旧系统某应付款模块在特定边界返回哨兵值 0.00 表示「无应付」,AI 新实现「语义更合理」地返回 null——新系统自己的测试全绿,但下游对账立即爆掉。只有 bit 级双跑能抓住这类问题(Kellton 影子运行实践)。

6.1 三层验证各自的分工

层抓什么抓不到什么实施要点
表征测试(离线、每个波次都跑)函数/服务级逻辑等价;罕见分支(闰年、季度末、汇率精度)端到端集成差异;数据状态相关行为AI 生成 + 人工审核边界用例;测试即「可执行的业务规约」,进版本库、进 CI
双跑对账(上线前、每域 4–8 周)真实生产流量下的全链路差异,包括环境、数据、并发引出的行为切流后的运维类问题;长周期才暴露的问题(年结)差异必须三方分类:新实现错 / 基线漏 / 旧系统真实缺陷(此类的裁决权在业务方)
灰度切流(切流中持续)性能、并发、运维、用户体验层面的回归——1%→10%→50%→100%,每档设观察期与回滚红线;回滚必须是配置变更而非「救火」

论断 3 的工程落地:对你们的系统,合同域 928 个文件不可能也不需要 100% 表征覆盖。按二八律:优先锁定「对外接口 + 金额计算 + 状态流转 + 权限判定」四类高价值行为,这通常只占代码量的 20–30%,却覆盖绝大部分事故面。金仓银行项目的同类实践是三级校验(行数与校验和 → 关键字段抽样 → 业务逻辑轧差如账户余额勾稽),可直接借鉴到合同台账场景(合同金额、履约状态、审批流水的勾稽关系)。

07阶段三:波次迁移——先动哪个域、后动哪个域

顺序错误是迁移项目最常见的死法之一:一上来就动 contract 核心,卡住后进退两难。正确顺序由业务属性决定,不由技术难度决定。

该业务域的「变更频率 × 业务价值」 和「与核心域的耦合度」评分(考古阶段产出) 是核心域? (contract 台账/审批 / 财务口径) 是 排入最后波次(W3–W4) 先拆子模块再逐个切;表征覆盖最全 否 变更频率高? (需求单多的域) 是 第二波(W2):operation 等 迁完立刻减负,团队快速积累信心 否 边界清晰、对外依赖少? (报表、查询、日志类) 是 第一波试点(W1) 用它打磨 AI 流水线与全套验证设施 否 C 类:暂缓 / 考虑退役 先问业务方还要不要:无人使用直接下线 低频使用的维持旧系统到项目末期统一处理 平台基础件(pigeon / tiger / runway):贯穿所有波次 pigeon 工作流 → 换现代引擎(Flowable/Camunda),W1 试点即引入 tiger 安全 → 第一波就用新认证体系承接;runway → API 网关原生替代
图 6 · A/B/C 波次决策树。原则:试点域(W1)选「低风险 + 高频变更 + 边界清晰」三条件齐备的域——常见答案是报表/查询类模块或 operation 域的一个子模块;contract 核心排最后但准备最充分。

7.1 建议波次表(以本系统画像为输入的草案)

波次范围理由特别注意
W1 试点报表/查询类模块,或 operation 域单一子模块只读为主、无资金风险、边界清晰;高频变更意味着迁完立刻减负,是向管理层证明价值的最佳载体本波次的真正产出是流水线本身:AI 规则库、阶段门、对账平台。工期允许超预期 30%,学费交在这里
W2operation 域其余部分(623 文件)第二大域、非资金核心、口径类规则密集,正好检验三轨数据访问的迁移方法报表口径是「双跑对账」的重灾区——新旧系统报表数字必须分毫不差,提前和财务/经营部门约好仲裁人
W3contract 域前半:合同台账、起草、归档合同域拆解后的低风险部分:偏 CRUD,审批流以外的逻辑可机械迁移为主合同模板与条款库的结构化迁移;历史合同数据的归属切换
W4contract 域后半:审批流、履约、变更、用印/收付款联动全系统风险最高部分:pigeon 工作流状态机 + 金额计算 + 权限交织表征覆盖最全、双跑期最长(8 周+)、灰度最细(1% 起步);需要业务专家驻场
贯穿pigeon → 现代工作流引擎;tiger → 新安全体系;brick → 新前端方案基础件不能「最后一起换」:W1 试点就必须用新工作流引擎跑通一个审批流,否则 W4 会被平台层卡死流程定义迁移(pigeon 流程 XML/元数据 → BPMN 2.0)本身是独立子项目,安排在 W1–W2 之间

灰度切流的实现:reed 的 runway 聚合层正好可以改造成过渡期网关——按域、按用户组、按比例把请求路由到新/旧系统。回滚 = 改一行路由配置。这就是「回滚是配置变更,不是救火演习」的全部含义。切流节奏参考行业实践:每档观察 3–7 天,合同域关键操作(审批提交、金额变更)单独设置更长的 1% 观察期。

08目标架构:模块化单体优先,reed 平台能力的现代替代

新架构的核心决策只有一个:单体还是微服务?对 20–50 人规模、内部信息化场景,答案几乎是确定的。

8.1 单体 vs 微服务

考量模块化单体微服务
团队规模匹配✅ 一个内部团队即可开发运维❌ 需要平台工程能力(服务治理、链路追踪、分布式事务),通常 3–5 个以上团队才回本
事务一致性✅ 本地事务够用(合同审批 + 台账更新天然是同一事务)❌Saga/最终一致性,复杂度暴涨且正是事故来源
与绞杀者模式的配合✅ 每个域是新单体里的一个 Maven 模块,边界用接口隔离,将来可拆出⚠️ 过早拆分 = 第二系统效应的最大放大器
演进路径✅ 模块边界先立住,哪块真有独立扩缩/团队需求再拆(Twitter 也是先拆组件后拆服务)——

结论(论断 6):新系统 = Spring Boot 3.x / JDK 21 LTS 的模块化单体,按 DDD 划分模块(contract / operation / workflow / platform-security / reporting…),模块间只经接口通信、数据库 schema 按模块分 schema。服务化留作远期选项,不进本期目标。

8.2 reed 平台五组件的替代映射

一个常见误区是「新系统要连平台一起自研」。reed 平台的五个能力,2026 年全部有成熟开源或轻量方案,自研平台是 2013 年的正确决定、2026 年的错误决定。

reed 组件能力现代替代迁移要点
grail 建模元数据驱动的业务对象 ORMJPA/MyBatis + 代码生成器;或保留「元数据表 + 解释器」模式但用新栈重写grail 元数据表是重要资产:考古阶段已结构化导出,可生成新系统的实体类与 DDL 初稿
pigeon 工作流审批流引擎(Hibernate 3)Flowable / Camunda 8(BPMN 2.0 标准)存量流程定义迁移为 BPMN;在途流程实例选择「走完旧流程或冻结快照迁移」二选一,切流窗口对齐
brick 页面设计器配置式页面生成Amis / Formily 等开源低代码 JSON Schema 方案,或纯前端 + 代码生成brick 配置表 → JSON Schema 的转换器是个一次性的小工具,AI 可全自动完成 80%
tiger 安全用户/角色/权限/组织Spring Security + OAuth2/OIDC;或轻量方案(Sa-Token 类)+ 数据权限层自研权限模型迁移要先做「权限语义对账」:旧系统的数据权限过滤藏在 508 个 SQL 里(见第 05 章②)
runway 聚合门户/集成/聚合入口API 网关(Nginx / APISIX)+ 前端微加载或单体前端过渡期兼任新旧系统流量路由器(第 07 章)

8.3 技术栈建议表

层建议理由
运行时JDK 21 LTS(虚拟线程可用)当前 LTS 主力,生态与 AI 工具支持最全
框架Spring Boot 3.x从 Spring 3.2 的编程模型演进路径清晰,团队经验复用度最高
数据访问保留 MyBatis(升级到 mybatis-spring 3.x)+ 新代码用 JPA 或 MyBatis-Plus论断 4 的直接推论:508 个 XML 里的 SQL 是资产。SQL 90% 兼容可平移(Oracle 方言若换库则见第 09 章),比让 AI 重写 SQL 然后逐条对账便宜得多
前端Vue 3 / React + TS,表单密集页面配 Amis/Formily替换 brick 的配置式开发体验;国内生态 Vue 更厚
工作流Flowable(BPMN 2.0)Java 生态原生、社区活跃、与 Spring Boot 集成成熟
数据库PostgreSQL(首选)或国产库(若有信创要求)迁移路径见第 09 章;若现有 Oracle 许可成本可接受,也可「先换应用、缓换库」,分两步降低风险
CI/CD流水线内置:编译 → 静态扫描 → 表征测试 → 安全扫描 → 部署灰度第 10 章的门禁就长在这里

关于「AI 原生架构」的克制建议:不要为了「AI 重写」而让新系统采用团队不熟悉的花哨架构(如全事件溯源、CQRS)。新系统要优化的是未来 10 年你们团队维护它的成本,不是本次迁移的新鲜感。用团队最熟的方式表达业务,AI 工具链反而能发挥最大作用——AI 对主流模式的理解远好于对自创架构的理解。

09数据迁移专项:dmp 的正确打开方式

数据迁移失败没有「回滚重试」的余地——数据错了就是经营事故。国产数据库厂商与银行业在过去几年沉淀了一套高度工程化的方法,可直接借用。

9.1 先做一个关键决策:新系统用什么库?

选项适用条件对迁移的影响
A. 保留 Oracle(先换应用后换库)许可成本可接受、无信创硬指标数据层零迁移,风险大减;508 个 SQL 原样可用;把换库推迟为独立二期项目
B. PostgreSQL / 开源库想摆脱 Oracle 锁定、无信创要求SQL 方言转换是主要工作量(CONNECT BY → 递归 CTE、ROWNUM、NVL/DECODE、序列语法);AI 辅助方言转换 + 逐条对账
C. 国产库(达梦/金仓/OceanBase 等)有信创合规要求主流国产库主打 Oracle 兼容,DMP 可直导或近原生导入;但 PL/SQL 对象仍需逐个验证(金仓实践:127 个存储过程 + 43 个函数 + 89 个复杂视图是典型改造清单量级)

本报告的建议:若非硬性约束,选 A。「换应用」与「换数据库」是两个高风险变更,叠加在一起出事时无法归因。分开做,每一步都可验证、可回滚。

9.2 五步迁移法(银行业 / 信创实践综合)

  1. 对象盘点与分级:从 dmp 还原到测试库,盘点全部表 / 视图 / 存储过程 / 触发器 / 序列 / 同义词,生成兼容性报告与改造工作量清单。按 A/B/C 分级:核心交易表优先,归档历史数据延后。
  2. 全量迁移:expdp 导出 → 目标库分片导入(大表延迟建索引)。全量迁移可在项目中期就做——它不干扰生产。
  3. 增量同步 + 单写双轨:切换窗口前,用 Oracle LogMiner / goldengate 类工具或目标库自带同步链路,把增量变更秒级同步到新库。红线:双轨期间写操作只走一端(旧库),另一端只读——双写会让数据不一致无限放大,这是所有银行案例一致强调的铁律。
  4. 三级校验:①行数与校验和逐表比对;②关键字段抽样比对(金额、日期、状态);③业务逻辑校验——合同台账场景即:合同金额 vs 审批单金额 vs 收付款流水轧差、履约状态 vs 审批记录勾稽。验收线:通过率 ≥ 99.99%。
  5. 割接与回滚预案:选业务最低谷窗口(凌晨/周末);流程 = 停旧写 → 增量追平 → 终态快照比对 → 切连接 → 冒烟验证 → 放量。割接手册 + 回滚预案 + 监控指标清单三份文档缺一不可;连接池初始化数、validation 查询(SELECT 1)这类细节提前演练——它们是割接夜里最常见的翻车点。

性能验收(别忘了):新库性能不得低于旧库基线——TPS ≥ 基线 95%、P99 延迟不劣化。用负载回放引擎录制真实交易回放验证,并做故障注入(杀主节点、断网络)验证高可用切换。功能跑通 ≠ 迁移完成。

10AI 工程化与治理:让 AI 成为「有门禁的高产员工」

AI 不是一次性引入的工具,而是要进团队编制的「新员工」:给它岗前培训(规则库)、给它工作规范(阶段门)、给它绩效考核(对账差异率)。这一章讲怎么管。

10.1 工具格局(2026 年中)

层代表工具对本项目的适配判断
确定性机械转换层OpenRewrite / Moderne(Java 配方式重构)处理「已知且可枚举」的变更:JDK 升级、javax→jakarta、依赖 bump。确定性 100%,优先于 AI 使用——凡配方能表达的,不用 AI
Agentic 编码层Claude Code / Copilot / 开源 agent 框架主力工具:代码考古、表征测试生成、业务逻辑迁移、测试补齐。配合规则文件(CLAUDE.md / 规约库)与 MCP 接内部系统
云厂商迁移服务AWS Transform / GitHub Copilot app modernization / watsonx绑定云厂商生态(AWS Transform 目标是把你迁去 AWS);若不上公有云则参考其方法论(评估→试点→规模化→持续学习四段式),不必绑定产品
架构分析vFunction / CAST 类知识图谱单体拆分边界发现、死代码检测;HCLTech 试点显示「确定性知识图谱 + AI」比纯 AI 准确率更高——预算允许可引入,预算紧张则 AI 考古 + 人工复核可覆盖 80% 价值

行业综述(dev.to 2026)的关键结论:失败项目大多「拿为一层设计的工具去打另一层」——用配方工具做架构拆分,或用 AI 做 RGB 机械升级。先分层,再选工具。

10.2 门禁分层:AI 产出进主干必过的六道关

① 编译构建 可编译可启动 硬门 · 自动 ② 静态扫描 SonarQube 质量门 硬门 · 自动 ③ 表征测试 行为基线全绿 硬门 · 自动 ④ 安全扫描 依赖 CVE + 代码注入面 硬门 · 自动 ⑤ 人工评审 金额/权限/状态机必审 软门 · 人 ⑥ 灰度验证 双跑对账 + 切流观察 硬门 · 自动+人 任何一道失败:不修 AI 的输出,先修 AI 的流程 失败原因归类 → 回写规则库/修正表征基线/调整提示词模板 → 重跑。同一错误第二次出现即流程缺陷(Salesforce/Anthropic 一手方法论)
图 7 · AI 生成代码的六道门禁。硬门全自动、不过不放行;人工评审按风险分级抽样加必审清单。方向:随规则库成熟,软门逐步收窄到高风险清单。

10.3 三条治理纪律

  • 修流程,不修代码(fix the process, not the code):AI 第 N 次犯同类错误时,正确动作是改规则文件、加自动检查 hook,而不是人肉改掉这次的输出。团队的核心资产从「代码」变成「规则库 + 验证设施」——这也是为什么第 04 章说 W1 试点真正的交付物是流水线本身。
  • 数据不出域:合同与经营数据是敏感资产。参照 Pictet(221 年历史瑞士私人银行)的落地方案:企业级合约(数据不训练模型)、部署区域约束、按角色分阶段放开。若有条件,用「脱敏后的代码 + 结构」做 AI 分析,真实数据只在隔离环境流转。
  • 信任但有验证:Stack Overflow 2025:开发者信任 AI 输出的比例已从 40% 降到 29%——这不是 AI 变差了,是用过的人变多了。把「验证成本」显性编入工期(第 03 章:大型项目按 40% 压缩率做计划,而非试点的 90%),信任问题就从情绪问题变成了排期问题。

11组织与度量:决定成败的「非技术因素」

WJARR 2025 对 78 个企业现代化项目的研究结论:技术改造 + 组织转型双轮驱动的项目 91% 达成业务目标,纯技术驱动的只有 43%。差距不在代码里。

11.1 团队构成建议

角色人数参考职责与要点
迁移专项小组(全职)4–8 人禁止兼职——兼职的迁移永远排不上优先级,这是行业血泪共识。构成:2–3 名熟旧系统的工程师 + 2–3 名新栈工程师 + 1 名 AI 工程化负责人(管规则库/流水线/门禁)
业务专家(in the loop)每域 1–2 人合同管理员/财务/经营口。职责:确认业务规则目录、裁决对账差异、验收灰度。给他们算工时、进项目组——不是「有空时帮忙」
旧系统守护者1–2 人(可兼职)迁移期间旧系统照常运转:修 bug、上必要的政策性需求。明确「冻结 vs 维持」边界:默认维持(绞杀者模式的前提),只冻结重构性改动
reed 原作者/资深维护者至少 1 人巴士系数风险的最大对冲。若已离职,第 05 章考古产出就是唯一替代——更要确保业务专家确认环节严格执行

11.2 度量体系(防 Goodhart)

指标健康线防扭曲说明
波次交付周期(每域从开工到 100% 切流)逐波缩短只统计「切流完成」不统计「代码写完」——防止为赶进度跳过双跑
双跑对账差异率收敛且可解释差异必须三方归因;「差异率为 0」若出现太早,先怀疑对账覆盖面不足而非完美迁移
旧系统代码量(活跃入口数)单调下降真正的北极星:新系统代码量无意义,旧系统的消亡速度才是项目进度
生产事故(P1/P2)不高于基线Salesforce 数据显示 AI 加速与质量可以兼得,但前提是门禁真实生效——事故率抬头先查门禁是否被绕过
规则库覆盖率(已确认规则 / 目录规则)核心域 100%防「AI 说了算」:未经业务确认的规则不得作为迁移依据

反 Goodhart 原则:任何单一指标被考核,它就会撒谎。以上指标成组看,永远不设「AI 代码占比」这类 vanity metric 考核。

12反模式清单:别人已经踩过的 12 个坑

每一条都来自真实案例。用法:每两周拿这张表过一遍项目现状,命中任何一条立即纠偏。

战略层

反模式症状修正
①「先重写后切换」新系统闷头开发一年,旧系统照常演进,差距越拉越大绞杀者模式:新功能在新系统长,旧系统只维持(第 02 章)
② 把 AI 当项目主角方案 PPT 第一页是「AI 自动重写 73 万行」,没有验证与回滚章节AI 是加速器不是方法论;Gartner:这类项目 70% 不达预期(第 03 章)
③ 按技术栈切波次「先把所有前端换了,再换后端」——业务断裂,没法对账按业务域垂直切波(第 07 章)
④ 大而全的新架构设计3 个月架构评审,微服务/中台/AI 原生全家桶模块化单体 + 试点域逼出架构决策(第 08 章)
⑤ 无限期并行新旧双轨跑了两年谁也不敢切每个域设硬性退役时限;30 天 clean run 即关旧入口(第 06 章)
⑥ 应用与数据库同时切换割接夜出事,无法归因是代码还是 SQL 方言两个高风险变更分开做(第 09 章)

工程层

反模式症状修正
⑦ 只考 Java 代码考古报告没有 SQL / 元数据 / 存储过程章节四线考古(第 05 章)——本系统三轨数据访问是高危点
⑧ 无表征基线就迁移新系统测试全绿但生产对账差异不断先行为公证再动代码(第 06 章)
⑨ AI 产出免检进主干「AI 写的测试都过了」六道门禁;信任比例 29% 的教训(第 10 章)
⑩ 不删死代码直接迁给 25% 的死代码买全票考古阶段剥离 + 灰度下线观察(第 05 章)

治理层

反模式症状修正
⑪ 兼职迁移团队「大家抽空搞」,半年无产出全职专项小组 + 业务专家算工时(第 11 章)
⑫ 敏感数据裸奔给 AI把生产库直接丢给公有云模型数据不出域方案先行(第 05/10 章)

13结论:如果你的团队只记住五句话

  1. 这不是重写项目,是受控迁移项目——AI 把 10 年的绞杀者迁移压缩到 18–30 个月,但没有取消「行为验证」这个环节。
  2. 先花 6 周做四线考古(Java / 508 个 SQL / grail 元数据 / dmp 数据库对象),产出业务规则目录——这是全项目 ROI 最高的投入。
  3. 先行为公证,后动代码:表征测试 + 双跑对账 + 灰度切流,是每一波都可控的机制保证。
  4. 从边缘域试点,contract 域最后分模块切;试点真正的交付物是 AI 流水线与验证设施本身。
  5. 组织先行:全职专项小组 + 算工时的业务专家 + 六道门禁。双轮驱动 91% vs 纯技术 43% 的差距,全部在这句话里。

参考来源(按证据类型分组)

厂商一手案例(有利益相关,数字按保守口径采信)

  • Anthropic 官方:LG CNS 案例研究(2913 API、99.1%、7 个月);Pictet 案例研究(银行业 AI 治理与数据驻留);Cognizant 合作公告(legacy modernization 实践框架)
  • Salesforce 官方《How Engineering Became Agentic》(2026):33 API 迁移 231 人天→13 天、规则框架法、事故率 -5%
  • AWS:AWS Transform 官方文档与 FAQ(四段式方法论、全链路可追溯、Twitch/Coupang/Air Canada 案例)

行业调查与分析

  • Stack Overflow Developer Survey 2025(n≈4.9 万):AI 使用率 84%、信任度 40%→29%
  • Gartner(2026,经 CIO/D1Net 转述):生成式 AI 依赖型大型机迁移 70%+ 不达预期;AI-ready data 警示
  • Stripe Developer Coefficient:开发者每周约 17 小时用于维护类工作

方法论与学术

  • Joel Spolsky《Things You Should Never Do, Part I》(2000)——Netscape 案例原文论证
  • Fred Brooks《人月神话》(1975)——第二系统效应;Martin Fowler——Strangler Fig Application(2004)
  • WJARR 2025《Legacy Application Modernization: A Strategic Framework》(n=78,86% 绞杀者成功率、91% vs 43% 双轮驱动结论;单篇期刊、中等强度)
  • Michael Feathers《Working Effectively with Legacy Code》——表征测试概念源头

工程实践与厂商技术博客

  • 电科金仓:某省交通集团 Oracle 全栈迁移纪实(五阶段、三级校验、A/B/C 分级);华为云社区:银行核心 6 步迁移法(单写双轨、99.99%、TPS≥95% 基线)
  • Kellton:Shadow Execution 框架(golden master 双跑 4–8 周、0.00 哨兵值案例、三层验证);HCLTech:iLIT-AI + CAST 知识图谱两步转换试点(2026-03,900 万行);BBD/Sanlam:COBOL→文档→Spring Boot(90% 提速)
  • 腾讯云开发者社区:遗留系统微服务改造系列(房地产 CRM 100 万行案例);dev.to:2026 遗留 Java 现代化工具格局综述(确定性层 vs 纠缠层)
  • Deluxe 大型机迁移(2026 CIO 100,12 个月、年省 490 万美元;D1Net 报道)

证据边界声明:厂商一手案例的数字存在天然的选择性披露偏差,本报告已在每处标注证据强度并按保守口径采信(如工期压缩按大型项目 40% 做计划而非试点口径 90%)。Forrester「47% 失败源于未知依赖」与部分工具对比数字来自二手转述,仅作方向性参考。所有涉及本系统的具体波次划分、工期与人数均为基于系统画像的推演草案,须经第 04 章阶段①的实际考古结果修正。