将遗留应用程序拖入现代时代是当今数字战略的关键支柱。但它也比你想象得更难、更昂贵,而且回报更少。
根据TwoBitHistory.org的调查数据显示,超过95%的《财富》1000强企业仍在使用IMS——IBM古老的分层数据库管理系统(Database Management System,简称DBMS)。
相比之下,我自己的非正式调查结果显示,根本没有任何最佳IT开发人员会对在这种环境中工作感兴趣。
吸引顶尖人才的能力是首席信息官(CIO)对其应用程序组合进行现代化改造的一个原因——并非唯一原因,而是最重要的原因之一。其他原因还包括减少许可和支持费用,以及提高灵活性和适应性。
事实上,“现代化”并不像看起来那么简单,它还有一些不为人知的秘密,聪明的CIO会在他们的决策中充分考虑这些秘密。
1. 应用程序现代化是一个复合问题
应用程序现代化涵盖了针对一系列非常不同的问题的一系列非常不同的解决方案。
根据应用程序和您交谈的对象,应用程序现代化可能意味着版本更新、平台改造、平台更换、语言现代化、重构或商用现成品/技术(COTS)转换。虽然它们都被称为“现代化”,但它们几乎没有共同之处。每个都有需要注意的陷阱。有些是众所周知的;而其他一些则更为隐蔽和不为人知。
此外,现代化意味着很多不同的事情这一事实本身就特别令人烦恼:在对给定的应用程序进行现代化改造之前,您不仅需要决定是否对其进行现代化改造,还必须决定它需要哪种类型的现代化改造。然后乘以您投资组合中的应用程序数量。
2. 版本更新是其自身的债务形式
一些IT领导团队认为他们“不为技术而购买技术”的做法非常具有商业头脑,并且不断地将一个陈腐的技术堆叠在另一个陈腐的技术之上,采取“如果它没坏,就不要修复它”的方法来管理应用程序及其运行的堆栈。
他们还将这种逻辑应用于商业应用程序以及每个应用程序运行的每个平台——服务器操作系统、DBMS、CMS、开发环境、桌面操作系统、浏览器等等——仅在特定的新功能带来特定的新投资回报率(ROI)时才更新。
不幸的是,“后治理”的法则仍然占据主导地位:与保持最新状态相比,“后治理”总是成本更高且更具破坏性的。
3. 重新平台化(replatforming)只解决一个变量
将遗留应用程序迁移到具有相应平台的开放环境是另一种流行的现代化方法。例如,平台改造意味着从大型机托管的z/OS + COBOL + CICS + DB2迁移到x85托管的Linux + COBOL + CICS + DB2。在云迁移中,这称为“直接迁移(lift-and-shift)”。
通过这种方法,你可以降低许可和供应商支持费用。
4. 平台更换成本更高
平台更换也是一种现代化方法,它只更换一个应用程序运行的平台,理由是它已经过时或失去市场份额。例如,您可以将应用程序的数据库管理系统(DBMS)从Sybase切换到SQL Server。虽然这种方法有时也被称为“重新平台化(replatforming)”,但它与上述重新平台化没有任何共同之处。
通过这种方法你会得到什么呢?使用过时技术带来的风险和漏洞会变得更少;同时也会获得更好的人才库。你无法得到什么呢?降低成本或任何改进的功能。相反地,成本还会增加,因为你必须获得更新平台的许可。
5. 语言现代化往往使糟糕的情况变得更糟
诱人的销售宣传说,自动化工具将从您的遗留COBOL代码中提取您的业务逻辑,并用现代语言重写它。这通常是通过将100000行代码的COBOL应用程序替换为100000行代码的 Java应用程序来实现的。
这是语言现代化最黑暗的秘密:语言不仅仅是词汇和语法。语言会带走应用程序设计理念。
第二个最黑暗的秘密:语言通常也会带走整个预先开发的逻辑库。编写新应用程序的开发团队会利用这些库。很少有代码转换器可以做到这一点,这意味着它们生成的转换后的代码更难维护。
6. 重构真正地现代化。所以当然是昂贵和耗时的
重构是一种现代化技术,可将过时的应用程序结构转换为符合经过验证的实践——例如,规范化数据,或将单体代码重构为微服务架构。
一些工具声称可以自动化大部分这种重构工作。无论如何,可以尝试一下,直至选出合适的工具。
需要注意的是:某些版本的自动重构确切地保留了应用程序的行为。虽然这确实最大限度地减少了业务中断,但它并没有将隔夜批处理应用程序转换为近实时处理——这种架构变化最有可能推动竞争优势。
重构以提高适应性和灵活性的形式提供了重要的业务利益。但是“天下没有免费的午餐”,架构现代化确实可以带来成果,但它既昂贵又费力。
7. COTS转换可能听起来不像是一种现代化技术……但它确实是,而且通常是最好的现代化替代方案
通常,现代化应用程序组合的最佳途径是用其他人编写的现代应用程序套件替换当前状态的应用程序“生态系统”。但这远非灵丹妙药——任何曾经参与转换至COTS/SaaS套件的人都知道这有多困难——但它通常是替换一组应用程序风险最小且最干净利索的方法。
8. 了解你拥有的东西并不能完全依靠自动化
现在我们已经了解了您选择的各种现代化方法的秘密,不过,还有一些更基本的东西需要提防。在对应用程序进行现代化改造之前,您需要知道自己拥有哪些应用程序以及它们是如何构建的,以便您了解刚才讨论的哪些现代化类型可能适用。
可悲的是,尽管所有出色的自动发现工具厂商都做出了“出色”的承诺,但这些工具仅用于发现服务器,而不是在服务器上运行的应用程序。
更糟糕的是,如果你的应用程序清单文档不完整,你也无法完整地记录平台——开发环境、服务器操作系统、DBMS、内容管理系统和其他工具——每个应用程序在其上运行。只有认识到这一点,并充分了解自己拥有什么,你才能开始选择上面讨论的哪些现代化方法将提供最大的好处。
9. 软件是一种意见——这使得应用程序集成成为一个论点
每个业务应用程序都编码了开发团队关于组织的某些方面应该如何运行的意见。其意见的语法是写在代码中的。其词汇被融入到应用程序的数据设计中。
当两个或多个应用程序的范围重叠时——举一个简单的例子,当应收账款和CRM系统都维护客户数据时——需要自动化来保持两组记录的同步。将投资组合中的所有应用程序重叠加起来,结果可能是数百个自定义点对点接口程序,每次开发团队添加或更改应用程序时,所有这些程序都需要进行修改和回归测试。
企业服务总线 (ESB) 或类似技术可以帮助减少为每个应用程序定义单个接口的接口数量。
但除了接口数量庞大之外,还存在语义错位的问题——也就是说,您的应收账款和CRM系统的客户数据模型不同。协调同一实体的这些不同定义,是使集成在开始时变得棘手并且更难以维护的原因。
企业服务总线 (ESB) 无法解决不同语义的问题,因为首先这不是技术问题,而且开发商也不同意。
10. 现代化IT劳动力通常比现代化他们支持的应用程序更难
您的员工可能非常擅长维护和增强构成您当前应用程序架构的应用程序和底层平台。他们也是蕴含丰厚知识的“宝库”,能够保障他们的应用程序帮助业务按预期运行。但是,他们在您的现代化计划将实施的替换应用程序和平台方面能力并不突出。
如果您的现代化计划能够奏效,您将需要他们像现在一样胜任替换工作。
除此之外,您还需要他们变得更有能力,以便他们能够发现只有熟悉可用工具和当前情况的聪明人才能改进业务的机会。
“幸运的”黑暗秘密是:简单地辞退他们,并雇佣替代者是行不通的。
当然,你可以选择直接辞退他们。但是寻找称职的替代者既昂贵又耗时耗力,而且即便他们的替代者多么称职,经验法则告诉我们,更换员工的成本相当于一个员工一年的工资——这无疑是十分昂贵的。
最后一个原因可以参见下条。
11. 运行良好的IT组织很少需要现代化
运行良好的IT组织会实践生命周期管理。 他们会始终将所有事物保持最新状态。这也使得预算易于管理——应用程序现代化工作稳定,几乎没有“大爆炸”情况,并且还有愉快的附带福利,即让您的员工队伍与应用程序和平台一起保持现代化。