《遗留系统现代化》读书笔记(模式篇-开篇)

news2024/11/26 20:19:17

文章目录

    • 遗留系统现代化的五种策略:重构还是重写?这是一个问题
      • 遗留系统现代化的五种策略
        • Encapsulate
        • Replatform
        • Rehost
        • Refactor/Rearchitect
        • Rebuild/Replace
        • 其他策略
      • 你应该选择什么样的策略?
      • 小结

本文地址: 《遗留系统现代化》读书笔记(模式篇-开篇)

遗留系统现代化的五种策略:重构还是重写?这是一个问题

遗留系统现代化的五种策略

Encapsulate

第一种策略是 Encapsulate,也就是将遗留系统中的数据或者功能封装成 API,供外部调用。
哪些情况使用封装的策略:

  • 遗留系统中还有一些功能十分重要,其他外部系统需要这些能力来构建业务。
  • 当你有一个第三方系统,希望扩展它的功能,但只能访问它的数据库,却无法修改代码的时候。
  • 封装的策略落到具体应用的时候,衍生出了很多相关模式,比如数据 API 模式、功能 API 模式等等。

Replatform

第二种策略是 Replatform,也就是替换运行时平台。这种策略不需要对代码大动干戈,只需要改动很小一部分。到了新的平台后,软件的功能和特性仍然保持不变。

Rehost

第三种策略是 Rehost,也就是将应用程序或组件部署到其他基础设施中,如虚拟主机、容器或云。这种迁移方法也有个很形象的别名,叫做“lift and shift”,就是原封不动地拎起来,转移到别的地方去。

Refactor/Rearchitect

第四种策略是 Refactor 和 Rearchitect,它们是指在不改变系统外部行为的前提下,对代码或架构进行调整、优化,以偿还拖欠已久的技术债务、改善非功能需求、提升系统健康度。
Refactor 主要是指代码级别的重构。
Rearchitect 是指架构级别的重构,它包含两层意思。第一层比较好理解,就是指从单体架构到分布式架构的这种架构调整。第二层是指不改变部署单元之间的关系,而是对单个或多个部署单元内部进行模块化或分层重构。由于这种模块化和分层也会涉及很多代码的调整,所以这种 Rearchitect 往往会和 Refactor 同时进行。

Rebuild/Replace

第五种策略是 Rebuild 和 Replace,都是指对遗留系统进行替换。它们两个替换的范围和程度不同。
Rebuild 可能是对应用程序的某个组件或某个服务的重新设计或重写,但会保留其原有的业务范围和业务规则。
而 Replace 是指彻底淘汰应用程序的所有组件,去构建或购买新的软件,同时会考虑添加新的业务需求或移除某些旧的业务需求。
请添加图片描述

其他策略

Retain,即保持系统当前的状态不做任何修改或更新。对于尚可满足使用的遗留系统来说,这无疑是风险和成本最低的策略。
Retire,就是评估完工作量、使用情况和业务价值之后,选择完全停止使用的一种策略。

你应该选择什么样的策略?

我们还是要依据目标和系统现状做判断。
对于业务敏捷来说,Replatform 和 Rehost 通过替换运行时环境和上云可以提升部署频率,特别是 Rehost 可以显著提升系统在遇到故障时的恢复时间;Refactor/Rearchitect 通过改善代码和架构的质量,可以缩短需求交付周期,减少线上问题数量;而 Rebuild/Replace 由于在某种程度上做了替换,也可以大幅度提升业务的响应力和交付质量。
对于运营效率来说,Refactor/Rearchitect 和 Rebuild/Replace 都可以提升价值流效率。而要想改善客户洞见,最有效的方式还是 Rebuild/Replace。在系统韧性与弹性方面,Rehost 显然是不二之选。
我们要结合当前遗留系统的现状和想要提升的目标,做综合判断,对于不同的模块,也可以选择不同的策略组合,来实现一个完整的业务目标。

小结

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/770055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试工程师最常用的web测试-浏览器兼容性测试

