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

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

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

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

您如何看待这种设计?你能推荐更好的东西吗?我们认为,如果每个应用程序都有存储库,那么对于一个团队中的那个小项目而言,这将是过大的杀伤力。作为我们的应用程序,您可以想象角度引导的Spring Boot或spa应用程序。谢谢你的建议。

shuangzai520 回答:一个存储库中有多个微服务

通常,您可以将所有微服务都放在一个存储库中,但是我认为,尽管每个微服务的代码都在增长,但是管理起来却很困难。

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

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

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

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

  4. 微服务的数量甚至会比最初的10-15增长得更多。如果不是很好,但是在某个时候可以,则可以考虑将每个微服务拆分到专用存储库中。在您处于项目后期的阶段进行此操作可能会充满挑战,并且可能需要进行一些工作,在最坏的情况下,您会发现人们随着时间的推移会产生一些耦合,您必须在此阶段解决这些耦合。 / p>

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

结论

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

本文链接:https://www.f2er.com/3136525.html

大家都在问