Continuous integration 定期发布的微服务体系结构版本控制
我正试图了解在基于微服务的体系结构中,通过定期发布来管理版本控制的最佳实践 目前,我们的系统被分解为多个不同的存储库:Continuous integration 定期发布的微服务体系结构版本控制,continuous-integration,microservices,release,versioning,continuous-delivery,Continuous Integration,Microservices,Release,Versioning,Continuous Delivery,我正试图了解在基于微服务的体系结构中,通过定期发布来管理版本控制的最佳实践 目前,我们的系统被分解为多个不同的存储库: 前端 后端 数据库 API网关 码头工人 这些组件中的每一个都必须独立开发、制造、测试、集装箱化和部署。但是发布周期是同步的和周期性的。Docker compose env项目包含用于启动所有兼容服务版本以进行开发和集成测试的环境定义 当前版本控制策略如下所示: 每个提交到master分支都使用语义版本进行标记,并推送到docker注册表(语义标记用于跟踪开发周期中的依赖关
- 前端
- 后端
- 数据库
- API网关
- 码头工人
master
分支都使用语义版本进行标记,并推送到docker注册表(语义标记用于跟踪开发周期中的依赖关系)release
分支都用一个release标记进行标记,并推送到docker注册表(release标记用于将项目版本同步到一起,以便每季度发布一次)master
是主干,定期发布构建由PR从master
到release
发起
我怀疑这是否是在定期发布的基础上使用基于微服务的体系结构管理版本的最佳方法。任何反馈或提示都将不胜感激
这些组件中的每一个都必须独立开发、制造、测试、集装箱化和部署。但是发布周期是同步的和周期性的
这里有一个矛盾。微服务主要解决组织问题-主要的一点是团队应该能够尽可能独立地工作
团队之间的同步是使他们变慢的原因。这可能以不同的方式发生,例如等待在共享测试环境中部署另一个版本,或者使用相同的共享数据库模式,或者同时发布
我怀疑这是否是在定期发布的基础上使用基于微服务的体系结构管理版本的最佳方法
尽量避免“同步发布”,而是确保不破坏服务之间的任何契约(例如,不破坏API更改)。尝试更频繁地发布,您希望以小批量工作来降低部署和更改的风险。尽量不要堆积如山的变化,部署持续不断的交付
这些组件中的每一个都必须独立开发、制造、测试、集装箱化和部署。但是发布周期是同步的和周期性的
这里有一个矛盾。微服务主要解决组织问题-主要的一点是团队应该能够尽可能独立地工作
团队之间的同步是使他们变慢的原因。这可能以不同的方式发生,例如等待在共享测试环境中部署另一个版本,或者使用相同的共享数据库模式,或者同时发布
我怀疑这是否是在定期发布的基础上使用基于微服务的体系结构管理版本的最佳方法
尽量避免“同步发布”,而是确保不破坏服务之间的任何契约(例如,不破坏API更改)。尝试更频繁地发布,您希望以小批量工作来降低部署和更改的风险。尽量不要堆积如山的更改,持续部署-持续交付。发布周期是同步的 我认为,您需要同时对所有服务进行同步发布,这一事实可能表明,您的服务之间的耦合比它应该的更高,并且您管理它的方式可能会得到改进 问题是,您如何设计您的开发团队在不同的微服务上工作,以便在他们引入更改时不会破坏彼此的微服务 版本控制和管理更改 有两个方面对这项工作很重要,它们是:
- 微服务订单微服务可以是最新版本v1.0.0,合同订单微服务合同也可以是v1.0.0版本
- 微服务客户微服务可能是最新版本v3.0.0,但合同客户微服务合同可能是v2.2.1
- 微服务产品微服务可能是最新的v3.0.0版本,合同产品微服务合同可能是v4.0.0版本