【发布时间】:2017-02-17 08:29:18
【问题描述】:
寻求有关如何对使用 Spring Boot 构建的微服务进行发布管理的建议。
我工作过的大多数项目都使用发布插件(maven)来创建标签以及发布 maven 项目(jar、war、rpm)。通常,这依赖于发布过程中所有子项目(jar、wars)的 maven 父/子关系(单体源代码,都位于单个 git 存储库中)。我想知道人们如何维护不同的启动项目(微服务)并发布。
在我看来,以下是可能的策略:
- 每个 git 存储库一个 Spring Boot 项目(微服务 maven 项目),以便独立管理发布。
- 一个多模块 maven 项目,每个模块都是一个微服务。所有子模块(微服务)必须一起发布。父 pom 必须使用 Boot 的父 pom。
- 依靠 maven-release-plugin 功能仅基于发布发布某些子模块。这将使每个 maven 子模块(可能)具有不同的版本。
您的团队发现什么有用?我喜欢 Boot 的编程模型,但我希望我可以使用与 Boot 模型保持简单一致的发布策略。
【问题讨论】:
-
对我来说只有 1 是一个有效点。如果您像第 2 点那样工作,那么如果您必须或想要将它们全部一起发布,那么做微服务是没有意义的。
-
我同意,但是我怀疑这会随着微服务的添加而增长,从而使微服务发布管理变得复杂。大量的集成测试和回归测试。
-
当然可以。这是微服务架构的一个缺点,你应该确保你可以处理它(即你应该有一个高度自动化的基础设施)。
-
感谢@dunni 的评论
标签: spring-boot microservices spring-boot-maven-plugin