独立したマイクロサービス(RabbitMqバスで接続)に基づくシステムを設計しています。コードは(少なくとも最初のコンポーネントでは)python(python2とpython3の両方)で記述されます。マイクロサービスとしてリファクタリングして拡張したいビジネスロジックの一部を実装したモノリスアプリケーションがすでにあります。私が心配する1つの質問は次のとおりです。
異なるマイクロサービス間でコードを共有する最良の方法は何ですか。いくつかのマイクロサービスで使用する必要がある共通のヘルパー関数(データ処理、ロギング、構成解析など)があります。
マイクロサービス自体は、個別のプロジェクト(gitリポジトリ)として開発されます。共通ライブラリは、自己完結型プロジェクトとしても開発できます。これらのライブラリをマイクロサービス間で共有するにはどうすればよいですか?
私はいくつかのアプローチを見ます:
- 各マイクロサービスに必要なライブラリのバージョンをコピーし、必要に応じて更新します
- 共通ライブラリを内部PyPiにリリースし、それらのライブラリをマイクロサービスの要件の依存関係としてリストします
- ライブラリリポジトリをgitサブモジュールとして含める
先に進む方法を決定する前に、提案されたアプローチ、ベストプラクティス、過去の経験についてもう少しお読みしたいと思います。提案やリンクはありますか?
fib(n)
(フィボナッチシリーズの実装)。各マイクロサービスでその実装を繰り返す必要はありません。それはutils
ライブラリに属します(機能とバグ修正のためにバージョン管理されています)。これは分散モノリスではなく、単なる共通機能のレイヤーです。私の質問は、このレベルを実装レベルでどのように処理するかです。