web-dev-qa-db-ja.com

Spring Boot / Batch:すべてのジョブを個別のMavenモジュールにする必要がありますか?

Spring Batchを使用して、_Jobsを定義できるようにするバックエンドサービスを構築しています。

現在、私にはいくつかの仕事がありますが、本質的には互いに関連していません。

そう、

  • すべてのジョブのすべてのプロパティを含む_application.properties_ファイルが1つあります
  • パッケージは、互いに関連のないクラスで肥大化しています。

そこで、ジョブをさまざまなMavenモジュールに分離し、それらすべてを1つのjarに収集するengineモジュールを用意することを考えました。

私が直面していた問題は、Springが他のモジュールからこれらの_application.properties_を自動的にロードしないことです。

つまり、engineモジュールの_engine.jar_にこのプロパティが見つからないため、$Value("${some.module.property}")はアプリケーション(_application.properties_)に失敗します。

その問題にはいくつかの解決策があるかもしれないことを理解しましたが、私の主な質問は次のとおりです。

この分離を行うのは良い考えですか、それとも1つのプロジェクトにすべてのクラスと構成を含めることは耐えられますか?

1
yaseco

どちらも許容されます。質問はwhat are your outcomeですか? What do you want to achieve?

ここでは、modular monolithに行くことについて話します。これは、マイクロサービスデプロイメントアプローチに進む前の最後のステップになる可能性があります(各ジョブは完全に独立しています。ビルド、デプロイ、および個別に実行します)。

あなたの質問に答えるには:たとえば、

  • モジュール(別名開発者)ごとに異なる所有者を割り当て、Team/Job autonomyをプッシュフォワードします。
  • ビルド時間、グローバルパッケージに適用するときに時間がかかりすぎるコード品質のレビュー時間(ソナーレビューなど)を減らします。
  • ジョブの実装間で一部のコードを共有することで発生する可能性がある結合の改善と結合のリスクの低減

別の質問はwhy these jobs are packaged together if they aren't chained?です

おそらく、それらは完全に分割され、各ジョブが独自のライフサイクルを持ち、独立してデプロイおよび実行可能になる可能性があります-> so one fat-jar by job

1
CodeScale