遗留系统现代化实战
姚琪琳
Thoughtworks 资深咨询师
5615 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
用户故事 (1讲)
遗留系统现代化实战
15
15
1.0x
00:00/00:00
登录|注册

11 | 架构现代化 :在气泡上下文中打造你的新城区

你好,我是姚琪琳。
前面三节课,我们学习了代码现代化的多种模式。从这节课开始,我们继续学习如何实现架构现代化。
需要说明的是,这四个现代化并不是层层递进的关系,而是既可以同时进行,也可以颠倒顺序。
比如,你既可以先重构代码,再拆分架构,也可以先拆分架构,再重构代码。同时,也可以重组团队结构,专门拉出一个平台团队去搭建 DevOps 平台。
我在第二节课和你探讨架构现代化时,曾经用“建设新城区”和“改造老城区”做了一个类比,今天我们就来详细讲讲在“建设新城区”时,都有哪些模式。

绞杀植物模式

我选择把绞杀植物模式作为架构现代化的第一个模式,因为它的思想影响了很多其他模式,包括气泡上下文、扩张 - 收缩、修缮者等等。
绞杀植物模式(Strangler Fig),这是 Martin Fowler 在 2004 年左右提出的,它是一种用新系统替换旧系统的模式。我们在第七节课学习的遗留系统现代化的五种策略,其中就有 Rebuild/Replace 策略,绞杀植物模式就是针对这种策略的。
很多团队在选择了 Rebuild/Replace 策略后,往往希望一股脑地构建出新的系统或服务,然后直接替换,而忽略了增量演进这个原则。这样做的后果就是,新构建的系统或服务,与原系统有很大差异,甚至根本不可用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

架构现代化的多种模式,包括绞杀植物模式、气泡上下文和自治气泡,为团队提供了多种策略和方法,帮助实现架构现代化,提高系统的稳定性和可维护性。文章介绍了变动数据捕获模式,事件拦截模式和遗留系统封装API模式,以及它们在架构现代化中的应用。通过这些模式,可以实现数据同步和访问,逐步演进到微服务架构。气泡上下文和自治气泡模式为新需求落地成微服务提供了演进路线,帮助架构师思考如何划清界限、保持隔离,以及如何处理数据问题。这些模式的应用不仅有助于理解概念,还能激发概念性思维,帮助发现相似点。最后,文章提出了思考题,鼓励读者分享在项目中使用气泡上下文开发新需求的经验,并期待读者的分享和交流。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《遗留系统现代化实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • Michael
    老师能再讲一下什么是限界上下文么?我看一些书里面写的是限界上下文其实可以拆分成微服务,但是看八叉老师的课,说的是把限界上下文想成一个筐,解决不了的都往里扔,有点不太理解,老师能不能再讲讲

    作者回复: 我不太清楚八叉这个说法的上下文,只谈谈自己的理解吧。 我们在建模的时候会发现,随着业务越来越复杂,一个模型所承载的东西就会变得越来越多。比如一个Product模型,可能包含库存业务所需要的仓库信息、货架信息等,也包含销售业务所需要的价格、优惠信息等。这样必然会导致模型越来越混乱。如果把模型拆开,但仍然在一个上下文中使用,也会带来混乱。因此,Eric用限界上下文来对模型的边界进行设置,在一个限界上下文内保持模型的一致性,不受外接干扰。 至于一个限界上下文是否对应一个微服务,我觉得这里面其实没有必然的关系。它们解决的仍然是不同的问题。限界上下文解决的是模型的完整性的问题,而微服务解决的是系统弹性问题。只不过在有些情况下,一个微服务的边界恰好与一个限界上下文的边界重合了而已。

    2022-05-30
    2
  • aoe
    1、遗留系统中在对接第三方接口(支付、发短信、图片存储等)的时候会有一个防腐层,将不同供应商的接口统一转换成我们系统定义的格式 2、新建了一个项目,专门对遗留系统的核心业务添加功能测试,有一个气泡上下文和遗留系统的数据库、Redis交互,隔离了望而生畏的逻辑。新的查询逻辑尝试使用 DDD,感觉效果还不错。虽然 DDD 也是一知半解,但用起来确实比单纯的 CRUD 更爽,就是开发起来难度比 CRUD 大,最大的难点是发挥想象力创建领域模型

    作者回复: 感谢分享,你们做得很不错~

    2022-05-05
    2
  • 刘大明
    在上家公司,我们经常会对接很多第三方的机票供应商。 我们对接的时候,是将每个不同的机票供应商的数据,统一转换成系统中我们自定义的格式和字段,包括枚举类也是,都必须匹配我们自己的格式。 当时我并没有理解为是防腐层,而是理解为适配器模式或者说是外观模式,当时总觉得这样理解有点问题,现在知道了属于一种防腐层。 但是防腐层增加了额外的代码以及维护成本,还要考虑扩展问题,当时采用策略模式,去执行不同的三方接口。

    作者回复: 适配器也是一种防腐层,你可以理解为出国旅游必须带一个电源转换头,那个就是适配器。防腐层是从另一个角度说的,是不希望其他上下文的模型污染(侵入)当前上下文。我会在第14节课提到适配器和防腐层。 与防腐层带来的这点维护成本相比,直接使用外部接口带来的问题会更大。

    2022-05-06
    1
  • 公号-技术夜未眠
    很接地气
    2022-05-08
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部