Batch Processing in a Service-Oriented Architecture

Batch Processing in SOA

Batch processing has traditionally been used in many organizations to perform non real-time, data intensive tasks that are executed at specific frequencies and within predefined time periods.  For example, loading bulk customer data into a Customer database, creating summary records for a data warehouse, etc.  The processing and performance requirements of these batch processes tend to differ from those of real-time, interactive processes.  In order to address these specific requirements, organizations have invested in creating custom, homegrown batch processing solutions and this resulted in a heterogeneous mix of technologies with no standardization.  Applying the concepts of Service Oriented Architecture to batch processing enables organizations to not only standardize on implementation technologies/approaches but also leverages the many benefits offered by an enterprise wide SOA.

As Ronald Schmelzer of ZapThink puts it aptly in his note,

Service-Oriented Architecture (SOA) presents enterprises with the opportunity to expose information and processes as self-contained Services that can communicate and interoperate with each other in a standard, loosely coupled fashion. Although the common impression is that Services expose business processes, data processes, or application functionality, they are also well-suited for exposing the very processes that drive batch-oriented workloads. SOA enables the business to build flexible compositions of Services that implement either business or IT processes in a loosely coupled manner, which has important ramifications for IT service delivery, and the batch processes that are part of it.

However, there seems to be a common misconception in many enterprises regarding the applicability of service orientation to batch processes.  I have heard at least twice in the past week from someone that batch processes do not really lend themselves well to Service-Oriented Architecture (SOA) and that SOA is best suited for building dynamic, interactive, transactional applications.  While batch processing remains a critical component in many data intensive environments in today’s real-time enterprises for various reasons, I think the role and potential applications of batch processes has changed with the advent of SOA.  Batch processes are evolving from static, stand-alone processes invoked at specific frequencies and time windows to essential, dynamic components of business driven process flows that can be invoked on-demand.

The following are some of the ways batch processes can be first class citizens in enterprise wide service oriented architecture.

However, introducing batch processes into SOA has its limitations and challenges.  Not all batch processes may be the best candidates to become service providers or consume services as part of their processing logic.  The biggest potential downside of applying service orientation to batch processes is decrease in performance.  Batch processes have historically processed large volumes of data in pre-defined time windows overnight and introducing service calls into these processes could affect performance.  Hence, the benefits of applying SOA to batch processes such as increased reuse and increased agility must be carefully weighed against the potential implications on performance.  However, these concerns can be addressed and mitigated by laying a solid technical foundation that meets the rigorous performance requirements of batch processes and by utilizing work load automation frameworks that enable an organization adapt to changing processing needs without affecting the core functionality of batch processes.  For example, batch frameworks such as Spring Batch, written in Java, provide the required abstraction to introduce fault tolerance and sclability into batch processes for high volume processing.  In addition, depending on the performance requirements of an organization, other advanced options such as integration with grid computing solutions to partition the batch job over a large number of processors can be considered to ensure high speed processing.

As I mentioned earlier, batch processing is a critical part of standard business operations for many organizations and that will not change any time soon.  As organizations move toward modern architectures from legacy systems and processes, batch processing must be looked at from a new perspective and must be treated as an integral part of SOA and Enterprise Architecture in order to realize the true potential of an integrated, agile enterprise.

Reblog this post [with Zemanta]
Service Oriented Architecture, Technical

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

  • These could run batch jobs and scientific research processing large datasets. ... “These DFs would give service providers the ability to expand into urban ...
  • El Javero
    Hi Ashok, there´s to many things that we need too take in mind with the SOA Batch Processing approach, one of them it´s performance, we can not make a million of invocations of a service even worse an sync invocation to web service, in few words its too expensive performance cost. I don't think that is a good idea.
  • Spottymicky
    Well thought through and excellently written.
  • Naganand
    Hey, This provides a good intro for Batch processing in SOA. However, how would the batch process perform when it is calling Service End Points.
    Is it a good idea to call Service End Point or Just Service Abstraction Layer of library classes?
blog comments powered by Disqus