现代化传统的大型IT系统(如银行的IT系统)有哪些有效方法? 假设有大约10-20个来自数个开发公司的独立遗留系统,其中一些是用旧的JSP编写的,许多是基于存储过程的,并且有几个dbs在它们之间具有dblink,帐户和用户之类的实体在系统之间不是标准的。
替换或重写整个系统不是要走的路,因为人们正在使用它,并且许多部分没有得到正确记录。 我想学习一些渐进的步骤,以便在使用系统时逐步改进,而不是停下来。
是否有某种系统总线之类的东西以某种方式集成所有旧系统,并开发微服务以替换旧系统的某些部分?
学习这些东西的方法是什么?
谢谢。
*我是一名软件开发人员,想成为一名架构师,但不知道怎么做。
答案 0 :(得分:3)
非常非常小心。
问题在于,这些系统通常都是非常具有事务性的(包括银行和所有人),并且耦合非常紧密。
您应该一次选择一个用例,并从前端开始进行开发。选择诸如Bill Pay之类的东西,构建一个新的UI,并使其通过任何可用的接口与后端系统对话。如果没有可用的集成(API)接口,请构建它们。
一旦构建了UI,就可以剖析更深的用例,同时仍然维护实际数据存储库的后端。在某种程度上(理论上),您需要确定已涵盖所有用例,然后将重写数据存储。根据复杂程度,这可能需要数年时间。一些最棘手的界面是管理界面,而不是面向客户的界面,在需要它们之前,它们是没人考虑的事情。
奇怪的是,您最大的问题甚至不是技术问题,而是将所有这些组转移到新系统中的变更管理。这种变化的人文/政治影响非常复杂,要使其成功,必须成为高级领导层的主要重点。人们已经习惯了一种界面,并且由于它已经很老了,它可能“可以正常使用”,因此,对它进行更改可能不会引起人们的仁慈。尤其是由于任何新程序都存在错误。
去年,我最近看到我的银行职员对他们的“新” Web界面感到沮丧,最后放弃并回到他们的3270仿真器,以便他们可以完成“真实”的工作。 “新” Web界面看起来至少已有10年的历史,而3270界面则可能接近20-30年的历史。
答案 1 :(得分:1)
第一步是提供深入了解谁知道系统的哪些部分。您可能希望以一种可以显示业务风险的方式将其可视化。既针对软件本身,也针对软件的部署方式。这很可能会使很多人感到不高兴,这表明风险被忽略了太长时间了。然后,您需要仔细了解时间花在了哪里以及如何释放容量以开始现代化。您可以进一步自动化部署和测试吗?您可以减少使用的不同技术的数量吗?标准化受支持的库版本?对于业务风险而言,重要的是更改的数量。不同部分的稳定性如何,预计会发生什么变化?依赖关系,哪些更改导致其他地方的级联更改?可视化所有内容后,企业需要确定可以接受的风险以及需要以什么优先级解决的风险。那不是技术责任。您需要提供各种选择以及它们的优缺点,成本和收益,但让企业决定在哪里花钱