你是否正身处在大型单体应用程序的开发中,每天启动、部署应用都经历着万般的痛苦;你是否身处在由多个臃肿的大型传统系统组成的分布式开发中,经历着万般的消息不一致、系统的不稳定、频繁的服务不可用等高频高等级系统问题的折磨?如果是这样,那么你的救星来了,如果从当前窘境中脱离,实现我们的微服务,从而完成我们的升级。
策略其实很多,目前常用的策略是通过开发的绞杀者应用程序(strangler application),逐步将单体架构转换为微服务架构。
绞杀者应用程序的想法来自绞杀式藤蔓,这些藤蔓在雨林中生长,它们包围绕树木生成,甚至有时会杀死树木。绞杀者应用程序是一个由微服务组成的新应用程序,通过将新功能作为服务,并逐步从单体应用程序中提取服务来实现。随着时间的推移,当绞杀者应用程序实现越来越多的功能时,它会缩小并最终消灭单体应用程序。开发绞杀者应用程序的一个重要好处是,与宇宙大爆炸式的彻底重写不同,它可以立刻落地,更快为企业提供价值。
实现对当前服务的升级,对单体的“绞杀”,主要有如下步骤:
- 通体设计微服务架构,整体设想后续微服务发展方案,将新功能、新系统以服务的形式提供,从旧的单体及庞大的臃肿系统中解耦,典型的是中台战略。
2)将前后端分离,后端以纯服务接口的形式提供。 - 将已有单体架构中的功能通过产品需求开发周期、技术需求开发周期及其他的开发周期为契机,将其以服务的形式分解,作为微服务的一部分。
1.新功能、新系统以服务架构设计及调整实现
“挖坑法则”(The Law of Holes)指出:如果你发现自己已经陷入了困境,就不要再给自己继续挖坑了。当你的单体应用变得无法管理时,这是一个很好的可供参考的建议。换句话说,如果你有一个庞大的、复杂的单体应用程序,请不要通过向单体添加代码来实现新功能。这将使你的单体变得更庞大,更难以管理。相反,你应该将新功能实现为服务。
这是开始将单体应用程序迁移到微服务架构的好方法。它降低了单体的生长速度,加速了新功能的开发(因为是在全新的代码库中进行开发),还能快速展示采用微服务架构的价值。
把新的服务与单体集成
如图显示了将新功能实现为服务后的应用程序架构。除了新服务和单体外,该架构还包括另外两个将服务集成到应用程序中的元素:
■ API Gateway:将对新功能的请求路由到新服务,并将遗留请求路由到单体。
■ 集成胶水代码:将服务与单体结合。它使服务能够访问单体所拥有的数据,并能够调用单体实现的功能。