遗留系统现代化是足以让CIO心碎的词语。
很多时候,这个概念指的是重新设计21世纪早期(如果不是更早)构建的应用程序,使其提供接近21世纪的性能和用户体验(UX)。这样做的结果几乎总是不尽人意。除了花费的时间、金钱和精力外,企业还有不参与其他更具变革性的项目的机会成本。并且,最终结果很少像最新设计的系统那样敏捷、灵活、实用或用户友好。
但也不一定都是这样。对遗留系统现代化采用结构化方法可以最大限度地减少升级的工作和成本,同时确保从功能、性能和用户体验的角度获得良好结果。
遗留系统现代化的结构化方法
对遗留系统现代化采用结构化方法意味着提出两个关键问题,然后根据这些问题的答案采取正确的方法。这也意味着使遗留系统现代化成为持续的过程,而不是一劳永逸的项目。
对于很多CIO来说,最困难的部分是强迫他们自己和他们的团队有条不紊地解决他们确信他们已经知道答案的问题。但这值得付出努力:很多时候,这里的答案将使技术专业人员能够完全避开劳动密集型的努力。
1.你企业对遗留的定义是什么?
你对这个问题的回答将决定你将精力集中在哪些系统上,以及暂时搁置哪些系统。
根据乌克兰软件公司Mobindustry的说法:“遗留系统是指阻碍进一步发展、不允许轻松集成新功能并减慢企业日常运营的系统。简而言之,遗留系统很难维护、支持和扩展。”
这里的关键点是遗产并不意味着老旧。如果开发人员由于无知或匆忙而没有遵循最新的架构原则,那么上周构建的应用程序也可能属于遗留系统。匆忙的应用程序开发是技术债务的常见来源。
因此,第一步是将所有系统现代化分为三类:遗留、中间和现代。
遗留系统是那些需要现代化的系统,无论新旧程度;现代系统是那些不需要现代化的系统。中间系统和应用程序允许进行现代化,但可能不是首要任务。
CIO通常会拒绝这一关键的第一步,理由是业务利益相关者在对特定应用程序的容忍度方面已经达到极限,并要求立即对其进行现代化改造。通常的想法是,“我们已经知道哪些系统需要现代化,我们不需要浪费时间对它们进行分类。”
这种想法很诱人,但事实并非如此。即使遗留系统现代化团队拥有的带宽只可以处理单个应用程序,了解列表中的其他系统也很重要,以便将最佳实践应用于所有系统。
换句话说,不要将遗留系统现代化视为针对关键应用程序的单个临时项目,而应将其视为遵循一致方法的持续过程,应用于最需要现代化的应用程序。
2.遗留系统现代化的最佳方法是什么?
到目前为止,很明显这个问题是关于给定应用程序的最佳方法,因为结构化方法的重点是在为每个系统部署最佳方法。
为了回答这个问题,我们需要回顾遗留系统现代化的核心方法。
Gartner公司提到了五个R:重新托管(rehost)、重构(refactor)、重新架构(rearchitect)、重建(rebuild)、替换(replace)。这是看待事物的一种方式,它既是具体的(重新架构和重建往往重叠),也是范围广泛的-对于遗留系统现代化的特定目的而言。
考虑遗留系统现代化的更好的方法是从这五种方法的角度来考虑:封装、更换平台、重构、重新设计、重新思考。
封装系统(通过API)本质上限制了对系统的访问,以匹配与其连接的现代系统的信息和工作流。例如,你可以通过API将系统集成到通用UX平台中,以便其信息以用户易于使用的格式显示,以提供最佳的用户体验。
封装的价值在于,它解决了糟糕用户体验的短期痛苦,并使遗留系统看起来像现代系统一样运行。缺点是它没有解决遗留系统的根本问题:维护开销。封装的遗留系统仍然是遗留系统;当封装后,它将继续消耗与以前一样多的劳动力和成本。很多研究表明CIO将高达80%的预算用于支持和维护遗留系统,因此企业必须考虑这个问题。
更换平台听起来就像是:将系统(可能还有它的所有数据和存储资源)移动到另一个平台。通常,这是指托管设施或IaaS。在解决短期目标(例如关闭本地数据中心或避免昂贵的WAN升级以使远程用户能够访问系统)时,更换平台是有吸引力的选择。
然而,平台重构在很大程度上是过渡步骤。将问题转移到IaaS或托管设施可能会解决短期问题,但维护云服务的成本可能会增加,并且为遗留应用程序支付云成本只是另一种形式的技术债务。
根据Agile Alliance的定义,重构包括“改进现有程序源代码的内部结构,同时保留其外部行为。”具体来说,这包括改进代码的客观属性:长度、重复、耦合、内聚和圈复杂度,使其易于维护、增强代码理解和增加可重用设计元素和代码模块的使用。Agile Alliance继续指出,重构并不意味着重写代码、修复错误或改进软件的可观察方面,例如其界面。
为了理解重构,我们可以将其视为代码优化。也就是说,开发人员不会更改功能或基本编码算法,而是会审查代码,以确保其最佳理解,并实例化良好的敏捷开发做法。你还可以通过重构从代码中消除技术债务,即用更清晰、优化的设计替换所有编码快捷方式和次优部署。
重构是降低系统支持成本的好方法,很多企业将其部署为云迁移策略的健康组成部分。从遗留系统现代化的角度来看,重构的困境在于它没有解决依赖于过时架构的系统的挑战。
重新设计包括重新构建和重建,包括重写代码。本质上,这是指架构和设计现代化。这是大多数企业技术人员在考虑遗留系统现代化时立即选择的选项,因为它最直观:提供相同的业务功能,但使用现代编码技术和架构。
重新设计当然是一种可行的方法,它可提供无缝的全面清理。作为系统重新设计的结果,用户体验和支持成本都会得到改善。但是,CIO不应该排除另一个做法。
重新思考是一种未被充分利用的方法,它指的是重新思考整个业务流程。大多数企业技术人员都认为业务需求是一成不变的,但事实并非如此。有时业务需求本身就是过时的。
一个简单的例子:在COVID-19疫情期间,很多公司都在为如何为各种文档启用基于签名的工作流程而苦苦挣扎,因为员工在家工作并且出于合规性或安全原因无法打印文档。
真正的解决方法不是使应用程序现代化,而是首先重新考虑对基于签名的工作流程的要求。通过有效的身份验证,勾选复选框可以像签名那样有效。
很多业务需求已经过时或反映当时技术的局限性。例如,大多数CRM系统早于LinkedIn,并且没有设计为能够在工作变化时与个人保持联系。
通常,遗留系统现代化的最佳方法是重新思考系统所服务的业务流程。通常,你会发现流程本身已经过时。
对于“哪种方法最好?”这个问题,答案取决于一系列因素,包括成本、时间(即现代化需要多快进行)、需要现代化的其他遗留系统的数量和类型、企业的云战略和企业的整体业务战略。
重要的是根据所有可能的现代化替代方案考虑所有遗留系统,然后选择对每个系统最有意义的方法。需要考虑的关键因素是重新思考占整体现代化战略的多大部分;有时,重新思考可以消除整个类别的系统。
最后,制定所有系统现代化的路线图,不仅仅是那些目前被归类为遗留系统的系统。路线图应包括对所有系统的定期审查,以确定它们何时进入遗留系统类别。