扼杀者分解
问题说明
微服务架构将应用程序构建为一组松散耦合的微服务,每个服务应以敏捷的方式独立开发,以实现持续交付/部署。 当使用微服务架构构建大型复杂应用时,主要问题是如何设计松耦合的微服务,或者将大型应用分解为小的松耦合服务?
解决方案
我们可以使用扼杀者模式定义微服务。 扼杀者应用程序有两种类型的服务 −
现有行为 − 这些服务表现出以前驻留在 Monolith 中的行为。
新功能 − 这些服务实现了新的行为。
因此,随着开发时间的推移,微服务不断增加,单体应用不断缩小,功能从单体应用转移到 Strangler 应用程序。
示例
考虑一个在线书店的示例。 最初我们只开发了图书目录管理服务,其他服务在遗留单体应用程序中得到支持。 在开发过程中,越来越多的服务被开发出来,功能也不再是单一的。
![按 Strangler 设计模式分解](/microservices_design_patterns/images/decompose_by_strangler.jpg)
因此,当开发新服务时,单体将被扼杀,旧组件将被停用,新的微服务将被部署并支持新功能。 扼杀者模式可以通过三个步骤来实现 −
变换 − 独立开发微服务以实现整体的特定功能。
共存 − 单体应用和微服务都可以工作。 用户可以访问这两个组件的功能。
消除 − 一旦新开发的功能准备好投入生产,请从整体中删除该功能。
优点
测试驱动开发 − 由于服务是分块开发的,我们可以使用TDD来进行业务逻辑并保证代码质量。
独立团队 − 团队可以在整体服务和微服务上并行工作,从而形成强大的交付机制。