一个存储库中的多个微服务

2024-01-12

我对微服务和存储库有疑问。我们是一个小团队(5 人),我们在微服务中创建新项目。我们项目中预期的微服务应用程序在 10-15 个之间。

我们正在考虑为所有微服务建立一个存储库,其结构如下:

-/
--/app1
--/app2
--/app3
-./script.sh
-./script.bat

你觉得这个设计怎么样?你能推荐更好的东西吗?我们认为,如果我们为每个应用程序都有存储库,那么对于一个团队中的小项目来说就太过分了。作为我们的应用程序,您可以想象 Angular 中的 Spring Boot 或 Spa 应用程序。谢谢你的建议。


一般来说,您可以将所有微服务放在一个存储库中,但我认为,虽然每个微服务的代码都在增长,但管理起来可能很困难。

在决定将所有微服务放入一个存储库之前,您可能需要考虑以下一些事项:

  1. 开发者纪律: 小心代码的耦合。由于所有微服务的代码都在一个存储库中,因此它们之间没有真正的物理边界,因此开发人员只需使用其他微服务中的一些代码,例如添加引用或类似的代码。将所有微服务放在一个存储库中将需要一些纪律和规则,以防止开发人员跨越边界和滥用它们。

  2. 受到创建和滥用共享代码的诱惑。如果您以正确且结构化的方式进行操作,这并不是一件坏事。这又为错误的做法留下了很大的空间。如果人们刚开始使用相同的共享罐子或类似的罐子,可能会导致很多问题。为了共享某些内容,应该将其隔离和打包,并且理想情况下应该具有一些支持向后兼容性的版本控制。这样,当该库更新时,每个微服务仍将具有先前版本的工作代码。在同一个存储库中仍然是可行的,但与上面的 1 点一样,它需要规划和管理。

  3. Git 注意事项: 在一个存储库中管理大量拉取请求和分支可能具有挑战性,并可能导致以下情况:“我被其他人阻止了”。此外,可能会有更多的人参与该项目并提交到您的源分支,您将必须更频繁地进行变基和/或合并源分支到您的开发或功能分支(即使您不需要来自其他服务)。为存储库配置的电子邮件通知可能非常烦人,因为您将收到微服务代码中未包含的内容的电子邮件。在这种情况下,您需要在电子邮件客户端中创建一些过滤器/规则,以避免您不感兴趣的电子邮件。

  4. 微服务的数量比最初的 10-15 个增长得更多。数量还能增长吗?如果没有,一切都好。但如果确实如此,在某些时候您可能会考虑将每个微服务拆分到专用存储库中。在项目的后期阶段执行此操作可能具有挑战性,并且可能需要一些工作,在最坏的情况下,您会发现人们随着时间的推移产生了一些耦合,您必须在此阶段解决这些耦合。

  5. CI 管道注意事项: 如果您使用 Jenkins 之类的工具来构建、测试和/或部署您的代码 您可能会遇到一些小的配置困难,例如 Jenkins 和 GitHub 之间的集成。您需要配置一个管道,如果有人针对该微服务创建合并/拉取请求,则该管道仅构建/测试代码的特定部分(或一个微服务)。我从未尝试过做这样的事情,但我想你必须弄清楚如何做到这一点(编写脚本并使其自动化)。我想这是可行的,但需要一些工作才能实现。

结论

尽管如此,所有或大部分问题都可以通过一些额外的管理和配置来解决,但仍然值得了解您可能会遇到哪些额外的工作。我想还需要考虑其他一些问题,但我的一般建议是,如果可以的话,为每个微服务使用单独的存储库(私有存储库定价和类似原因)。这是一个逐个项目做出的决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个存储库中的多个微服务 的相关文章

