0

0

架构模式:Strangler模式

DDD

DDD

发布时间:2023-11-16 10:48:03

|

1209人浏览过

|

来源于php中文网

原创

strangler模式是由martin fowler首次描述的一种软件架构模式,它描述了一种逐步而非一次性进行系统迁移的优雅方法。它以strangler fig(榕树)命名,这是一种慢慢爬上树并最终取而代之的藤蔓。类似地,在软件环境中,strangler模式涉及在旧系统的边界周围构建一个新系统,允许您逐步用新系统的组件替换旧系统的部分。

许多软件工程师在其职业生涯中都会面临系统迁移的问题;技术发展速度很快,人们需要时间来适应和维护他们的系统,有时甚至在完成之前系统就变得陈旧了。Strangler模式是一种允许迁移而无需进行一次性大规模改变的方法,这对团队来说可能非常有压力,并且往往注定失败。在大型系统的背景下,这种模式非常有效,因为它允许人们在迁移能力上获得信心,提供了许多更难以在一次性迁移中实现的小的成功。

一般的方法是识别可以替换的旧系统的区域,然后逐渐将新的请求或功能路由到新系统。同时,旧系统仍然处理旧功能。随着新系统变得更加稳健和功能完善,越来越多的功能被转移到新系统上,直到旧系统可以安全地被淘汰。

image.png

好处

  • 渐进式迁移:与高风险的全面发布相比,您可以逐步迁移到新系统,确保新组件在继续之前正常工作。

  • 降低风险:通过将迁移分解为较小的、可管理的块,降低与重大变更相关的风险。

  • 保持业务连续性:在迁移过程中,业务可以继续使用现有系统,确保没有功能损失或停机时间。

  • 促进现代化:这种模式在从单块架构过渡到微服务时特别有用,因为您可以逐步用微服务替换单块组件。

  • 灵活性:由于迁移是逐步进行的,团队可以根据早期迁移阶段的反馈进行调整和改进。它也适用于现代软件开发方法,如敏捷迭代方法。

  • 并行开发:在开发新系统的同时,如果需要,仍然可以对旧系统进行更改。

  • 利益相关者的信任:对于IT团队来说,迁移通常是一件大事,特别是因为它们代表了一项投入巨大、难以衡量回报的投资。如果被接受,小的功能失调迹象可能会让每个人都感到担忧,因为从他们的角度来看,这是一种高风险情况。在一种奇特的模式中,通过较小的块,压力可能更加局部化到特定的块或一组块。这对于管理高层压力非常有帮助。

  • 专注于业务价值:通过仅迁移小部分,您可以专注于最重要的部分或从迁移中获益最多的部分。通过迁移单块系统的小部分,您可以为公司开启全新的业务、简化一些关键点等。

权衡

LangChain
LangChain

一个开源框架,用于构建基于大型语言模型(LLM)的应用程序。

下载
  • 复杂性:同时管理两个系统可能很复杂。确保兼容性、路由请求和维护两者之间的状态可能具有挑战性。

  • 注:考虑一个旧系统与可执行文件和多个本地数据库一起存在的现代集中式Web应用程序的情况。协调和版本控制数据库将非常具有挑战性。

  • 资源密集型:旧系统和新系统可能需要同时运行,需要额外的基础设施和维护资源。

  • 可能存在飘移:随着开发的进行,新系统可能在功能或功能方面与旧系统存在飘移的风险,特别是如果对传统系统继续进行更改。

  • 持续时间:过渡可能需要很长时间,特别是对于大型、深度集成的系统。这种长时间的过渡期可能导致迁移的成本和资源分配增加。

  • 团队协作:为确保成功实施奇特模式,团队需要在目标、对传统系统的理解以及迁移策略方面达成一致。

结论

在一个变化是唯一恒定的世界中,Strangler模式成为管理软件系统演进的一种引人注目的方法。通过允许逐步替换遗留系统的组件,该模式为组织在技术进步的复杂性中导航提供了战略路线图。

模式的渐进性与当代敏捷实践相吻合,使团队能够在迁移过程中适应、检查和调整。这不仅可以保持业务连续性,还可以通过展示持续进展和减少与大规模系统改造相关的焦虑来培养利益相关者的信任。

然而,Strangler模式并非没有挑战。在两个系统之间运行和逐步过渡的复杂性不容小觑。它需要纪律性的协调方法、全面的测试以及保持必要功能平衡的敏锐眼光。

成功实施Strangler模式的关键在于细致的规划、清的沟通以及优先考虑业务价值的部署阶段方法。这是一种平衡的练习——在旧和新、速度和稳定性以及投资和回报之间。

作为软件工程师,Strangler模式为我们提供了一个务实的框架,确保我们的系统能够在不中断其提供的重要服务的情况下演变。在软件的生命周期中,Strangler模式不仅仅是一种系统迁移的方法,它还是技术本身进化性质的体现。它的目的是确保随着我们的软件成熟,它能够继续支持不断变化的业务需求,在变革面前保持强大、相关和有弹性。

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

346

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2074

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

323

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

396

2023.10.16

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

219

2023.10.19

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

React 教程
React 教程

共58课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号