Spring Batch情報
Spring Batchとは
Spring Batch(スプリングバッチ)は、企業システムの日常業務に不可欠なバッチ・アプリケーションの開発を効率化するために設計された、軽量で包括的なバッチフレームワークです。
大量のレコードを高速に処理するための並列化機能や、データの一貫性を保証するトランザクション管理機能など、バッチ処理に必要な一通りの機能が実装されています。
Spring Batchは、Quartz、IBM Tivoli、NRI 千手、Hitachi JP1などの、エンタープライズで利用できるスケジューラの代替ではなく、それらと連携して動作するように設計されています。
それらのスケジューラとともに、COBOLやシェルで実装したシステムでは実現が難しかった、オンライン・アプリケーションとの統合やマルチプラットフォームへの対応を、Javaにより実現することができます。また、AOPやDIを中心としたPOJOベースの手法とSTS (Spring Tool Suite)などのツールにより、高生産で均質なバッチ・アプリケーションの開発を可能にします。
Spring Batchは、米SpringSource社と米Accenture社が共同で開発していたSpring Frameworkベースのバッチフレームワークを、2008年にオープンソースプロジェクトに提供したものが基になっています。
豊富な実績のあるSpringのプログラミングモデルと、Accenture社のバッチアーキテクチャの実装に関する技術的な経験により、Spring Batchは開発されており、Javaのバッチ標準化仕様にも取り込まれています。
主な機能
Spring Batchは、大量のレコードを処理する際に必須となる様々な機能(ロギング/トレーシング、トランザクション管理、ジョブ処理統計、ジョブの再起動、スキップ、リソース管理など)を再利用可能な形で提供します。
また、最適化とパーティショニング技術により、非常に大容量で高性能なバッチ・ジョブを可能にする高度な技術サービスや機能も提供します。簡単なだけでなく複雑なことも可能で、高度でスケーラブルな方法で大容量のバッチ・ジョブを処理することができます。
主な機能と特徴は以下の通りです。
トランザクション管理 |
トランザクションの分離レベルや振る舞いなどを、設定ファイルに記述することできめ細かく制御できます。 |
---|---|
チャンクベースプロセッシング |
Spring Batchでは、入力ファイルからの読込み、入力チェック、加工、出力までの一連の処理を「チャンク」として定義します。このチャンク内の各処理用のモジュールに必要な実装をするだけで、簡単にバッチが作成できます。 |
宣言型のI/O |
数十個のItemReaderとItemWriter(入出力を実現するモジュール) により、ファイル、JDBC、NoSQL、JMSなど様々な対象への入出力が実現できます。これらの全てが宣言型のI/Oを提供しているため、独自のItemReaderやItemWriterを実装、テストする必要がありません。 |
起動/停止/再起動 |
ジョブの起動/停止/再起動と、実行状態を管理する機能、各レコードをリトライしたり、スキップする機能があります。 |
Webベースの管理インタフェース (Spring Batch Admin) |
Spring Batch Adminは、Spring Batchアプリケーションおよびシステム用の管理コンソール機能として、Webベースのユーザインターフェイスを提供しています。 |
POJOベースの開発手法 |
AOP、DIを中心としたPOJOベースの開発手法により、モジュール間の結合度を弱め、明確な役割分担と統一された実装、効率的なテストを行うことができます。 |
STSによる高い生産性 |
EclipseをSpring開発用にカスタマイズしたSTS(Spring Tool Suite)を活用することで、生産の高い開発を実現します。 |
世界中で利用されている |
世界中で広く利用されているバッチフレームワークのデファクトスタンダードであり、同様の製品で同等以上の機能を持っている製品は現時点ではありません。日本でも数多くの導入事例があります |
高機能・高性能 |
Spring Batchには、業務に必要なバッチを開発する上で必要なほとんどの機能が提供されています。 |
技術者を集めやすい |
Spring Batchでは、DIやPOJOの考え方によりモジュール分割がされているため、開発者はフレームワークの知識をあまり要求されることなく、業務ロジックの開発に集中することができます。 |
類似プロダクト
「Spring Batchは、長い間バッチフレームワークのデファクトスタンダードであり、基本的な仕組みはJavaにおけるバッチの標準化仕様(JSR-352)にもほぼそのまま取り込まれています。
JSR-352は、Java EE 7 (Java Platform, Enterprise Edition 7) の仕様の一つとしてリリースされているため、現在ではJava EEの参照実装であるアプリケーションサーバーのPayara(GlassFish)やWildFly(JBoss EAP)などにも実装されています。ただし、これらのアプリケーションサーバーはJSR-352の仕様を後発で実装しているため、バッチの開発においてSpring Batchほどの機能や導入実績があるわけではありません。
Spring Batch自体もJSR-352に準拠するようにその後実装が見直され、完全な参照実装として2014年5月にバージョン3.0.0がリリースされ、2017年12月にはJava8向けのバージョン4.0.0がリリースされました。
Spring Batchのライセンス
Spring Batchのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Apache Struts
アパッチストラッツ。Java言語を用いてWebアプリケーションを開発するためのフレームワークです。
-
Apache Wicket
アパッチウィケット。Javaで実装されたコンポーネントベースのWebアプリケーションフレームワークです。
-
サポート対象
MyBatis
マイバティス。iBATISの後継プロジェクトとして開発され、Javaならびに.NET Frameworkプラットフォームが対象のデータマッパーフレームワークです。