什么是遗留系统?
遗留释义:
(以前的事物或现象)继续存在;(过去)留下来:解决~问题。许多历史遗迹一直~到现在。
如何判断这是“以前”,“过去”的系统?
当我们去说“以前”,“过去”的时候,我们常常要表达的是,和“现在”不一样了,我们也不全部了解。因此,我个人比较倾向于定义遗留系统为:
随着团队能力的提升,当团队发现做过的一些技术决策(系统架构,代码风格,技术栈,业务流程实现)可以做的改进时,或者项目的一些上下文已经丢失时,这个系统就是个遗留系统。
是不是所有的遗留系统都需要改造?
站在公司的角度,我们一般会把业务/产品分为4大类
- 明星业务/产品 - 高增长率、高市场占有率的业务/产品,这类产品可能成为企业的现金牛产品,需要加大投资以支持其迅速发展。
- 现金牛业务/产品 - 低增长率、高市场占有业务/产品,属于成熟期业务/产品,可以为企业提供资金,而且由于增长率低,也无需增大投资。
- 问题业务/产品 - 高增长率、低市场占有率业务/产品,前者说明市场机会大,前景好,而后者则说明在市场营销上存在问题。
- 瘦狗业务/产品 - 低增长率、低市场占有率业务/产品,无法为企业带来收益。对这类产品应采用撤退战略
可以看出,如果我们的系统想要支持明星业务/产品,才需要进行改造。
改造策略
常用的改造模式主要有:
- 修缮者模式
对于现有系统新增一层进行封装,然后在保证新层对外提供功能不变的情况下,对系统内部进行改造,常用改造手法有:重构,模块解耦合,技术提升。 - 绞杀者模式
又称作“停止挖坑”模式,原有的系统停止更新和维护,新来的需求使用新的技术栈,重新实现。从而慢慢让新系统替代老系统。这个过程会比较长。 - 拆迁者模式
基于原有的业务,新写一套系统,然后,一次性将旧系统的数据,功能迁移到新系统上。
策略选择的依据
对于策略的选择,我们一般会进行2方面思考对比。
- 改造完的收益VS不改造的收益
- 市场响应力提高带来的收益
- 系统质量提高带来的收益
- 系统可用性好带来的收益
- 系统开放性好带来的收益
- 使用不同策略的成本对比
修缮者模式成本 | 绞杀者模式成本 | 拆迁者模式成本 |
---|---|---|
了解现有业务的成本 | 原有系统新增功能成本 | 了解现有业务的成本 |
新增测试的成本 | 新增功能实现成本 | 重写现有系统的成本 |
读懂现有代码的成本 | 新系统和旧系统集成的成本 | 数据迁移的成本 |
现有系统新增功能实现成本 | 两个系统同时演进的成本 | |
封装现有功能的成本 |
网友评论