lagom微服务+ Maven模块版本控制

时间:2018-07-13 06:22:09

标签: maven git-submodules lagom

在使用Maven安装脚手架时,每个模块都有一个pom文件。每个模块都有一个引用父项目版本的版本。
链接这些版本是否总体上是好的做法?基本上,这意味着对于其中一个模块的每次更改,都需要在父级中进行版本更新。

我对此有两个相关问题:

  1. 使用git子模块管理vc是一种好习惯吗?
    我希望这些模块可以独立运行,但再次看来,总的提升是始终将所有微服务作为一个整体运行(并部署?)(我可能错了)。
  2. 该如何管理URL API版本控制?假设我要更新我的post-api版本,但不更新我的user-api版本。在当前情况下,两个API的当前版本都相同(父版本之一)。
    我希望pom文件的项目(发布)版本与API版本相对应,并希望在URL api/1.0.0/...的路径中声明它。正确的方法是这样做,还是您一般不建议使用Lagom微服务这种做法?

再次感谢您的帮助,对于许多问题深表​​歉意。
我希望这也会对将来的其他用户有所帮助。

1 个答案:

答案 0 :(得分:0)

从我可以收集的信息和我可以想到的逻辑上:

1)如果我理解正确,我们的VCS会跟踪组成我们的应用程序的整个相关服务树。将版本升级到一项服务的版本会导致整个系统的升级(父版本)。因此,可以在发生错误的情况下将整个应用程序回滚到最新的稳定版本。
从操作的角度来看,我们可以批量或单独构建/部署/运行服务。因此,仍然有可能为某些服务选择特定的过去版本并根据需要进行部署。
在不同的环境中进行回归测试(或在Conductor的情况下使用沙箱)非常重要,因为当我们无法正确管理依赖图时(例如忘记部署对另一个已修改服务具有依赖关系的服务),可能会发生错误。我认为我们并不总是希望为每次更改都重新部署所有服务。
在开发方面,如果我们将跨服务更改提交到每个功能的单独分支上,并在合并到DEV分支或发布之前将分支部署到开发环境进行测试,则无需使用git子模块。在团队合作中,我看不到这里会立即出现问题。

2)https://groups.google.com/forum/#!msg/lagom-framework/_2zFx3OBH7c/uZnFSXWoAwAJ

鼓励向前兼容的api设计。如果发生重大更改,请创建服务的新版本和“桥接”服务。似乎我们在这里不应用api版本控制(无论是内部还是外部公开)。
这给我带来了一些担忧,也许我没有做好所有事情……由于我们控制了客户,因此它可以正常工作。桥接服务让我有些担心,因为我不知道这条路的后果。当我们控制从客户端到服务器的系统时,我假设在发布了几个稳定的版本之后,大多数可能的不兼容问题已得到解决,因此我认为这不会有太大问题。

如果您不同意,欢迎提供反馈或替代答案。