企业架构不是推翻从来,遗留系统怎么进行现代化改造也是EA中的一个话题。本文是IT帮EA工作组安研究员对AltexSoft公司的一个白皮书进行的解读,总结了遗留系统的概念,带来的问题以及对其进行现代化改造的策略和方法。
01 什么是遗留系统
Gartner将遗留系统定义为:一个对于日常运行至关重要的但是基于过时技术的信息系统。实际上判断遗留系统也不一定基于系统已经存在的年限,如果一个系统无法得到良好的维护以及难以满足业务和企业的需求,也会被认为是遗留系统。
在不同企业内部或多或少都可能存在这样的遗留系统,在早期搭建起来并承载企业最初的业务,随着企业的不断发展,在原有技术栈的基础上对系统进行改造升级以满足企业不断发展的业务需求。但是大多数遗留系统发展到今天,由于技术,架构或设计的问题,导致系统不便于维护和管理,并很难和其他系统进行集成。
02 遗留系统带来的问题
很多企业认为只要遗留系统工作良好,能够继续处理相应的业务逻辑,没有必要对其进行改造和升级。但是他们往往忽略了遗留系统的隐形维护成本,这对企业来说需要花费大量的预算来继续支撑和运营遗留系统,并可能因为遗留系统而错失新的机会进而带来更大的损失。下面列举了几个遗留系统成本的主要来源:
1. 运行和维护
企业需要持续对遗留系统进行更新和变更以满足业务发展的需求,而由于遗留系统落后的设计和较深的耦合度等问题,任何的更新和变更都可能需要投入大量的时间和精力。与此同时很多遗留系统对于底层基础设施也有特定的技术需求,进而基础设施的维护也会成为问题所在。另外由于遗留系统的技术和平台一般是过时的,企业如果需要持续对员工进行遗留系统的培训也会需要耗费大量的预算。
2. 集成和合规
现代技术往往可以利用新的API技术直接调用第三方系统提供的服务,类似于Google的地理位置服务等。但是遗留系统一般不具备这样的兼容性,因此如果需要引入类似的功能,很可能需要进行大量的定制化或重复造轮子以满足新的业务需求。
同时遗留系统也需要面对合规问题,随着信息化管理的完善,很多新的合规和法律要求逐渐成型,就像(General Data Protection Regulation)GDPR和California Consumer Privacy Act (CCPA)等,企业需要遵守这些合规和法律的要求。遗留系统如果要实现这些合规性要求,往往需要投入大量的成本进行改造。
3. 安全
遗留系统往往由于技术,架构所限,缺少持续的更新和维护,无法达到现代化的安全要求,进而造成数据泄露等问题为企业带来巨大的损失。
4. 错失商业机会
由于使用遗留系统,部分预算需要投入到遗留系统的维护中,这就意味着留给企业进行创新投入的预算会减少,可能使得企业缺少创新,无法抓住新的机会,影响企业在行业内的竞争性和盈利性。
5. 组织的敏捷性和效率
遗留系统一般自动化程度较低,导致企业使用遗留系统处理业务流程的效率不高。同时企业对于遗留系统的依赖导致无法对市场的趋势和方向做出高效和敏捷的响应。
03 遗留系统现代化的准备工作
遗留系统的上述问题给企业的持续发展和提升竞争力造成了阻碍。因此企业将遗留系统进行现代化改造会带来众多收益,例如:
1. 竞争优势
在一个被有几十年发展历史的科技巨头所统治的领域,如果你的企业能够提供现代化以及轻量级的解决方案,那么你就有机会打败这些传统竞争对手。
2. 更满意的客户和员工
过去的几年,用户体验和UI设计持续地发展和变化,如果企业能够提供良好的用户体验以及符合用户直觉的UI设计,无疑会让用户和员工更加满意,并提升效率,提高企业收入。
3. 面向未来的业务
将遗留系统替换为现代解决方案,业务就可以适应未来的演进和扩展,与此同时增加业务敏捷性和公司的创新能力。
4. 开启大数据的机会
过时的数据存储方式会阻碍企业方便高效的利用已有数据。当企业开始着手遗留系统改造,对数据库进行迁移和优化,就能够更好地利用数据抓住大数据机遇。
5. 更好的性能和可靠性
遗留IT系统和基础设施的故障会给企业的持续运行带来影响,现代化改造后的系统能够带来更稳定的系统运行环境,减少业务中断时间和影响。
为了获取上述收益,企业在准备进行遗留系统现代化改造时需要考虑如下的挑战和风险:
1. 挑战
a. 大多数员工不愿意面对改变。
b. 需要梳理和确定多个遗留系统现代化改造的优先级,否则并行的改造容易引入较大的风险。
c. 遗留系统现代化改造过程中需要注意对其功能的裁剪,并遵守新的数据交换规则和需求。
d. 遗留系统中很有可能存在无数的代码仅仅为了解决一个业务流程,这往往令人头痛。
2. 风险
a. 组织无意中采用了有缺陷或不完整的重构战略。
b. 组织不当使用外部顾问和外部承包商。
c. 培训不充分的劳动力被陈旧的技术束缚住了。
d. 该组织没有良好地控制遗留系统。
e. 需求的启发和确认太少。
f. 软件架构不是主要的重组考虑因素。
g. 没有树立独立和不同的“重构过程”的概念
h. 没有足够的计划或没有足够的决心去执行计划。
i. 管理层缺乏长期投入。
j. 管理预先决定了技术决策。
因此成功的软件重构需要切实可行的战略以及对于细节的关注和把控。如下是AltexSoft总结的最佳实践和方法:
1. 估算遗留系统现代化改造的成本
文中提供了三种评估工作量的模型,分别是:COCOMO (Constructive Cost Model) ,FPA (Function Point Analyst), The Putnam Model。有兴趣的可以前往如下网页进一步了解模型具体内容:https://www.computing.dcu.ie/~renaat/ca421/LWu1.html
2. 遗留系统现代化改造的检查项
a. 评估遗留系统的当前状态
b. 选择最快能够交付价值的遗留系统现代化方法
c. 重新思考架构,并优先考虑简单性
d. 选择提供最佳性能和用户体验的技术栈
e. 选用合适的编码规范和流程来注释代码以便于后续的持续改进
f. 为遗留系统创建支持和下线计划,当新的系统能够稳定运行后再进行遗留系统的下线
g. 为新系统的培训和更新做好预算
3. 遗留系统评估框架
AlextSoft采用如下几个步骤来评估遗留系统现代化的解决方案
a. 技术分析:当前系统使用的技术栈是否还有厂商支持,否则的话应该全部替换。
b. 架构审计:重新审查系统的架构组件,并确认需要进行现代化的部分。并且可以通过架构审计分析出不同组件的关联关系,确保现代化改造后不会影响整个产品的运行。
c. 代码审查:遗留系统的软件部分需要定期的审查和重构,否则在未来引入新的功能和改造可能会导致更多的问题。在正式进行现代化改造之前,应该进行详尽的代码审查,以确认代码的质量和是否可更新。
d. I/UX审查:与代码审查一样,UI/UX审查也需要进行,进而确认哪部分需要提升。
e. 性能测试:性能测试可以揭露遗留系统是否具备承载未来业务量的能力。较差的性能问题可以作为遗留系统重构的动机。
f. 面对未来增长的当前需求和机遇:考虑目前客户提出的业务需求时,也应该关注未来业务增长的机遇,这样能够为遗留系统现代化提供一个基础牢固的明智的决策。
04 遗留系统现代化的最佳实践
在进行了详尽的评估和分析之后,可以采用如下最佳实践开始着手遗留系统的现代化工作。
1. 遗留系统现代化最佳策略:
a. 架构驱动的现代化方法(ADM):基于架构分析和设计的角度进行现代化改造,能够基于业务需求定位当前架构和目标架构的差距,进而有针对性地进行现代化改造。
b. SABA:在现代化改造中使用的规划组织和技术问题的一个高层次框架。
c. 逆向工程模型:将遗留应用逐渐迁移到新环境的策略,该策略对于高成本、长时间的项目来说,这是一个不错的选择,但可能会受到技术进步的影响。
d. 基于价值的决策模型(VDM):基于技术和经济指标选择最合适的软件更新流程。
e. evOps:通过DevOps来加速现代化改造流程。
f. Renaissanc模型:该模型提出了两个阶段的现代化改造过程,首先通过重构为遗留系统的现代化改造建立强有力的基础,然后采用持续提升的方法来让这个系统在自身的基础上不断迭代进而达到现代化的目标。
g. WMU(Warrants, Maintenance, Upgrade)模型:以客户为中心的策略,围绕客户使用系统的满意程度来选择系统维护策略。
2. 遗留系统现代化改造方法:
a. 革命性方法:采用完全替换遗留系统的方法。该方案似乎有些极端,但是在某些条件下不得不采用此种方法以避免遗留系统带来更大的损失。
b. 演进性方法:采用系统化的,逐步演进的方法完成现代化。对现有环境影响较小,风险较低。不过该方法更多的是发现并解决系统的问题而不是移除造成问题的根本因素。
这两种方法都是下述改造途径的基础。
3. 遗留系统现代化改造途径:
a. 迁移和增强:这是最流行的方法,也是最能保证你的产品能够继续提供服务的一种方式。通过系统迁移和系统增强来逐渐完成系统现代化。但是该方法也有限制,即核心的业务逻辑和架构不能改变。
b. 修正与增强:如产品的技术栈已经较为现代化,并且在未来产品的增长方面不会带来瓶颈的话,只需要对系统局部修正和增强即可。类似于进行架构优化,代码重构,UX更新和性能优化等,而对于产品的业务逻辑不做大的改动。
c. 完全的软件重造:这是最为极端的方法,分析对于企业仍然至关重要的业务逻辑和功能,然后以遗留系统为基线,采用合适的新技术创建一个满足需求的产品。
4. 遗留系统现代化改造技术:
如下技术一般被用于在遗留系统现代化改造过程中更新过时的技术。
a. 封装(Encapsulation):一种重用遗留软件组件的技术,为遗留系统封装出一个易于访问的接口。当遗留系统对企业依然具有重要的业务价值的时候,该技术是个好的选择。
b. 重新安置(Rehosting):将遗留系统迁移到新的基础设施平台上来规避由于陈旧的基础设施平台造成的遗留系统的问题。例如将系统迁移到目前通用的X86平台来降低成本和节省空间。或将系统迁移到云上够享受云上提供的低成本,轻运维等便利性。重新安置技术一般不会像重构平台和重构技术等利用云上的原生功能特性。
c. 重构平台(Replatforming):在保留功能的前提下调整代码以适应和利用新的平台特性,如将数据库替换成云上托管的PaaS数据库等。
d. 代码重构(Refactoring):在不改变对外接口的情况下重构代码以解决发现的技术问题并提升组件的特性和结构。企业可以利用云原生的特性来进行代码重构,如需要的功能云上并不提供,也可以考虑选择合适的SaaS作为替代方案。
e. 架构重构(Rearchitecting):进行架构重构,并改造代码以适应全新的架构和更好的平台能力。
f. 重建(重设计)(Rebuilding):在保持应用的使用范围和使用需求的前提下从0开始重写组件。这样可以利用新的技术和第三方的接口来增加新的特性,功能以及流程。
g. 更换(Replacing):直接将产品更换为新的工具而不是对现有遗留系统进行投资做现代化改造。
总结下,不同的技术对于遗留系统造成的影响面不同,封装,重新安置,重构平台影响遗留系统的技术平台部分。代码重构,架构重构可以解决技术和架构领域的问题。重建和更换可以彻底的修改和增加新的功能及特性。
05 总结
不管采用何种途径和技术,遗留系统的现代化改造是一个复杂的,劳动力密集型并具有风险的过程。然而考虑现代化改造能够获得收益,这无疑是值得投入和冒险的。
为了顺应新的数字化转型经济的需求,企业不得不放弃依赖过时的软件系统并对其核心技术进行现代化改造。企业如果不再将遗留系统改造视为一次性项目,而将其视为一个不断迭代的周期性任务,必将从中获益。
作者:周金根,一个在企业架构、业务分析、软件需求、敏捷研发、自我管理、创新思维等多个领域构建体系,并自在快乐、勇于践行的布道者。资深教练和培训讲师,致力于通过践行并持续完善IT帮体系方法,帮助客户激活面向未来的能力。
推 荐 导 读