【发布时间】:2020-04-24 16:44:15
【问题描述】:
架构概述 考虑以下简化的微服务架构:
- 服务 A - 门户
- 服务 B - API
服务 A 依赖于服务 B。
问题陈述 如果我想在服务 A 中构建一个新的向后兼容功能,它需要对服务 B 进行更改,那么根据语义版本控制的定义,我必须为这两个服务创建一个新的次要版本。但是,服务 A 需要部署服务 B 的新次要版本。我怎样才能有效地管理这种依赖关系?我是否需要创建服务 A 的新主要版本来指示更改的依赖项?我想避免在尚未部署服务 B 的情况下部署服务 A...
基本上是这样;我应该如何对组件本身的非破坏性(即次要)更改进行版本更改,但如果版本不匹配会破坏整个应用程序?
【问题讨论】:
-
由于这是一个非破坏性更改,因此您可以通过确保在将更改发送到服务 A 之前将更改部署到服务 B 来手动处理解决方案,这些更改需要 B 中的新端点/功能。但是,听起来您正在寻找一种更像包管理器那样自动解决这些依赖关系的方法 - 对吗?
-
@DavidT。这确实是正确的。我们有几个生产环境,每个环境都有自己独立的管道。因此,在将服务 A 运送到所有环境之前,无法手动部署服务 B。它与 helm 图表的关系比与包管理器的关系更密切。
-
我就是这么想的。在过去的一年里,我一直在开发一个专门解决这个问题的部署工具(微服务的部署时依赖解析),它将于下周发布。该平台将根据每个部署作业的需要在相关服务之间提供和代理连接,该服务清单看起来很像任何其他包管理器的清单。如果您有兴趣尝试一下,我可以在接下来的几天内回复链接。
-
@DavidT。是的,请,我很感兴趣!
-
抱歉耽搁了!本周刚刚发布了我们的测试版,我很乐意让您试用一下,看看它是否符合您的要求:Architect.io
标签: microservices