多数の外部サービスを使用するマイクロサービスをいくつか構築しました。これらの外部サービスのほとんどは、私が構築した複数のマイクロサービスによって消費されます。これらのマイクロサービスへのコネクタをライブラリ プロジェクトとして構築し、すべてのマイクロサービス プロジェクトに依存関係として含めました。ただし、マイクロサービスのすべてのロジックは自己完結型である必要があり、ロジックの複製は問題ないと読みました。その場合、共有ライブラリを使用する代わりに、すべてのマイクロサービス内でこれらのコネクタを定義することをお勧めしますか?
1 に答える
...マイクロサービスのすべてのロジックは自己完結型である必要があり、ロジックの重複は問題ありません
これがあなたが苦労している問題の核心だと思います。この声明は実際に真実ですか?
後で簡単な Google 検索: http://www.simplicityitself.io/our%20team/2015/01/12/sharing-code-between-microservices.html
この記事では、この正確な質問について説明します。これは、「マイクロサービス アーキテクチャでの再利用の適切なレベルはどのレベルですか?」と考えることができます。
著者は、開発者がコードを共有する必要性を感じる理由のリストを提供します。結合と分離の喪失に関して、低いものから高いものへと並べられています。
- 既存の技術機能を活用
- たとえば、共有スキーマの実施として、クラスを使用してデータ スキーマを共有します。
- データ ソースの共有、複数のサービスによる同じデータベースの使用。
このリストはほとんどの理由をカバーしていますが、コードを共有するもう 1 つの重要な理由を追加します。これは、一般にマイクロサービスシャーシパターンと呼ばれる、マイクロサービスを迅速に立ち上げるための共通フレームワークに関係しています。
著者は続けて次のように述べています。
残念ながら、この質問に対する正しい答えはないため、コードを共有したい動機を突き止めることが最も重要です。他のすべてと同様に、それは文脈に依存します。
以上のことから、コネクタを集中化する必要があるかどうかはわかりません。
さて、これらの依存関係はリストのどこに当てはまりますか? また、マイクロサービスをやめてモノリスを構築する前に、どの程度のカップリングに耐えられるでしょうか?
これらの質問に答えるのは簡単ではありませんが、これが正しい結論に導くのに役立つことを願っています.