2017-04-23 97 views
2

我正在爲該應用程序創建Web應用程序和micorservice,並且都需要使用Sequelize創建相同的數據庫模型。用NodeJS處理這個任務的方法是什麼?在兩個NodeJS微服務之間共享自定義代碼

我想創建我的數據庫模型的單獨模塊,並將其保存在私有混帳中,並將此私有混帳添加到我的Web應用程序和微服務中,作爲npm依賴項。

但我想知道是正確的方法還是什麼是正確的方式來分離少數微服務之間的共享私人模塊,在我的情況下,它是數據庫模型? 我應該幹還是不幹?

在此先感謝!

回答

1

沒有關於微服務的規則,代碼不應該被重用。事實上,說明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

你應該不能在微服務中使用DRY。想想使用它們的優點之一:您可以隨時用其他堆棧替換一個微服務(PHP + Apache),只要遵守合同,系統就不會在意。

您可以閱讀更多here,第59頁,DRY and the Perils of Code Reuse in Microservices World