随机推荐

  • 将标志传递给 Matlab 函数的最简洁方法是什么?

    我正在设计一个函数 它以一个结构和任意数量的标志作为参数 该函数将包含几个if检查是否设置了特定标志 实现这一目标的最巧妙方法是什么 我正在考虑将标志作为单独的字符串参数传递 有更简洁的解决方案吗 我会像使用那样做varargin and
  • Spring Batch ChunkRequest 抛出 stackOverflow

    我正在挣扎Spring Batch 远程分块使用较新版本的 Spring boot 首先 我尝试将 ChunkRequest 作为事件发送 这是不可能的 因为它没有公共默认构造函数 作为解决方案 我必须创建自定义序列化器和反序列化器 并在
  • Silverlight 4 中的 System.Data.DataTable?

    有谁知道如果系统 数据 数据表Silverlight 4 beta 现在支持吗 过去 我在 ASP NET 和 WinForm 项目中使用它进行数据绑定 其中 UI 和对象需要在运行时构建 如果没有 是否在路线图中 不 这不在 SL4 中
  • 在 React TypeScript 中推断 2 个 props 之间的泛型类型

    我相信这是可能的 但我不太擅长 TS 中的高级输入 还 所以 我想让 React 组件在一个 prop 中接受任何对象形状的数组 然后在不同的 事件函数 prop 中发出相同类型 interface Props data AnyGeneri
  • CGAffineTransform之后转换父/子UIView之间的坐标

    在我开始手工做所有事情之前 我想问一下框架是否可以提供一些帮助 我有一个 UIView 其中包含另一个带有地图的 UIView 父 UIView 包含地图的一些图例 最初我在地图视图中定义一些坐标 例如 100 40 并在父视图中放置一块图
  • Javascript-获取悬停元素的背景颜色

    我目前正在制作一个 google chrome 扩展 并使用此 javascript 动态更改悬停元素的背景颜色 var bindEvent function elem evt cb see if the addEventListener
  • 摄取附件需要更多权限

    我有一个应用程序 当我进行 apt 升级时 它使用elasticsearch Configuring Elasticsearch gt removing ingest attachment gt Downloading ingest att
  • Flutter:如何流式传输由不带 mp3 扩展名的 http url 提供的实时音频

    如何使用 flutter 流式传输由不带 mp3 扩展名的 http url 提供的实时音频 它不是远程文件 但是像网络广播这样的流媒体网址 您可以使用包https pub dev packages url audio stream htt
  • Wi-Fi Direct UWP 超时(HRESULT 异常:0x800705B4)

    我正在使用 UWP API 启动 Wi Fi Direct 接入点服务 开始正常 我在用着WiFiDirectConnectionListener使用以下命令监视连接到接入点的设备ConnectionRequested事件 var conn
  • 如何为 aws gateway API 创建预签名 URL

    我已经看到 S3 对象的预签名 URL 是否可以为 API 网关创建预签名 URL 我已经经历过文档 https docs aws amazon com general latest gr signing aws api requests
  • 类和结构的使用[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中什么时候应该使用类还是结构 https stackoverflow com questions 54585 when should you use a class vs a struct i
  • CSS 渐变内部渐变

    是否可以使用渐变作为渐变内的颜色之一 出于我的特定目的 我有一个从左到右的初始渐变 linear gradient to right red darkgray 但我希望深灰色部分实际上是从上到下的渐变 linear gradient to
  • 服务器端只进游标破坏@@IDENTITY

    这是一个最小的重现示例 数据库 CREATE TABLE temp x int IDENTITY 1 1 y int 代码 使用VBA和ADO Public Sub repro Dim cn As New Connection Dim rs
  • 请在服务器编辑器中将部署模式更改为分解存档

    我正在尝试在 weblogic10 3 6 应用程序服务器中部署 EAR 我的 Ear 模块包含一个 Web 应用程序模块和一个 jar 模块 当我将 Ear 部署到 weblogic 服务器时 显示错误 D Workspace test
  • 安装 Visual Studio 2013 后出现 Visual Studio 问题

    我有 Windows 8 机器 我的计算机上安装了 Visual Studio 2010 和 Visual Studio 2012 我安装了 Visual Studio 2013 预览版和 8 1 WDK 安装 Visual Studio
  • iOS7 Webview导航栏下初始滚动位置

    我有一个网络视图 它在导航栏下方根据需要滚动 但是 当我第一次加载控制器时 Web 视图中加载的页面会滚动 以便它与导航栏的顶部对齐 当我滚动网页视图时 正确的插图出现在顶部以正确放置 只是初始位置不正确 如何使初始位置完全滚动到顶部 包括
  • Terraform,如何在现有资源上运行配置程序?

    我的问题与这个 github 帖子类似 https github com hashicorp terraform issues 745 https github com hashicorp terraform issues 745 这也与我
  • 我可以检查指针是否由 malloc/calloc/realloc 分配吗? [复制]

    这个问题在这里已经有答案了 我想知道是否可以检查传递给函数的指针是否由 malloc calloc realloc 分配 int main struct something o struct something a a malloc siz
  • Spark 如何使用图像格式读取我的图像?

    这可能是一个愚蠢的问题 但我无法弄清楚 Spark 如何使用spark read format image load 争论 导入我的图像后 它给出以下内容 gt gt gt image df select image height imag
  • 一个存储库中的多个微服务

    我对微服务和存储库有疑问 我们是一个小团队 5 人 我们在微服务中创建新项目 我们项目中预期的微服务应用程序在 10 15 个之间 我们正在考虑为所有微服务建立一个存储库 其结构如下 app1 app2 app3 script sh scr