java - Intellij + Bitbucket 中的微服务 + 项目
问题描述
我想问一下 Intellij 中项目的结构。我想创建我的第一个基于微服务架构的 Web 应用程序。
我希望将 Intellij 中一个项目中的所有微服务都视为子模块。我的问题是我是否应该将每个 mocriservice 提交到 bitbucket 中的单独存储库中,或者将所有微服务提交到一个存储库中?最佳做法是什么?
谢谢你,马修
解决方案
常见做法:
- 在 intellij-idea 中将微服务作为单独的项目,而不是单独的模块
- 每个微服务项目的单独存储库
您需要在项目级别进行这种程度的隔离,因为您需要创建CI/CD每个微服务的管道,这是微服务架构的另一个特点。如果将这些服务合并到一个胖项目中,很难为不同的微服务提供不同版本的库依赖(即使这些服务在部署时被 Docker 容器分隔)。每个从事不同微服务工作的团队不应该担心另一个微服务的项目依赖关系。尽管每个微服务都是大型复合应用程序的一部分,但从开发人员的角度来看,将每个服务视为一个独立的代码单元非常重要。这使得在不中断应用程序的情况下部署更新版本的服务成为可能。CI/CD 管道应设计为利用独立版本控制。
有太多的原因,超出了在一个答案中讨论的范围,为什么您需要为每个微服务拥有不同的项目,但是现在,选择不同的项目,一旦您进入微服务领域,您就会发现。
推荐阅读
- javascript - Turtle 图形库的 Write() 函数不适用于 Transcrypt
- r - 使用 purrr 复制数据框的行
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 76 中的字节 0x81:无效的起始字节
- typescript - Typescript sequelize 只返回聚合函数,没有任何其他字段
- node.js - Firebase https 函数在调用时返回“内部错误”
- ruby-on-rails - 仅在 Docker 容器中的 Rails 捆绑“无法在任何源中找到 GEM”
- python - Django 模板 - 如何从请求上下文中的字典中获取键、值(列表)
- css - SASS 简单函数将 HEX 颜色转换为 RGB 作为不带 alpha 的字符串
- java - Springboot Cassandra - com.datastax.oss.driver.api.core.servererrors.SyntaxError:绑定变量不能用于键空间名称
- swiftui - XCode 12.2/Big Sur:对象检查器和 SwiftUI 库在哪里?