如今,市面上的浏览器种类越来越多(尤其是在平板和移动设备上),这就意味着你所测试的站点需要在这些你声称支持浏览器上都能很好的工作。 同时,主流浏览器(IE,Firefox,Chrome&#x…

上门家政小程序|上门家政小程序源码|上门家政系统开发

上门家政小程序的开发适合以下几个行业,下面将对其进行介绍并探讨其应用场景。   一、家庭保洁行业   家庭保洁是现代家庭生活中常见的需求之一,上门家政小程序可以为家庭保洁公司提供一个在线预约和管理平台。用户可以通过小程序方便地预约家庭保洁…

OV7670摄像头模块的使用

OV7670摄像头模块介绍 OV7670 CAMERACHIPTM 图像传感器,体积小、 工作电压低,提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率 8 位影响数据。该产 品 VGA 图像最高达到 30…

基于SSM的汽车配件销售业绩管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

SpringBoot整合SpringCloudStream3.1+版本Kafka

SpringBoot整合SpringCloudStream3.1版本Kafka 下一节直通车 SpringBoot整合SpringCloudStream3.1版本的Kafka死信队列 为什么用SpringCloudStream3.1 Springcloud架构提供,基于spring生态能够快速切换市面上常见的MQ产品3.1后使用配置文件的形式定义channel&am…

Python接口自动化测试之详解post请求

前言 在HTTP协议中,与get请求把请求参数直接放在url中不同,post请求的请求数据需通过消息主体(request body)中传递。 且协议中并没有规定post请求的请求数据必须使用什么样的编码方式,所以其请求数据可以有不同的编码方式,服务…

C#线性插值,三角插值

什么是插值? 是什么?很简单! 已知两点,推断中间的每一点的过程。 有什么用? 很简单!位置从30到40耗时3秒求每一时刻的位置! 1.线性插值 设v是结果,start是开始,end是结…

【贪心算法part02】| 122.买卖股票的最佳时机||、55.跳跃游戏、45.跳跃游戏||

目录 🎈LeetCode122.买卖股票的最佳时机|| 🎈LeetCode55.跳跃游戏 🎈LeetCode45.跳跃游戏|| 🎈LeetCode122.买卖股票的最佳时机|| 链接:122.买卖股票的最佳时机|| 给你一个整数数组 prices ,其中 price…

Day 61-62 决策树(ID3)

代码: package dl;import java.io.FileReader; import java.util.Arrays; import weka.core.*;/*** The ID3 decision tree inductive algorithm.*/ public class ID3 {/*** The data.*/Instances dataset;/*** Is this dataset pure (only one label)?*/boolean …

Revit中如何创建水的效果及基坑?

一、Revit中如何创建水的效果? 我们在创建建筑的时候会遇上小池塘啊小池子之类的装饰景观,Revit又不像专业的3D软件那样可以有非常真实的水的效果,那么我们该如何简单创建水呢?下面来看步骤: 1、 在水池位置创建一块楼板,并将该…

C语言——文件操作(超全超详细)

C语言——文件操作 1. 什么是文件 磁盘上的文件是文件 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的) 1.1 程序文件 包括源程序文件(后缀为.c),目…

椒图--分析中心

护网的时候我们要把右边的开关开启。开启就会对系统全量的记录,包含有网络行为日志,就会检测我们服务器里面的链接,端口箭头,内内网暴露的链接;进程操作日志,就可以看我们系统创建了哪些进程,就…

【操作系统】Liunx项目自动化构建工具-make/Makefile

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一、背景 二、Makefile 实现 Makefile依赖 依赖关系 makefile的工作原理 项目清理 补充: .PHONY是什么? Linux如何进行多行注释: 说明&#xf…

app 元素定位失败了,怎么办?一看我的做法,惊呆了!

粉丝们在日常的android app自动化测试工作当中,元素定位时会遇到以下类似的报错: 然后来问博主,这是啥情况? 我一般都会送上亲切的关怀: 1)adb能识别到设备吗? 2)设备有被其它的程…

VUE+element Input框 实现输入内容可自适应文本高度,换行(空格换行,enter发送)阻止文本域的回车事件

需求 输入框实现输入内容自适应高度 以及可以换行 使用官方文档提供的属性 代码 <el-input clearable autosize type"textarea" :placeholder"$t(navbar.pleaseInput)"v-model"inputText" change"inputChange" keyup.enter.na…

数据分析之Matplotlib

文章目录 1. 认识数据可视化和Matplotlib安装2. 类型目录3. 图标名称title4. 处理图形中的中文问题5. 设置坐标轴名称&#xff0c;字体大小&#xff0c;线条粗细6. 绘制多个线条和zorder叠加顺序7. 设置x轴刻度xticks和y轴刻度yticks8. 显示图表show9. 设置图例legend10. 显示线…

Ceph简介及部署

Ceph Ceph一、存储基础1、单机存储设备2、Ceph 简介3、Ceph 优势5、Ceph 架构6、Ceph 核心组件7、OSD 存储后端8、Ceph 数据的存储过程9、Ceph 版本发行生命周期10、Ceph 集群部署 二、部署ceph-deploy Ceph 集群前环境配置1、关闭 selinux 与防火墙2、根据规划设置主机名3、配…

全网火爆,pytest自动化测试框架从0-1精通实战,你的进阶之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、运行方式 命令…

(68Ga)Nota-prgd2,1345968-02-6,通过镓标记的NOTA衍生物

文章编辑来自于&#xff1a;陕西新研博美生物科技有限公司MISS.wu​ (68Ga)Nota-prgd2| CAS&#xff1a;1345968-02-6| 纯度&#xff1a;95% PART1-----(68Ga)Nota-prgd2结构式 PART2-----试剂参数信息 CAS&#xff1a;1345968-02-6 外观&#xff08;Appearance&#xff09;…

网络安全(黑客)学习笔记

0基础学网安或者提升巩固网安技术的小伙伴有福了&#xff01; 本篇整合了网络安全全知识点&#xff0c;零基础也适用&#xff01; 本篇涵盖内容及其全面&#xff0c;强烈推荐收藏&#xff01; 一、学习网络安全会遇到什么问题呢&#xff1f; 1、学习基础内容多时间长 2、难…