Spring Batch – Features & Architectures

Background

When we think of batch processing, we think of it as a Main frame system. Mainframe has a first class support for writing these programs with supported all features like – transaction management, language extension, and ability to store state and restart and recover the information from the tables beneath

In the Java world we really don’t have any such mechanism to achieve the same. Hence Spring Batch is the open source framework built to support the batch processing in the enterprise application development environment.

Spring Batch Introduction

springbatch-intro

Photo credit: Spring Source    

Spring Batch Is a lightweight comprehensive all-inclusive batch processing framework. It is designed to facilitate the development of vital and robust feed processing or batch applications used in the daily operations of enterprise application environments.  They are intended to simplify and optimize the work of high volume based batch processing operations. It uses POJO based development approach of Spring framework.

It typically reads large number of records from various source options – like file, message queue, database etc, and then it processes the data based on some rules and writes back the data in a various modified format like – database, file(CSV, text, XML), Queue etc.Input and output format can be from / to text file, CSV file, XML, database, Queue, Custom format. It has built in components to support custom format. It automates the basic batch iteration as a chuck of similar transactions without out human intervention.

We see Batch jobs are part of most enterprise application development projects and Spring Batch is the only open source framework that provides a robust, enterprise-scale solution.

 

Spring Batch Architecture

Spring Batch Layered Architecture

Photo credit: Spring Source    

Batch Stereotypes

Photo credit: Spring Source

Supported features

Spring Batch provides reusable functions to process large volumes of records, including:

  • Declarative I/O
  • Logging/tracing
  • Application transaction management
  • Statistics related job processing
  • Starting a job / Stopping a Job / Restarting a job
  • Skipping
  • Efficient resource management
  • Optimization and partitioning techniques.
  • Web based administration interface – Spring Batch Admin

All sorts of enterprise applications – simple & complex, high-volume batch jobs can use the framework in a scalable manner to process high volumes of data. The application development needs to concentrate on the business logic than batch architecture itself. It reduced the implementation time, so increases the quick turnaround time.

Usage

Technical Scenarios – we can think of using spring batch:

  • Spring Batch allows periodical batch commit batch
  • Used for Concurrent batch processing: parallel processing of a job
  • Message-driven processing
  • Parallel batch processing
  • Allows manual or scheduled restart on failure
  • Sequential execution of dependent steps (with extensions to workflow-driven batches)
  • Partial processing: allows to skip records on failure(e.g. on rollback)
  • For whole-batch transaction: for cases with a small batch size or existing stored procedures/scripts
  • Chunk based transaction – for high volume batch size applications

Advantages of Spring Batch

Advantages of Spring Batch are:

  • Spring programming model is the base of the Spring Batch framework. Batch developers can concentrate on business rules instead of building the framework take care of infrastructure related implementations
  • It has clear separation of
    • the infrastructure,
    • the batch execution environment, and
    • the batch application.
  • Spring Batch provides common, core execution services as interfaces that all development projects can implement custom implementations.
  • Core execution interfaces are provided with default implementations which is called OOTB – ‘out of the box’.
  • It is easy to configure, customize, and extend services, by using all the spring framework capabilities in all layers.
  • Current application existing core services will be easy to replace or extend, without any impact to the core infrastructure layer.
  • Provide a simple deployment model, with the architecture JARs completely separate from the application, built using ANT, Maven

Example of Batch processing

Spring Batch can be used for Close of Business processing like

  • Account reconciliation (Banking)
  • Order processing(eCommerce)
  • Business Reporting(eCommerce, Banking and other domains)

Spring Batch can be used  to Import and export handling – migration of initial data

  • ETL jobs to Extract, transform & Load
  • Data warehouse synchronization

– Spring Batch can also be used for large scale output jobs

  • Loyalty scheme emails
  • Bank Statements
  • Payroll

Feeds processing from real time commerce application that I have worked

  • Catalog feed
  • Pricing and promotion feeds
  • Feed to/ from third party systems – Omniture, Bazaar voice
  • Endeca related feed feed as DAT files to Endeca Search engine.
    • Product data,
    • Sku data,
    • Price details, and Collection etc

Reference:

About TechnoStixs.com

TechnoStixs.com is a dedicated weblog for Java/J2EE and web developers. We take pride in our work. Every publication is carefully analyzed, written and tested to ease the understanding of the topic or subject.

We cover Java Core Technologies, eCommerce, J2EE Frameworks, Web Service, Build Tools, Unit Test Frameworks and Others.

2,024 total views, 2 views today

Add comment