Spring Batch の導入

エンタープライズドメイン内の多くのアプリケーションは、ミッションクリティカルな環境でビジネスオペレーションを実行するために一括処理を必要とします。これらの事業には以下が含まれます。

  • ユーザーの操作なしで最も効率的に処理される、大量の情報の自動化された複雑な処理。これらの操作には通常、時間ベースのイベント(月末の計算、通知、通信など)が含まれます。

  • 非常に大きなデータセット全体で繰り返し処理される複雑なビジネスルールの定期的な適用(たとえば、保険給付の決定やレート調整)。

  • 通常、フォーマット、検証、トランザクション方式での処理を必要とする内部および外部システムから受信した情報の記録システムへの統合。バッチ処理は、企業で毎日何十億ものトランザクションを処理するために使用されます。

Spring Batch は、エンタープライズシステムの日常的な運用に不可欠な堅牢なバッチアプリケーションの開発を可能にするように設計された、軽量で包括的なバッチフレームワークです。Spring Batch は、人々が期待するようになった Spring Framework の特性 (生産性、POJO ベースの開発アプローチ、および一般的な使いやすさ) に基づいて構築されており、開発者が必要に応じてより高度なエンタープライズサービスに簡単にアクセスして使用できるようにします。Spring Batch はスケジューリングフレームワークではありません。優れたエンタープライズスケジューラ (Quartz、Tivoli、Control-M など) は、有償スペースとオープンソーススペースの両方で利用できます。Spring Batch は、スケジューラーを置き換えるのではなく、スケジューラーと連携して動作することを目的としています。

Spring Batch は、ロギングとトレース、トランザクション管理、ジョブ処理の統計、ジョブの再開、スキップ、リソース管理など、大量のレコードの処理に不可欠な再利用可能な機能を提供します。また、最適化とパーティショニング技術により、非常に大量で高性能のバッチジョブを可能にする、より高度な技術サービスと機能も提供します。Spring Batch は、単純なユースケース (データベースへのファイルの読み取りやストアドプロシージャの実行など) と複雑で大量のユースケース (データベース間での大量のデータの移動、変換など) の両方で使用できます。大量のバッチジョブは、非常にスケーラブルな方法でフレームワークを使用して、大量の情報を処理できます。

バックグラウンド

オープンソースソフトウェアプロジェクトと関連するコミュニティは、Web ベースおよびマイクロサービスベースのアーキテクチャフレームワークに大きな注目を集めていますが、Java ベースのバッチ処理のニーズに対応するための継続的なニーズにもかかわらず、再利用可能なアーキテクチャフレームワークに注目が集まっていませんエンタープライズ IT 環境内での処理。標準の再利用可能なバッチアーキテクチャが不足しているため、クライアントのエンタープライズ IT 機能内で開発された多くの一時的な社内ソリューションが急増しています。

SpringSource (現在の VMware) と Accenture は協力してこれを変更しました。バッチアーキテクチャの実装における Accenture の実践的な業界および技術的経験、SpringSource の深い技術的経験、および Spring の実績のあるプログラミングモデルが一体となって、エンタープライズ Java の重要なギャップを埋めることを目的とした、高品質でマーケットプレースに関連したソフトウェアを作成するための自然で強力なパートナーシップが形成されました。両社は、Spring ベースのバッチアーキテクチャソリューションを開発することで同様の問題を解決している多くのクライアントと協力しました。このインプットは、クライアントが提起する現実世界の問題にソリューションを確実に適用できるようにするのに役立つ、いくつかの有用な追加の詳細と実際の制約を提供しました。

アクセンチュアは、サポート、拡張、既存の機能セットを推進するためのコミッターリソースと共に、以前は独自のバッチ処理アーキテクチャフレームワークを Spring Batch プロジェクトに提供しました。Accenture の貢献は、過去数世代のプラットフォーム (メインフレームの COBOL、Unix の C++、現在はどこでも Java) でバッチアーキテクチャを構築してきた数十年の経験に基づいています。

Accenture と SpringSource の共同作業は、エンタープライズユーザーがバッチアプリケーションを作成する際に一貫して使用できるソフトウェア処理アプローチ、フレームワーク、ツールの標準化を促進することを目的としています。エンタープライズ IT 環境に標準的で実証済みのソリューションを提供したいと考えている企業や政府機関は、Spring Batch の恩恵を受けることができます。

使用シナリオ

一般的な一般的なバッチプログラム:

  • データベース、ファイル、キューから大量のレコードを読み取ります。

  • 何らかの方法でデータを処理します。

  • 変更された形式でデータを書き戻します。

Spring Batch は、この基本的なバッチの繰り返しを自動化し、通常はユーザーの操作なしでオフライン環境で同様のトランザクションをセットとして処理する機能を提供します。バッチジョブはほとんどの IT プロジェクトの一部であり、Spring Batch は堅牢なエンタープライズ規模のソリューションを提供する唯一のオープンソースフレームワークです。

ビジネスシナリオ

Spring Batch は、次のビジネスシナリオをサポートします。

  • バッチ処理を定期的にコミットします。

  • 同時バッチ処理: ジョブの並列処理。

  • 段階的なエンタープライズメッセージ駆動型の処理。

  • 超並列バッチ処理。

  • 障害後の手動またはスケジュールによる再起動。

  • 従属ステップの順次処理 (ワークフロー主導のバッチへの拡張機能付き)。

  • 部分処理: レコードをスキップします (ロールバック時など)。

  • バッチサイズが小さい場合、または既存のストアドプロシージャまたはスクリプトを使用する場合の、バッチ全体のトランザクション。

技術ゴール

Spring Batch には、次の技術的ゴールがあります。

  • バッチ開発者が Spring プログラミングモデルを使用できるようにする: ビジネスロジックに集中し、フレームワークがインフラストラクチャを管理できるようにします。

  • インフラストラクチャ、バッチ実行環境、バッチアプリケーション間の関心事を明確に分離します。

  • すべてのプロジェクトが実装できるインターフェースとして、共通のコア実行サービスを提供します。

  • 「すぐに」使用できるコア実行インターフェースのシンプルでデフォルトの実装を提供します。

  • すべてのレイヤーで Spring フレームワークを使用して、サービスの構成、カスタマイズ、拡張を容易にします。

  • 既存のすべてのコアサービスは、インフラストラクチャレイヤーに影響を与えることなく、簡単に交換または拡張できる必要があります。

  • Maven を使用して構築された、アプリケーションから完全に分離されたアーキテクチャー JAR を使用して、単純な デプロイモデルを提供します。