2017-04-23 7 views
2

私はそのアプリケーション用のウェブアプリケーションとマイナーサービスを作成していますが、どちらもSequelizeで作成した同じDBモデルを持つ必要があります。 NodeJSでこのタスクを処理するアプローチは何ですか?2つのNodeJSマイクロサービス間でカスタムコードを共有

DBモデルのモジュールを別々に作成してプライベートgitに保存し、このプライベートgitをWebアプリケーションとマイクロサービスにnpmの依存関係として追加することを考えています。

しかし私は正しいアプローチか、いくつかのマイクロサービス間で共有されたプライベートモジュールを分離するために正しい方法があるのだろうか、私の場合はDBモデルですか? DRYに行ってもいいですか?

ありがとうございます!

答えて

1

マイクロサービスについては、コードを再利用しないでください。実際に、DRYは一般的にMicroservicesで間違っていると述べると危険です。そうではなく、次の質問をする必要があります。Will the shared code be a separate module with a dedicated purpose that rectifies a separately managed lifecycle and releases?はいの場合は、別途リリースされたモジュールとして再利用する必要があります。サードパーティのライブラリを再利用する方法と同様です。これにより、各マイクロサービスチームは、モジュールの特定のリリースバージョンを使用するか、新しいバージョンにアップグレードするかどうかを決めることができるため、共有コードとマイクロサービス間の強力な結合を保証しません。あなたが避けたいのは、再利用されたライブラリが変更されたときにマイクロサービスを変更する依存関係です(波及効果を避ける)。

もう1つ - DB関連のスキーマと言えば、別の質問をする必要があります:Will the schemas being reused in separate DBs or will they refer to the same physical DB in the end?。それらが共有DBを使用して終了する場合は、2つのMicroservicesを効果的に結合しているため、おそらく別々のサービスではなく同じサービスの一部と見なされるべきです。

私はこれがあなたのサービスと目標についてもっと知らずに私が言うことができるほどですと感じます。

1

は、マイクロサービスでDRYと一緒に行かないでください。それらを使用する利点の1つを考えてください。いつでも、マイクロサービスを他のスタックに置き換えることができ(PHP + Apache)、契約を尊重する限り、システムは気にしません。

here、59ページ、DRY and the Perils of Code Reuse in Microservices Worldを読むことができます。

関連する問題