トップ OSS紹介 Spring Batch

Spring Batch

サポート対象

NRIのOpenStandiaが提供するSpring Batch最新情報

Spring Batch情報

Spring Batchとは

Spring Batch(スプリングバッチ)は、企業システムの日常業務に不可欠なバッチ・アプリケーションの開発を効率化するために設計された、軽量で包括的なバッチフレームワークです。
大量のレコードを高速に処理するための並列化機能や、データの一貫性を保証するトランザクション管理機能など、バッチ処理に必要な一通りの機能が実装されています。
Spring Batchは、Quartz、IBM Tivoli、NRI 千手、Hitachi JP1などの、エンタープライズで利用できるスケジューラの代替ではなく、それらと連携して動作するように設計されています。
それらのスケジューラとともに、COBOLやシェルで実装したシステムでは実現が難しかった、オンライン・アプリケーションとの統合やマルチプラットフォームへの対応を、Javaにより実現することができます。また、AOPやDIを中心としたPOJOベースの手法とSTS (Spring Tool Suite)などのツールにより、高生産で均質なバッチ・アプリケーションの開発を可能にします。

図: STS (Spring Tool Suite)
図: 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 Frameworkの開発経験者であれば、STS(Eclipse)で開発し、Mavenでテストやビルドするプロセスに慣れているため、効率的な開発ができます。
Spring Frameworkは世界中で利用されているデファクトスタンダードであるため、大人数で開発するプロジェクトやオフショア開発の際などにも技術者を集めやすいといえます。

類似プロダクト

「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
    サポート対象

    Apache Struts

    アパッチストラッツ。Java言語を用いてWebアプリケーションを開発するためのフレームワークです。

  • Apache Wicket

    Apache Wicket

    アパッチウィケット。Javaで実装されたコンポーネントベースのWebアプリケーションフレームワークです。

  • MyBatis
    サポート対象

    MyBatis

    マイバティス。iBATISの後継プロジェクトとして開発され、Javaならびに.NET Frameworkプラットフォームが対象のデータマッパーフレームワークです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。