Architecture 如何实现银行遗留IT系统的现代化?

Architecture 如何实现银行遗留IT系统的现代化?,architecture,refactoring,software-design,legacy,banking,Architecture,Refactoring,Software Design,Legacy,Banking,银行IT系统等遗留大型IT系统现代化的有效方法有哪些? 假设有大约10-20个来自几个开发公司的独立遗留系统,其中一些是用旧的JSP编写的,许多是基于存储过程的,几个数据库之间有DBLINK,像account和user这样的实体在系统之间没有标准化 替换或重写整个系统不是一条可行之路,因为人们正在使用它,而且许多部分没有正确的文档记录。 我想学习一些循序渐进的步骤,在使用系统时逐步改进,而不是停止 有没有类似系统总线的东西可以以某种方式集成所有旧系统,并开发微服务来替换旧系统的某些部分 学习这些

银行IT系统等遗留大型IT系统现代化的有效方法有哪些? 假设有大约10-20个来自几个开发公司的独立遗留系统,其中一些是用旧的JSP编写的,许多是基于存储过程的,几个数据库之间有DBLINK,像account和user这样的实体在系统之间没有标准化

替换或重写整个系统不是一条可行之路,因为人们正在使用它,而且许多部分没有正确的文档记录。 我想学习一些循序渐进的步骤,在使用系统时逐步改进,而不是停止

有没有类似系统总线的东西可以以某种方式集成所有旧系统,并开发微服务来替换旧系统的某些部分

学习这些东西的方法是什么

谢谢

*我是一名软件开发人员,想成为一名架构师,但不知道怎么做。

非常非常仔细

问题是,作为一家银行,这些系统通常都是事务性的,而且耦合非常紧密

您应该一次选择一个用例,并从前端到后端进行开发。选择Bill Pay之类的东西,构建一个新的UI,让它通过任何可用的接口与后端系统进行通信。如果没有可用的集成API接口,则构建它们

一旦您构建了一个UI,就可以分离出更深层次的用例,仍然为实际的数据存储库维护后端。从理论上讲,在某个时刻,您需要确定您已经覆盖了所有用例,并且您将重写数据存储。根据复杂性,这可能需要数年时间。一些最棘手的接口是管理接口,而不是面向客户的接口,在需要它们之前,没有人会考虑它们

很有可能,你的大问题甚至不是技术问题,而是将所有这些团队转移到一个新系统中的变更管理问题。这类变革对人类/政治的影响非常复杂,必须成为高层领导的主要关注点,才能取得成功。人们已经习惯了一个界面,而且由于它很旧,它可能只是工作,所以它很可能不会被善意地接受。特别是因为任何新程序都会有bug

去年,我最近看到我的银行职员对他们的新web界面感到失望,最终放弃了,回到他们的3270模拟器,以便他们能够完成真正的工作。新的web界面看起来至少有10年的历史,3270界面可能更接近20-30年的历史。

非常非常小心

问题是,作为一家银行,这些系统通常都是事务性的,而且耦合非常紧密

您应该一次选择一个用例,并从前端到后端进行开发。选择Bill Pay之类的东西,构建一个新的UI,让它通过任何可用的接口与后端系统进行通信。如果没有可用的集成API接口,则构建它们

一旦您构建了一个UI,就可以分离出更深层次的用例,仍然为实际的数据存储库维护后端。从理论上讲,在某个时刻,您需要确定您已经覆盖了所有用例,并且您将重写数据存储。根据复杂性,这可能需要数年时间。一些最棘手的接口是管理接口,而不是面向客户的接口,在需要它们之前,没有人会考虑它们

很有可能,你的大问题甚至不是技术问题,而是将所有这些团队转移到一个新系统中的变更管理问题。这类变革对人类/政治的影响非常复杂,必须成为高层领导的主要关注点,才能取得成功。人们已经习惯了一个界面,而且由于它很旧,它可能只是工作,所以它很可能不会被善意地接受。特别是因为任何新程序都会有bug


去年,我最近看到我的银行职员对他们的新web界面感到失望,最终放弃了,回到他们的3270模拟器,以便他们能够完成真正的工作。新的web界面看起来至少有10年的历史了,3270界面可能有20-30年的历史了。

第一步是深入了解谁知道系统的哪些部分。您可能会希望以一种显示业务风险的方式将其形象化。无论是软件本身还是部署方式。这可能会让很多人不高兴,表明风险被忽视的时间太长了。然后,你需要好好看看时间花在了哪里,以及如何释放容量来开始现代化。您能否进一步自动化部署和测试?你能减少使用的不同技术的数量吗?标准化受支持的库版本?对于业务风险而言,重要的是变化量。你有多稳定
不同的部分,预计会发生什么变化?以及依赖关系,哪些变化会导致其他地方的一系列变化?在您设想了所有这些之后,业务部门需要决定哪些风险是可接受的,哪些风险需要以何种优先级进行修复。这不是技术责任。您需要提供选项及其利弊、成本和收益,但让业务部门决定在何处花钱

第一步是提供对系统哪些部分的了解。您可能会希望以一种显示业务风险的方式将其形象化。无论是软件本身还是部署方式。这可能会让很多人不高兴,表明风险被忽视的时间太长了。然后,你需要好好看看时间花在了哪里,以及如何释放容量来开始现代化。您能否进一步自动化部署和测试?你能减少使用的不同技术的数量吗?标准化受支持的库版本?对于业务风险而言,重要的是变化量。不同部分的稳定性如何,预计会发生什么变化?以及依赖关系,哪些变化会导致其他地方的一系列变化?在您设想了所有这些之后,业务部门需要决定哪些风险是可接受的,哪些风险需要以何种优先级进行修复。这不是技术责任。您需要提供选项的利弊、成本和收益,但让业务部门决定在哪里花钱

谢谢您的解释。让我问下一个问题,如何学习构建良好的集成接口?这完全取决于您的特定场景。企业集成本身就是一种职业。我会从读很多书开始,这是一个很好的开始。然后阅读SOA、REST、ESB和您遇到的任何其他首字母缩略词。这是一个非常大的话题,而真正精通它是一个漫长的过程。谢谢你的解释。让我问下一个问题,如何学习构建良好的集成接口?这完全取决于您的特定场景。企业集成本身就是一种职业。我会从读很多书开始,这是一个很好的开始。然后阅读SOA、REST、ESB和您遇到的任何其他首字母缩略词。这是一个非常大的话题,而真正擅长它是一个漫长的过程。