超越单体,进击绞杀者模式(一)
2023-12-21 21:44:49
长期以来,单体应用一直饱受诟病,而从业者对于单体应用的改造方式常常以推翻重来为首要选项,但这种模式存在风险高、耗时长、成本高等挑战。若你想以更敏捷的方式进行改造,那么绞杀者模式不失为一种有效方法,它通过逐步重构的方式,在新旧系统之间架起平滑切换的桥梁,既保持了原有代码的稳定性,又能让新系统分步落地,重塑应用风采。
绞杀者模式这个名称源于自然界的绞杀现象。在热带雨林中,一些植物会通过逐步缠绕的方式,最终取代另一棵树木。就像这种自然现象一样,绞杀者模式通过逐步重构单体应用,使其最终过渡到新系统。而具体来说,绞杀者模式具有以下几个特点:
-
渐进式: 绞杀者模式并非一次性将单体应用推倒重来,而是采用渐进式重构的方法,逐步将单体应用迁移到新系统中。这种方式不仅降低了重构风险,也让过渡变得更加平滑。
-
模块化: 绞杀者模式将单体应用分解为多个模块,然后逐步重构这些模块。这种方式可以降低重构的复杂性,让重构工作更容易管理。
-
隔离性: 绞杀者模式在新旧系统之间建立了隔离层,使得新旧系统可以并存,互不干扰。这种方式可以确保新系统在开发和测试过程中不会对旧系统产生影响。
绞杀者模式相比于推翻重构模式具有以下优势:
-
降低风险: 绞杀者模式逐步重构,不会对系统造成大的影响,降低了重构风险。
-
节约成本: 绞杀者模式可以利用旧系统的代码,减少了新系统开发的工作量,节省了成本。
-
敏捷开发: 绞杀者模式采用敏捷开发方法,可以快速迭代,快速交付新功能。
现在,我们来谈谈如何实施绞杀者模式。具体步骤如下:
-
识别重构目标: 首先,需要识别出单体应用中需要重构的部分。这些部分可能是存在缺陷、性能低下或难以维护的模块。
-
建立隔离层: 在识别出需要重构的部分后,需要在新旧系统之间建立一个隔离层。这个隔离层可以是一个API网关、一个消息队列或一个服务总线。
-
逐步重构: 接下来,可以开始逐步重构需要重构的部分。重构时,可以采用敏捷开发方法,快速迭代,快速交付新功能。
-
最终迁移: 当所有需要重构的部分都重构完成后,就可以将新系统完全迁移到生产环境中。
绞杀者模式是一种有效且低风险的重构单体应用的方法。它可以帮助你逐步重构单体应用,而不会对系统造成大的影响。如果你正在考虑重构单体应用,那么绞杀者模式是一个值得考虑的选项。
绞杀者模式案例分享
绞杀者模式在实际应用中取得了不错的效果。例如,亚马逊就使用绞杀者模式成功地将单体应用迁移到了云平台。亚马逊将单体应用分解为多个模块,然后逐步将这些模块迁移到云平台上。通过这种方式,亚马逊不仅降低了重构风险,也节约了成本。
绞杀者模式的局限性
绞杀者模式虽然是一种有效且低风险的重构单体应用的方法,但它也存在一定的局限性。这些局限性包括:
-
复杂性: 绞杀者模式的实施过程可能非常复杂,尤其是在需要重构的模块数量较多时。
-
时间: 绞杀者模式的实施过程可能需要较长时间,尤其是当需要重构的模块数量较多时。
-
成本: 绞杀者模式的实施可能需要额外的成本,尤其是当需要建立新的基础设施时。
绞杀者模式的适用场景
绞杀者模式适用于以下场景:
- 单体应用存在缺陷、性能低下或难以维护。
- 单体应用需要迁移到新的平台或技术栈。
- 单体应用需要扩展或添加新功能。
绞杀者模式对于大规模的单体应用来说是一个很好的选择,因为它可以帮助你逐步重构单体应用,而不会对系统造成大的影响。