绞杀者模式
通过使用新的应用程序和服务逐渐替换遗留系统的特定功能部件来逐步迁移。由于替换遗留系统的功能,新系统最终将替代旧系统的所有功能,绞杀并允许停用旧系统。
背景和问题
随着系统老化,开发工具,托管技术甚至系统架构也越来越过时。伴随新特性和功能的增加,这些应用程序的复杂性可能会大大增加,从而使其难以维护或添加新功能。 完全替代复杂的系统可能是一项巨大的任务。通常需要逐渐迁移到新系统,同时保持旧系统处理尚未迁移的功能。但是,运行两个单独版本的应用程序意味着客户端必须知道特定功能所在的位置。每次迁移功能或服务时,需要更新客户端以指向新位置。
解决方案
逐渐用新的应用程序和服务来替代特定功能。创建一个门面,拦截后端遗留系统的请求。门面将这些请求路由到旧应用程序或新服务。现有功能可以逐渐迁移到新系统,消费者可以继续使用相同的接口,不会感知到迁移的发生。
这种模式有助于最大限度地减少迁移的风险,并随着时间推移扩大开发工作。通过门面安全地将用户路由到正确的应用程序,可以以任何喜欢的速度向新系统添加功能,同时确保旧应用程序继续运行。随着时间的推移,功能迁移到新系统,遗留系统最终被“绞杀”,不再需要。 一旦这个过程完成,遗留系统就可以安全地退休。
问题和注意事项
- 考虑如何处理新系统和旧系统可能使用的服务和数据存储。确保两者都可以并行访问这些资源。
- 构建新的应用程序和服务,以便在未来的绞杀者迁移中轻松拦截和替换它们。
- 在某些时候,迁移完成时,绞杀者门面将会消失,或者演变成遗留客户端的适配器。
- 确保门面跟上迁移。
- 确保门面不会成为单点故障或性能瓶颈。
何时使用该模式
在将后端应用程序渐进迁移到新架构时,可以使用此模式。 这种模式可能不适于以下场景:
- 当不能拦截后台系统的请求时。
- 完整更换的复杂性较低的小系统。