Azure设计模式之蜕变模式

蜕变模式

将功能逐渐取代为新的应用程序和服务,逐步对旧系统完成迁移。随着旧系统的功能被替换,新系统最终将取代旧系统的所有功能,最终将旧系统停用。

问题背景
随着系统老化,系统所使用的开发工具、托管环境和系统体系结构变得过时。添加新功能后,这些应用程序的复杂性可能会大幅增加,这使得维护系统或添加新功能变得十分困难。

完全替换一个复杂系统是一项艰巨的任务。通常情况下,需要逐步迁移到新系统,同时要保留旧系统处理尚未迁移的功能。但是运行两个不同版本的应用程序意味着客户端必须知道特定功能的具体位置。每当进行功能或服务迁移时,都需要更新客户端某功能指向新位置。


解决方案
用新的应用程序和服务逐步替换为特定的功能。创建一个外观层来将访问旧系统的请求进行解析。外层可将这些请求路由到旧版应用程序或新服务。现有功能可逐步迁移到新系统,使用者可继续使用相同的接口,他们并不知道功能迁移正在发生。
Azure设计模式之蜕变模式


该模式有助于将迁移的风险降至最低,并可在一段时间内分散开发工作。由于外观层能够将用户安全路由到正确的应用程序,可按自己的节奏将功能添加到新系统,同时确保旧版应用程序继续运行。随着时间推移,功能迁移到了新系统,旧版系统最终被停用。 


问题和注意事项
考虑如何处理可能由新旧系统共同使用的服务和数据存储。确保新旧系统可并行访问这些资源。
构建新的应用程序和服务,使它们能在将来的迁移中被拦截和替换。
有时候迁移完成后,外观层消失,或进化为旧版客户端的适配器。
确保外观层与迁移保持同步。
确保外观层不会成为单点故障或性能瓶颈。


何时使用此模式
将后端应用程序逐渐迁移到新的体系结构中时,可使用此模式。


此模式可能不适用于以下情况:
无法拦截前往后端系统的请求。
整体替换复杂性很低的小型系统。


相关阅读
隔离层模式(https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer)
网关路由模式(https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-routing)