前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >架构-遗留系统的重灾区

架构-遗留系统的重灾区

作者头像
java进阶架构师
发布2022-05-17 17:23:26
5340
发布2022-05-17 17:23:26
举报
文章被收录于专栏:Java进阶架构师Java进阶架构师

今天想跟大家聊聊遗留系统,首先,看一下这张图

这是一家银行的核心应用系统模块之间的交互图,我想没有一个人愿意工作在这样的系统上吧?

架构混乱,模块之间职责不明,一个需求就要需要修改四五个服务,这就是遗留系统,留给我们的问题。

遗留系统与架构

一个软件架构的作用,是要解决多个业务模块之间的协作问题。但如果架构混乱,多个模块之间往复调用,数据也是随意访问,模块之间的边界就会变得模糊,数据所有权也会变得含糊。试想一下,如果一张表被10个模块访问,谁能说得清这张表到底属于哪个模块呢?

系统之所以成为遗留系统的本质之一,就是架构的混乱。

综合来看,代码和架构的质量差,会导致遗留系统的维护成本相当高昂。

这里的维护就包括:新需求的添加、线上Bug的修改,以及为了维护系统运行所需投入的软硬件和人力等。

IEEE曾报道过,2010年以来,全世界在IT产品和服务上的支出达到了35万亿美元。其中四分之三用于运营和维护现有的IT系统,至少有2.5万亿用于尝试替换旧系统,其中差不多三分之一的资金都打了水漂。企业在遗留系统上的投入巨大,却没能得到相称的回报。很多资金只是用来维持系统的现状,却不能让它们变得更好。

遗留系统架构与安全隐患

代码和架构的落后还会导致系统在合规和安全方面的问题

去年我国正式施行了《中华人民共和国数据安全法》(即中国的GDPR),明确规定了软件系统的数据安全规范。如果不能依法进行系统的整改,将面临法律的制裁。

而在遗留系统开始构建的时候,可能就没有考虑太多的安全性。随着新的攻击手段越来越丰富,遗留系统的安全性越来越脆弱,企业也很难对此投资去专门改善安全性。

遗留系统如何「改造或重构」

曾经的我也遇到过遗留系统,相当痛苦,每天为毫无头绪的代码和混乱不堪的架构发愁,新需求来了根本不知道从何改起。改造和替换又是高风险操作,应该遵循哪些改造原则?重构还是重写,如何选择?

后来我在搜索解决办法时,看到了一段 Thoughtworks资深咨询师「姚琪琳」分享重构遗留系统方法,给我启发挺大,大约 4 分钟,这里分享给大家。

简单来说,首先,你要先梳理遗留系统的根本问题,找到切入口

其次,全面地了解改造过程,知其然,也知其所以然,就像这张图。

将遗留系统模块进行 6 步拆分,即::①假设驱动 → ②明确度量 → ③确定架构目标 → ④制定演进进度 → ⑤按迭代增量演进 → ⑥验证

「姚琪琳」有 10 多年的软件开发、设计和架构经验。尤其擅长遗留系统现代化、整洁代码和重构等,参与翻译或审校多本技术书籍,包括《领域特定语言》《.NET 性能优化》《深入理解 C#》等。

最近他专门写了个专栏《遗留系统现代化实战》,我第一时间就买了,不得不说,真香!

深入剖析了遗留系统的特点和问题,详解遗留系统现代化的原则、模式和最佳实践,并从代码、架构、DevOps 和团队现代化 4 大方向,解决遗留系统治理的疑难杂症,带你走出遗留系统的泥潭。

再简单介绍下内容,他将遗留系统分成了 4 个篇章:

  • 基础篇:为什么要对遗留系统“现代化”
  • 原则篇:以降低认知负载为前提、以假设驱动为指引、以增量演进为手段
  • 模式篇:20+ 各经典模式,以及来自一线实战总结的实用模式,帮你分而治之。具体的不说了,自己看图,非常清晰。
  • 实战篇:将带着你一起对一个典型的遗留系统进行现代化
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java进阶架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 遗留系统与架构
  • 遗留系统架构与安全隐患
  • 遗留系统如何「改造或重构」
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档