遗留系统改造策略选择

什么是遗留系统?

遗留释义:

(以前的事物或现象)继续存在;(过去)留下来:解决~问题。许多历史遗迹一直~到现在。

如何判断这是“以前”,“过去”的系统?
当我们去说“以前”,“过去”的时候,我们常常要表达的是,和“现在”不一样了,我们也不全部了解。因此,我个人比较倾向于定义遗留系统为:
随着团队能力的提升,当团队发现做过的一些技术决策(系统架构,代码风格,技术栈,业务流程实现)可以做的改进时,或者项目的一些上下文已经丢失时,这个系统就是个遗留系统。

是不是所有的遗留系统都需要改造?

站在公司的角度,我们一般会把业务/产品分为4大类

  • 明星业务/产品 - 高增长率、高市场占有率的业务/产品,这类产品可能成为企业的现金牛产品,需要加大投资以支持其迅速发展。
  • 现金牛业务/产品 - 低增长率、高市场占有业务/产品,属于成熟期业务/产品,可以为企业提供资金,而且由于增长率低,也无需增大投资。
  • 问题业务/产品 - 高增长率、低市场占有率业务/产品,前者说明市场机会大,前景好,而后者则说明在市场营销上存在问题。
  • 瘦狗业务/产品 - 低增长率、低市场占有率业务/产品,无法为企业带来收益。对这类产品应采用撤退战略

可以看出,如果我们的系统想要支持明星业务/产品,才需要进行改造。

改造策略

常用的改造模式主要有:

  • 修缮者模式
    对于现有系统新增一层进行封装,然后在保证新层对外提供功能不变的情况下,对系统内部进行改造,常用改造手法有:重构,模块解耦合,技术提升。
  • 绞杀者模式
    又称作“停止挖坑”模式,原有的系统停止更新和维护,新来的需求使用新的技术栈,重新实现。从而慢慢让新系统替代老系统。这个过程会比较长。
  • 拆迁者模式
    基于原有的业务,新写一套系统,然后,一次性将旧系统的数据,功能迁移到新系统上。

策略选择的依据

对于策略的选择,我们一般会进行2方面思考对比。

  • 改造完的收益VS不改造的收益
    • 市场响应力提高带来的收益
    • 系统质量提高带来的收益
    • 系统可用性好带来的收益
    • 系统开放性好带来的收益
  • 使用不同策略的成本对比
修缮者模式成本 绞杀者模式成本 拆迁者模式成本
了解现有业务的成本 原有系统新增功能成本 了解现有业务的成本
新增测试的成本 新增功能实现成本 重写现有系统的成本
读懂现有代码的成本 新系统和旧系统集成的成本 数据迁移的成本
现有系统新增功能实现成本 两个系统同时演进的成本
封装现有功能的成本

你可能感兴趣的:(遗留系统改造策略选择)