翻新系统实践

翻新系统实践

基本情况

  • freemark+jsp+java14的怪异组合
  • 有部分内部接口采用feign
  • 大部分接口采用nacos作为profile管理以及服务注册发现
  • 前端部分仅使用了以jquery和easyui为主的插件,工程化程度不高

需求说明

来自于上线时候的苦恼,每次更新代码总会引发未在版本规划内的前端代码提交,且升级时间较长,失败回滚时候还有cache问题

问题分析

  1. 交互代码和逻辑代码均由同一个开发人员完成,此时心智负担较大,在工期较为短的时候,非常容易造成误操作,且只有上线后才能发现
  2. 系统经历了十年左右的开发,每个开发人员有不同的技术栈喜好,例如早期约定使用Spring Cloud的早期版本,而在五年后发现Spring Cloud很多功能又要二次开发,转向了nacos为主的国产。成员变换中不习惯,有部分接口就干脆采取域名+Nginx网关直连的形式
  3. 除此之外业务系统的拧巴逻辑也是翻新的重大障碍

方案选择

经过和开发小组成员讨论,建议先从增量做起,避开旧有尚能完备运行的业务,其中最简单的是需要抽出一个专门的开发人力,进行前端框架的搭建。(目前使用vue2,开发人员易于招聘)

框架需要完成以下几个事项:

  1. 要替换掉原来依靠服务器进行状态管理的现状,将状态管理放在前端
  2. 要将功能路由管理放在前端框架进行管理
  3. 要维护一个列表,标记哪些路由是用于直接走原来的逻辑,哪些路由是新增的有前端管理的逻辑
  4. 需要后端软件新增接口用以维护新旧软件的状态(一次性开发成本)

在前端框架开发完成一个月后,选取更新频率最低的应用作为试点应用,避免与正在开发的任务同时进行

当前后端代码可以剥离完毕后,在考虑后端的技术栈提纯,不应将改造任务混杂

一些结局

  1. 成功改造了从外包厂商回收的代码
  2. 在重要业务中,成功替换了进门抬杆页面的代码
  3. 为后续的业务不中断升级铺平道路