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

2022-05-04 姚琪琳
《遗留系统现代化实战》
课程介绍


讲述:姚琪琳

时长:大小16.13M

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

绞杀植物模式

我选择把绞杀植物模式作为架构现代化的第一个模式,因为它的思想影响了很多其他模式,包括气泡上下文、扩张 - 收缩、修缮者等等。
绞杀植物模式(Strangler Fig),这是 Martin Fowler 在 2004 年左右提出的,它是一种用...

展开全文
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

精选留言

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

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

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

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

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

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

    
    