在两个NodeJS微服务之间共享自定义代码

时间:2017-04-23 07:03:23

标签: javascript node.js git shared-libraries microservices

我正在为该应用创建网络应用和微电脑服务,两者都需要使用Sequelize创建相同的数据库模型。使用NodeJS处理此任务的方法是什么?

我正在考虑创建我的数据库模型的单独模块并将其保存在私有git中,并将此私有git添加到我的Web应用程序和微服务中作为npm依赖。

但我想知道它是正确的方法还是在几个微服务之间分离共享私有模块的正确方法,在我看来是DB模型? 我应该和DRY一起去吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

没有关于微服务的规则,代码不应该重复使用。事实上,说明DRY在微服务方面是错误的是危险的。相反,您应该提出以下问题:Will the shared code be a separate module with a dedicated purpose that rectifies a separately managed lifecycle and releases?如果是,您绝对应该将其重新用作单独发布的模块 - 类似于重用任何第三方库的方式。这可以确保您在共享代码和微服务之间没有强大的耦合,因为每个微服务团队都可以自行决定是否要使用模块的特定发行版本或升级到更新版本。您想要避免的是一种依赖性,它会强制您在重用库更改时更改您的微服务(避免涟漪效应)。

还有一件事 - 因为你提到它是与数据库相关的模式,你必须提出另一个问题:Will the schemas being reused in separate DBs or will they refer to the same physical DB in the end?。如果他们最终使用共享数据库,那么你实际上是紧密地耦合了两个微服务,因此它们应该被认为是同一服务的一部分而不是分开。

我觉得,在不了解更多有关您的服务和目标的情况下,这是我所能说的。

答案 1 :(得分:1)

你应该在微服务中不使用DRY 。考虑使用它们的一个优点:您可以随时用其他堆栈替换一个微服务(PHP + Apache),只要它尊重合同,系统就不会关心。 / p>

您可以阅读更多here,第59页,DRY and the Perils of Code Reuse in Microservices World

相关问题