Category: MS Design Princinple

0

[转]从既有系统到微服务架构

微服务近年来可谓炙手可热,合理的使用微服务架构可以解耦系统、提供更好的软件伸缩性以及提高组织的敏捷性。然而现实中较少有项目一开始就会选择使用微服务架构,绝大多数新项目在最初都会务实地从更容易掌控的单体架构起步构建,如果最终发现单体架构复杂到影响了团队的开发效率及软件的伸缩性等方面时,才会开始考虑逐步将系统往微服务架构做演进。 现实中任何软件架构都是诸多trade-off的结果,想要获得微服务架构所带来的好处也就意味着有能力承担它所带来的的副作用。Martin Fowler就曾在MicroservicePrerequisites一文中指出实施微服务所需要的先决条件,他用“个子是否够高”形象地比喻了微服务所需的技能门槛。 而对于既有系统,还需要一种务实的演进方法和实施策略,使得能够伴随着恰当的代码重构,逐步积累能力和完善基础设施,最终平稳的将其演进到微服务架构。 本文总结了一些从既有系统到微服务演进之路上会遇到的问题和解决策略。文中使用“既有系统”而非“遗留系统”,是因为遗留系统给人一种即将退出生命周期、行将就木的感觉,而我们则希望把精力投入到还有长远商业价值的系统上,通过合理的微服务演进让其具有持续的生命力。