被绞杀者分解


问题陈述

微服务架构将应用程序构建为一组松散耦合的微服务,每个服务应以敏捷的方式独立开发,以实现持续交付/部署。当使用微服务架构构建大型复杂应用程序时,主要问题是如何设计松耦合的微服务或将大型应用程序分解为小的松耦合服务?

解决方案

我们可以使用扼杀者模式定义微服务。扼杀者应用程序有两种类型的服务 -

  • 现有Behave- 这些服务展示了以前驻留在 Monolith 中的Behave。

  • 新功能- 这些服务实现了新的Behave。

因此,随着开发时间的推移,随着功能从单体应用程序转移到 Strangler 应用程序,微服务不断增加,而单体应用程序不断缩小。

例子

考虑一个在线书店的例子。最初我们只开发了图书目录管理服务,其他服务在遗留单体应用程序中得到支持。在开发过程中,越来越多的服务被开发出来,功能也逐渐远离单体。

通过 Strangler 设计模式进行分解

因此,当开发新服务时,单体将被扼杀,旧组件将被停用,新的微服务将被部署并支持新功能。扼杀者模式可以通过三个步骤来实现 -

  • 转型- 独立开发微服务以实现整体的特定功能。

  • 共存- 整体架构和微服务都可以工作。用户可以访问这两个组件的功能。

  • 消除- 一旦新开发的功能准备好投入生产,就从整体中删除该功能。

优点

  • 测试驱动开发- 由于服务是分块开发的,我们可以使用 TDD 进行业务逻辑并确保代码质量。

  • 独立团队- 团队可以在整体服务和微服务上以并行方式工作,从而形成强大的交付机制。