绞杀者分解



问题陈述

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

解决方案

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

  • 现有行为 - 这些服务体现了以前驻留在单体中的行为。

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

因此,随着开发时间的推移,微服务会增加,而单体则会随着功能从单体迁移到绞杀者应用程序而缩小。

示例

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

Decompose By Strangler Design Pattern

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

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

  • 共存 - 单体和微服务都将工作。用户可以从这两个组件访问功能。

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

优势

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

  • 独立团队 - 团队可以并行地处理单体和微服务,从而形成强大的交付机制。

广告