简介: 本文记录了一次真实的系统迁移实践:把一套运行十余年的 JSP 老系统,迁移到 Vue3 前后端分离架构。整个迁移需要先读懂存量代码、复用原有业务逻辑、做到双端并存、边开发边验证,最终实现不停机的架构升级。这里把过程中的关键做法整理出来,供有类似需求的团队参考。
再讲一个实际的落地案例,也顺便回答一个被问得最多的问题:老系统用新语言重构,AI 到底行不行。
下面是前阵子我们刚做完的一件真事——把一套跑了十几年的 JSP 老系统,迁到 Vue3 前后端分离架构,整个过程没停机、没出乱子。
一、老系统迁移,难在哪
我们这套系统,是当年 JSP 最火的时候建的,Spring Boot 加 JSP,跑了十几年。业务一天都不能停,但问题已经压不住了:前后端耦合、页面和程序代码混在一起,改一点牵一发动全身;更要命的是,会这套老技术的人一个个退休、转岗,新人没人愿意碰,维护成本一年比一年高。

迁到 Vue3 是明确的方向,但真干起来,难在三个地方:
第一,老代码没几个人真懂了。 十几年的 JSP 系统,业务逻辑和前端逻辑混在一起,接口没有标准化约束,很多"为什么这么写"的理由,随着老同事的离开已经没人说得清。要把这套东西迁走,第一步不是写新代码,是先把老代码读懂。
第二,迁移必须做到不停机、不中断。 我们的业务没有"停机窗口"这一说。新旧系统得并行跑,任何对原有业务代码的误改,都可能引发线上故障。这对"迁移"这件事的容错率,几乎是零。
第三,数据不能出内网,是硬约束。 我们的系统部署在内网,数据不能出网、不能上云。整个迁移过程,包括用的工具,都得在本地闭环里完成,没有捷径可走。
这三点,决定了这次迁移容不得半点闪失。
二、我们是这么做的
考虑到这套系统的复杂程度,我们没有直接拿现成的工具硬套,而是和 aiXcoder 团队一起,针对这套老系统的业务逻辑、接口范式和编码规范,做了一套定制化的迁移方案。整个迁移分成这么几步。
先读懂老代码。 智能体先主动分析项目结构,梳理业务分层、数据交互逻辑、分页规则和认证机制,把十几年的老系统摸清楚。这一步看着不起眼,但恰恰是迁移里最耗人、也最容易出错的地方。

按我们的规范来。 生成新代码时,它不按"通用最佳实践",而是按我们单位的编码规范、接口约定来。前后端分离要建的接口规范、响应格式、前端工程,都是按我们的要求搭的,不是它自己的一套。
双端并存、底层共享。 这是"不停机"的关键。它没有重写原有业务逻辑,而是复用已有的业务服务和数据访问逻辑,只在上面新增一层 REST API,给 Vue3 前端提供独立的数据服务。老系统继续跑,新前端逐步接,业务一点没断。

边开发边自己验证。 每做完一部分,它就自己编译、测试、验证。自测时它发现用户管理模块的分页处理有个类型转换问题,自己定位、自己修掉了——这种问题放在人工流程里,通常要等联调甚至上线才暴露。
双端并存验证。 最后它把原系统前端、Vue 新前端、后端接口三条链路分别做了校验,确认新旧系统并行期间,登录、认证、数据都能正常通。

三、结果:这活以前要好几个人干几周
老系统迁移,传统模式通常是前端、后端、架构师好几个人协作,历时数周甚至数月。
这次跑下来,最大的变化不是"快",是省心:代码理解、任务拆解、自动化验证这些重活,都被接过去了,我们的研发人员把精力放在了架构决策和业务确认上。沟通成本和工程风险,都实打实降下来了。
结尾
回到开头那个问题:老系统用新语言重构,AI 到底行不行?
我们这次的经验是,关键不在 AI 能不能写新代码,而在它能不能读懂老代码、守得住不停机的底线。把这两点做扎实了,迁移这件事就能交给 AI 稳步推进;反过来,如果只是把工具拿过来让它从头重写,风险就大了。
如果你也在头疼类似的老系统重构,欢迎一起交流。