【问题标题】:Comfortable way of working with shared libs使用共享库的舒适方式
【发布时间】:2021-04-09 12:18:39
【问题描述】:

我有一个基于微服务架构的后端项目。我还有一个共享库,托管在 verdaccio 服务中。一切都很好,但是编辑共享库的程序很无聊。每次我需要构建 lib,推送到 git,等到它在那里构建,然后将它安装到我的微服务中,然后才能运行。在本地测试和调试期间,我只是复制/粘贴 dist 文件夹,我觉得这不是一个好主意,而且在推送之前我必须更新 npm 锁定文件,所以这不是一个解决方案。 也许有一些工具可以自动化这个过程?

UPD npm link 是一个解决方案

【问题讨论】:

  • 我认为这就是“npm 链接”的用途。您可以将包引用指向您计算机上的目录,而不是使用已发布的包。

标签: node.js npm microservices


【解决方案1】:

在微服务架构中,让所有微服务都使用公共库通常是一种不好的做法,因为这样你会耦合这些服务并耦合其生命周期,因为每次发布新版本的库时,所有服务都需要更新并且需要它们的新版本。

这个问题的一般解决方案是每个服务都应该有自己的依赖关系,这样处理它的团队就不需要或依赖其他团队或其他工件的生命周期。

但是,可能某些功能需要对所有服务都相同,并在所有微服务之间复制,这可能会更糟。在这种情况下,我认为共享一个库是不错的,就像其他已经共享的库一样,如 lombok、jackson 等。在这些情况下,要求库是稳定的(不是预期的)有许多错误或更改)并且它可以毫无问题地维护各种版本(如果一个微服务在版本 x 中并且它不需要对库的新版本进行任何更改,那么它应该不需要更新,直到需要更新它自己的业务需求,所以它的生命周期不会改变)

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    相关资源
    最近更新 更多