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

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

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

遗留系统与架构

一个软件架构的作用,是要解决多个业务模块之间的协作问题。但如果架构混乱,多个模块之间往复调用,数据也是随意访问,模块之间的边界就会变得模糊,数据所有权也会变得含糊。

其实遗留系统的架构重构,我们可以分成“改造老城区”和“建设新城区”两类模式。

改造老城区模式是指对遗留系统内部的模块进行治理、让模块内部结构合理、模块之间职责清晰的一系列模式。

建设新城区模式是指将遗留系统内部的某个模块拆分到外面,或将新需求实现在遗留系统外部的一系列模式。

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

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

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

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

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

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

「姚琪琳」Thoughtworks 资深咨询师,技术书籍译者。拥有超过十年的软件开发、设计和架构经验。近年来在企业遗留系统现代化、领域驱动设计、敏捷软件开发、整洁代码和重构等方面持续精进,并通过理论指导、实战演练等方式为企业研发团队赋能。参与翻译或审校多本技术书籍,包括《领域特定语言》《.NET 性能优化》等10余本。

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

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

现在刚刚上线,用我的优惠口令「xitong888」,到手仅需¥68。

或者你可以直接购买极客时间的超级会员,首月 6 元,就能免费看这个课

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

  • 基础篇:为什么要对遗留系统“现代化”

  • 原则篇:以降低认知负载为前提、以假设驱动为指引、以增量演进为手段

  • 模式篇:20+ 经典模式,以及来自一线实战总结的实用模式,帮你分而治之。具体的不说了,自己看图,非常清晰。

  • 实战篇:将带着你一起对一个典型的遗留系统进行现代化

有多干货,看看下面的专栏目录

也许,你当前所在的项目上并没有遗留系统,所有的系统都生机勃勃、一片祥和。不过表面的祥和之下,可能暗藏波涛。

也许,你正在痴迷于新技术,但,新≠好,只有掌握了解决问题的方法,才能不惧任何问题。而不是把新技术当个锤子,看什么问题都是钉子。

扫码试读

刚写的代码,就变成了遗留系统?相关推荐

  1. 程序员刚写完代码 , 就被开除了,网友笑到抽筋

    程序员这行业可能对于一般人来说,你不入这行,是不懂行里的门道的.互联网行业的迅猛发展,很多人都选择加入到程序员这个群体中来,现在很多人都说该行业呈饱和状态,毕竟一年百万级的程序员加入进来. 一般程序员 ...

  2. 程序员刚写完代码 , 就被开除了

    最近在网上看到的两段"写完代码就被公司开除"的代码,说是网上写完这段代码,就被老板开除了. 1.第一段代码 这位程序员写完这段代码,觉得自己被开除是因为没有写注释,看到这里不禁笑出 ...

  3. OpenCV-Python我刚写六行代码就出了个惊天BUG

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引子 最近一直在用PyQT跟python-opencv做开发,正好 ...

  4. idea中git更新代码到本地之后自己写的代码不见了

    今天在合并分支的时候不小心选错了合并选项,导致本地刚写的代码都没了 解决办法 1.找到本地历史记录 2.选择自己想要的版本 3.点击RevertSelection恢复

  5. 【趣图】测试刚写完的代码...

    1.被老板委派接手刚刚离职同事的项目... 2.当他们要求我测试所有应用功能时 3.准备下班的时候,测试又提bug过來了- 4.使用新框架却忘记阅读文档 5.测试实习生的代码 6.网络延迟的危害.. ...

  6. 当写烂代码的人离职之后....

    半个月没有写blog了,正好是春节假期. 静下来,想想自己写的代码,真是有些汗颜,更有些惶恐. 加油吧~ 偶尔看到拉勾网上的一篇文章,记录下来,鞭策自己: 作者:蛋疼的AXB 来源:程序人生 休息一直 ...

  7. 不写一行代码,也能玩转Kaggle竞赛?

    整理 | Jane 出品 | AI科技大本营(ID:rgznai100) [导读]AI科技大本营会给大家分享一些 Kaggle 上的资源,如 Kaggle 开放的数据集,也会分享一些好的竞赛方案或有意 ...

  8. 原生 遍历_前端原生写js代码还是用vue等框架写项目?

    其实对于初入前端的同学来说,我个人推荐写原生.因为扎实的js基础是通过写原生代码逐步理解js的数据类型,语法,闭包,原型链,继承等知识,只有在项目中主动应用这些js的基本知识,才能逐步提高你的编码能力 ...

  9. 用c语言写代码_如何避免用动态语言的思维写Go代码

    由于招聘市场上Go工程师的供给量不足,所以在招人的时候我们招了不少愿意转型用Go语言进行开发的PHP工程师,不过虽说换了个语言,在他们代码的时候还是能发现很多PHP的影子.if语句后面非要带括号这种问 ...

最新文章

  1. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例
  2. openstack M 版 neutron网络组件基础入门
  3. Android Touch事件原理加实例分析
  4. js jquery关闭当前窗口
  5. java中的表达式是指_Java 表达式,语句和代码块
  6. CDN简介及linux环境下搭建
  7. i.mx6ul 移植Openwrt
  8. java还是c 2017_2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?...
  9. SQL查询多条只取其中最新的一条数据
  10. 【蓝桥杯嵌入式】【STM32】4_TIM之定时器及其中断、PWM初探
  11. 前端-requests-flask对应关系 args
  12. CCF NOI1087 第K名
  13. 算法 判断多个点是否在同一圆周线上_广州灵活计费自动出盘机技术方案大盘点...
  14. 双系统在linux中修复引导文件,windows ubuntu双系统重装后修复grub引导
  15. Javascript上传图片转base64并预览
  16. Fragstats4.2之计算景观格局指数(一)
  17. Python:计算KDJ指标
  18. 厦大计算机科学复试线,2020年厦门大学信息学院考研复试分数线
  19. 关于ADL的查找顺序
  20. Pinia——Actions

热门文章

  1. python爬虫编码转换_Python 爬虫遇到形如 小说 的编码如何转换为中文? - SegmentFault 思否...
  2. css3自适应布局单位vw,vh你知道多少?
  3. java NumberPad实现_JAVA语言编程思想
  4. msp430g2553串口接受数据_MSP430G2553串口通讯 发送接收
  5. php 加载redise_php环境篇:redis服务编译安装
  6. CentOS 安装Python 3.52
  7. Python是什么类型的语言?
  8. Angr Unsat_corn 使用之坑
  9. 时间复杂度为m+n,的一种模式匹配,适合子串不是很长的匹配
  10. 215.数组中的第K个最大元素/347. 前 K 个高频元素