• 什么样的系统是遗留系统:
    • 旧、过时、重要、仍在使用
  • 为什么需要现代化遗留系统:
    • 遗留系统往往是核心业务系统,不可能完全舍弃,但是维护成本又非常高
    • 遗留系统中携带大量数据资产导致难以和其他系统集成
    • 遗留系统中有丰富的业务知识待提取
  • 三大原则:
    • 以降低认知负载为前提:在内在认知负载一定的前提下,尽量减少外在认知负载,增加相关认知负载
      • 内在认知负载:从事一项工作必须付出的努力,比如前端必须要会 TS & 某一种框架,TDD 一类的开发技巧等。
      • 外在认知负载:代码越糟糕、越难读,外在认知负载越高
        • 无处可寻的业务知识:某一段代码做了什么,对应了什么业务功能
        • 毫无规律的架构知识:代码模块如何划分、架构因何设计
      • 如何降低认知负载:活文档:与代码共同演进
        • 基于实例化需求组织单元测试
        • 对遗留系统进行注释
        • 第三方工具梳理遗留系统内部的依赖关系
    • 以假设驱动为指引导:让大家都能看到现代化成果
    • 以增量演进为手段:避免竹篮打水一场空
  • 四化建设:
  • 五种策略:
    • Encapsulate:将遗留系统中的数据或者功能封装成 API,供外部调用。
    • Replatform:替换运行时平台。
    • Rehost: 将应用程序或组件部署到其它基础设施中。
    • Refactor/Rearchitect:在不改变业务行为的前提下,对代码或架构进行调整、优化,借此偿还技术债务、提升代码健康度。
      • Refactor:代码级别的重构
      • Rearchitect:架构级别的重构
    • Rebuild/Replace:对遗留系统进行替换。
      • Rebuild: 对应用程序的某个组件或某个服务进行重新设计或重写,但是保留原有的业务功能。
      • Replace: 彻底淘汰应用程序的所有组件,去构建或购买新的软件。同时可能对原有不合理的业务需求进行变更。