SlideShare a Scribd company logo
Spring Batch for large
Enterprises operations
Ignasi Gonzalez
@ignasi15g
Let me do some initial questions
Which is the concept?
Batch Definition
Batch Usages
Correct Clean
GENERATE
Order
Agenda
• Batch at Java and Spring
• Usage of Spring Batch at a bank
• Usage of Spring Batch at an energy company
Batch Structure
JSR 352: Batch Applications
for the Java Platform
(May 24th, 2013)
Other Concepts
Batchlet
Chunk type Step
Batchlet type Step
Job Execution
JSR 352 & Spring Batch
JSR – 352
• Define an API.
• Provide an SDL (JSL)
• Provide a contract.
• Dependency injection is optional
Spring Batch
• Define an API.
• Provide an SDL. (JSL)
• Provide a contract.
• Provide implementation for Readers and
Writers.
• Provide specific batchlet
implementations.
• Provide JobRepository implementation.
• From Spring 3.0 support JSR-352.
Spring Batch Structure
http://docs.spring.io/spring-batch-old/1.1.x/spring-batch-docs/reference/html-single/index.html#d0e5652
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_JOB_INSTANCE
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_JOB_EXECUTION
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_JOB_EXECUTION_PARAMS
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_STEP_EXECUTION
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_STEP_EXECUTION_CONTEXT
Spring Batch Data Model
http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
BATCH_STEP_EXECUTION_CONTEXT
BATCH_JOB_INSTANCE
BATCH_JOB_EXECUTION
BATCH_JOB_EXECUTION_PARAMS
BATCH_STEP_EXECUTION
Main Benefits
• Integrated with full Spring framework supporting all Spring features such
as Dependency Injection, AOP & Testability.
• Well tested ItemReaders and ItemWriters covering vast options for I/O
(File, JDBC, NoSQL JMS).
• Management information of running and finished Batch processes,
including information about results.
• A collection of Tasklets (Spring Batchlets) for execution from shell scripts
to Hadoop processes.
• Framework flexibility to define complex steps configurations.
• Simplification of thread management and transactions management.
• Management of Batch lifecycle (Restartability, Run, Pause, Stop).
SPRING BATCH AT A BANK
BANK
• The bank is undergoing a process of migration of core applications from Host to a mid-level
system that uses a Spring-based architecture defined, developed and maintained by everis.
Time to
market
MIPS
reduction
Scalability
TestabilityCost
reduction
HOST MID-LEVEL SYSTEMS
Architecture
• Spring based architecture:
– Performs 7.000 transactions per second.
– Provides service to 30.000 users
– Architecture team composed by 30 software engineers.
INFR.
CORPORATE
CHANNEL
SERVICES
HOST
LOGIN
IDM
BATCH
BACKENDS
ONLINE
CHANNEL
CRYPTO
NEUTRAL
CHANNEL
OTHER
MEDIA
STORAGE
FINANCIAL
TERMINAL
ONLINE
BANKING
GROUP
COMPANIES
ATM
BATCH
Challenge
HOST
How to integrate Spring Batch in corporate tools?
SPRINGBATCH
Integration
Corporate scheduler
Integration
Corporate batch launcher
ClassPathXmlApplicationContext sbc = BatchApplicationContextUtils.createApplicationContext(properties);
JobLauncher launcher = (JobLauncher) sbc.getBean("jobLauncher");
Job job = (Job) sbc.getBean(this.jobId);
initBatchContext(jobParameters, appParams, jobParam, sbc);
public static ClassPathXmlApplicationContext createApplicationContext(Properties credentials)
throws IOException {
String[] contextFiles = new String[]{
"classpath*:batch/arch/internal/beans/-batch-arch*.xml",
"classpath*:batch/app/**/-batch-app*.xml"
};
ClassPathXmlApplicationContext sbc = new ClassPathXmlApplicationContext(contextFiles, false);
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ppc.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_NEVER);
ppc.setIgnoreUnresolvablePlaceholders(true);
ppc.setProperties(credentials);
sbc.addBeanFactoryPostProcessor(ppc);
sbc.refresh();
return sbc;
}
protected void initBatchContext(JobParameters jobParams, String[] appParams, String[] jobParam,
ClassPathXmlApplicationContext xmlcontext) {
BatchContext.reset();
BatchContext bc = BatchContext.getInstance();
BatchParams bp = new BatchParams();
bp.setJobName(this.jobId);
bp.setInstanceId(jobParams.getString(BatchLauncher.ArchParamKey.INSTANCIA.toString()));
bp.setScheduleTimestamp(jobParams.getDate(BatchLauncher.ArchParamKey.SCHED_TS.toString()));
bp.setAppParams(Arrays.asList(appParams));
bp.setJobParam(Arrays.asList(jobParam));
bp.setJobentorno(jobParams.getString(BatchLauncher.ArchParamKey.ENTORNO.toString()));
bp.setJobappmvs(jobParams.getString(BatchLauncher.ArchParamKey.APPMVS.toString()));
bc.setBatchParameters(bp);
bc.setxmlContext(xmlcontext);
}
Results
Main areas with Batch processes:
• Markets
• IT
• Risk Management
• Digital Contents
• Banking services
• ATMs
• Online Banking
• Extranet
0
50000
100000
150000
200000
250000
ADCAEX
AGERIE
AMPAMP
ARTBKD
AUWATC
BCKARM
BCKPBC
BCKSDD
BKDAIR
BKDGBR
BKDPRP
CALBCK
COMCNF
ECCVAL
EPQEPQ
GESINS
IMPIMP
LVACUA
MUROGE
PERCAI
PUNBKD
SELCLI
SPCSPC
TRACEA
BSMTST
IDECLD
SISSEG
# executions per process
# executions per month
SPRING BATCH AT AN ENERGY COMPANY
ENERGY COMPANY
• Software factory composed by 4 different
providers.
• More than 300 developers.
• Migration from custom developed framework
to a Spring based architecture.
Architecture
Integración
JMS/MQ
WebServices
Documentum
Dazel/Papirus
Challenges
1. How to migrate current custom batch processes
on new Spring operational architecture?
1. How to ensure quality and correct Spring Batch
usage with a community of 300 developers
2. How to monitor and report batch activity
formed by more than 400 processes with 160
processes per day executions?
1. MIGRATION
Migration
PoC Objectives:
• Evaluate the effort required by the
development teams to migrate.
• Evaluate the performance.
• Evaluate the total execution time.
• Identify improvements over
migrated process.
Migration
• Obtained results:
 30% Reduction of the Execution time
 15% Reduction of the Memory consumption
 10% Reduction of the CPU consumption
 Process migration, including tests, has been performed in 8 Working Days without
previous Spring Batch experience.
 Reduction of the proprietary code.
 Maintainability on batch processes (Query + DAO + Processor + Config writer).
• Where do we obtain performance benefits?
– Using JDBCPagingItemReader, we eliminate a reading lock at the beginning of the
original process.
– Using ApacheCommonsDBCP as a Datasource implementation for Reader, we optimize
the process as the old architecture component had performance issues.
– Using FlatFileItemWriter to generate CSV output file, the results are improved
compared to the ones previously obtained
2. QUALITY
Quality
Quality
LOCAL TEST ACCEPTANCE
TRAINING PRODUCTION
PRE
PRODUCTION
PERFORMANCE
Productive environmentsTactic environments
Development
environments
Monitoring
QA environments
Dynamic Code AnalysisReporting & Bugtracking Static code analysis Performance testing
& profiling
Continuous Integration Static Data Model Analysis
OLTP
3. MONITOR AND CONTROL
Monitor and control
01:00 AM
02:00 AM
03:00 AM
Planed
04:00 AM
05:00 AM
06:00 AM
01:00 AM
02:00 AM
03:00 AM
Happens
04:00 AM
05:00 AM
06:00 AM
Monitor and Control
Monitor and Control
Monitor and Control
Monitor and Control
Monitor and Control
Needs
Monitor and Control
Batch Executions
• No global and complete reporting tool around Batch processes.
• Difficulties on schedule modifications because huge number of processes (432) and high
number of executions (160 per day).
• No alert mechanism if planned Batch doesn’t start (Planned vs Executed).
Batch Plannifications
Monitor and Control
44
Batch Executions
Logs
Planificación Batch
• Daily global information.
• Visual control of executions vs planification
• Historical Data..
Conclusions
• Structure Batch following standards and best practices.
• Well tested and optimized components.
• Possibilities to exploit horizontal scalability framework offer.
• Integration with the rest of the Spring framework (Spring Integration / Spring XD).
• Reusability of business logic developed in online applications.
• Consider the complexity of integrating Spring Batch with existing enterprise tools.
• Migration process from current batches must be normalized to SpringBatch
characteristics.
• Ensure invariability of the process after migration using appropriate testing tools.
• Ensure correctness of framework usage using checkstyle tools.
• Design batch having in mind advanced framework capacities (chunking, parallelism).
• Measure processes execution ensuring correctness during all process life
Benefits
Advises
Spring batch for large enterprises operations
Spring batch for large enterprises operations
Spring Batch for large
Enterprises operations
Ignasi Gonzalez
@ignasi15g

More Related Content

PPTX
Spring batch
PPTX
Spring batch introduction
PPT
Spring Batch 2.0
PDF
Spring Batch Performance Tuning
PPTX
Spring framework in depth
PDF
Introduction to Spring Boot!
PDF
Spring batch overivew
PPT
Spring Batch Introduction
Spring batch
Spring batch introduction
Spring Batch 2.0
Spring Batch Performance Tuning
Spring framework in depth
Introduction to Spring Boot!
Spring batch overivew
Spring Batch Introduction

What's hot (20)

PDF
Spring Boot
ODP
Xke spring boot
PDF
Building RESTful applications using Spring MVC
PPTX
Spring boot Introduction
PPTX
Introduction to Spring Boot
PPTX
Introduction to Spring Framework
PDF
Introduction to React JS
PDF
Java spring framework
ODP
Spring User Guide
PPT
Spring Boot in Action
PPTX
mongodb와 mysql의 CRUD 연산의 성능 비교
PDF
Spring Framework - AOP
PPTX
JSON: The Basics
PDF
Spring Boot
ODP
Introduction to ReactJS
PPTX
All You Need to Know About Java – Advantages and Disadvantages
PPTX
Hadoop configuration & performance tuning
PPTX
PostGIS - National Education Center for GIS: Open Source GIS
PDF
From Spring Framework 5.3 to 6.0
PPTX
Spring Boot
Xke spring boot
Building RESTful applications using Spring MVC
Spring boot Introduction
Introduction to Spring Boot
Introduction to Spring Framework
Introduction to React JS
Java spring framework
Spring User Guide
Spring Boot in Action
mongodb와 mysql의 CRUD 연산의 성능 비교
Spring Framework - AOP
JSON: The Basics
Spring Boot
Introduction to ReactJS
All You Need to Know About Java – Advantages and Disadvantages
Hadoop configuration & performance tuning
PostGIS - National Education Center for GIS: Open Source GIS
From Spring Framework 5.3 to 6.0
Ad

Viewers also liked (11)

PDF
Spring Batch - Lessons Learned out of a real life banking system.
PDF
Spring Batch Workshop (advanced)
KEY
Spring Batch Behind the Scenes
KEY
Ruote: A Ruby workflow engine
PPTX
Messaging for Web and Mobile with Apache ActiveMQ
PDF
Spring Batch - Lessons Learned out of a real life banking system.
PPT
Enterprise Integration and Batch Processing on Cloud Foundry
PPTX
Parallel batch processing with spring batch slideshare
PDF
Test strategies for data processing pipelines
PDF
Spark For Faster Batch Processing
PPTX
11 software testing_strategy
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch Workshop (advanced)
Spring Batch Behind the Scenes
Ruote: A Ruby workflow engine
Messaging for Web and Mobile with Apache ActiveMQ
Spring Batch - Lessons Learned out of a real life banking system.
Enterprise Integration and Batch Processing on Cloud Foundry
Parallel batch processing with spring batch slideshare
Test strategies for data processing pipelines
Spark For Faster Batch Processing
11 software testing_strategy
Ad

Similar to Spring batch for large enterprises operations (20)

PDF
Gain Proficiency in Batch Processing with Spring Batch
PPTX
Spring batch
PDF
Java one 2015 [con3339]
PPTX
Spring batch
PDF
Atlanta JUG - Integrating Spring Batch and Spring Integration
PDF
Batch Applications for the Java Platform
PDF
Design & Develop Batch Applications in Java/JEE
PDF
Spring Batch Introduction (and Bitbucket Project)
PDF
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
PPTX
Spring batch
PPTX
Spring & SpringBatch EN
PPTX
SBJUG - Building Beautiful Batch Jobs
DOCX
springn batch tutorial
PPTX
Batching and Java EE (jdk.io)
PPTX
Spring Batch
PPTX
PDF
Java EE 7 Batch processing in the Real World
PDF
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
PDF
Spring Batch in Code - simple DB to DB batch applicaiton
PPTX
Spring Batch - the not so hot cousin that gets the (batch) job done
Gain Proficiency in Batch Processing with Spring Batch
Spring batch
Java one 2015 [con3339]
Spring batch
Atlanta JUG - Integrating Spring Batch and Spring Integration
Batch Applications for the Java Platform
Design & Develop Batch Applications in Java/JEE
Spring Batch Introduction (and Bitbucket Project)
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Spring batch
Spring & SpringBatch EN
SBJUG - Building Beautiful Batch Jobs
springn batch tutorial
Batching and Java EE (jdk.io)
Spring Batch
Java EE 7 Batch processing in the Real World
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Spring Batch in Code - simple DB to DB batch applicaiton
Spring Batch - the not so hot cousin that gets the (batch) job done

Recently uploaded (20)

PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
AI in Product Development-omnex systems
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Transform Your Business with a Software ERP System
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Nekopoi APK 2025 free lastest update
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
top salesforce developer skills in 2025.pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
Reimagine Home Health with the Power of Agentic AI​
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Design an Analysis of Algorithms I-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
2025 Textile ERP Trends: SAP, Odoo & Oracle
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
AI in Product Development-omnex systems
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Transform Your Business with a Software ERP System
Wondershare Filmora 15 Crack With Activation Key [2025
Nekopoi APK 2025 free lastest update
wealthsignaloriginal-com-DS-text-... (1).pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
top salesforce developer skills in 2025.pdf
VVF-Customer-Presentation2025-Ver1.9.pptx

Spring batch for large enterprises operations

  • 1. Spring Batch for large Enterprises operations Ignasi Gonzalez @ignasi15g
  • 2. Let me do some initial questions
  • 3. Which is the concept?
  • 6. Agenda • Batch at Java and Spring • Usage of Spring Batch at a bank • Usage of Spring Batch at an energy company
  • 7. Batch Structure JSR 352: Batch Applications for the Java Platform (May 24th, 2013)
  • 8. Other Concepts Batchlet Chunk type Step Batchlet type Step Job Execution
  • 9. JSR 352 & Spring Batch JSR – 352 • Define an API. • Provide an SDL (JSL) • Provide a contract. • Dependency injection is optional Spring Batch • Define an API. • Provide an SDL. (JSL) • Provide a contract. • Provide implementation for Readers and Writers. • Provide specific batchlet implementations. • Provide JobRepository implementation. • From Spring 3.0 support JSR-352.
  • 11. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html
  • 12. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_JOB_INSTANCE
  • 13. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_JOB_EXECUTION
  • 14. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_JOB_EXECUTION_PARAMS
  • 15. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_STEP_EXECUTION
  • 16. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_STEP_EXECUTION_CONTEXT
  • 17. Spring Batch Data Model http://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html BATCH_STEP_EXECUTION_CONTEXT BATCH_JOB_INSTANCE BATCH_JOB_EXECUTION BATCH_JOB_EXECUTION_PARAMS BATCH_STEP_EXECUTION
  • 18. Main Benefits • Integrated with full Spring framework supporting all Spring features such as Dependency Injection, AOP & Testability. • Well tested ItemReaders and ItemWriters covering vast options for I/O (File, JDBC, NoSQL JMS). • Management information of running and finished Batch processes, including information about results. • A collection of Tasklets (Spring Batchlets) for execution from shell scripts to Hadoop processes. • Framework flexibility to define complex steps configurations. • Simplification of thread management and transactions management. • Management of Batch lifecycle (Restartability, Run, Pause, Stop).
  • 19. SPRING BATCH AT A BANK
  • 20. BANK • The bank is undergoing a process of migration of core applications from Host to a mid-level system that uses a Spring-based architecture defined, developed and maintained by everis. Time to market MIPS reduction Scalability TestabilityCost reduction HOST MID-LEVEL SYSTEMS
  • 21. Architecture • Spring based architecture: – Performs 7.000 transactions per second. – Provides service to 30.000 users – Architecture team composed by 30 software engineers. INFR. CORPORATE CHANNEL SERVICES HOST LOGIN IDM BATCH BACKENDS ONLINE CHANNEL CRYPTO NEUTRAL CHANNEL OTHER MEDIA STORAGE FINANCIAL TERMINAL ONLINE BANKING GROUP COMPANIES ATM BATCH
  • 22. Challenge HOST How to integrate Spring Batch in corporate tools? SPRINGBATCH
  • 24. Integration Corporate batch launcher ClassPathXmlApplicationContext sbc = BatchApplicationContextUtils.createApplicationContext(properties); JobLauncher launcher = (JobLauncher) sbc.getBean("jobLauncher"); Job job = (Job) sbc.getBean(this.jobId); initBatchContext(jobParameters, appParams, jobParam, sbc); public static ClassPathXmlApplicationContext createApplicationContext(Properties credentials) throws IOException { String[] contextFiles = new String[]{ "classpath*:batch/arch/internal/beans/-batch-arch*.xml", "classpath*:batch/app/**/-batch-app*.xml" }; ClassPathXmlApplicationContext sbc = new ClassPathXmlApplicationContext(contextFiles, false); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_NEVER); ppc.setIgnoreUnresolvablePlaceholders(true); ppc.setProperties(credentials); sbc.addBeanFactoryPostProcessor(ppc); sbc.refresh(); return sbc; } protected void initBatchContext(JobParameters jobParams, String[] appParams, String[] jobParam, ClassPathXmlApplicationContext xmlcontext) { BatchContext.reset(); BatchContext bc = BatchContext.getInstance(); BatchParams bp = new BatchParams(); bp.setJobName(this.jobId); bp.setInstanceId(jobParams.getString(BatchLauncher.ArchParamKey.INSTANCIA.toString())); bp.setScheduleTimestamp(jobParams.getDate(BatchLauncher.ArchParamKey.SCHED_TS.toString())); bp.setAppParams(Arrays.asList(appParams)); bp.setJobParam(Arrays.asList(jobParam)); bp.setJobentorno(jobParams.getString(BatchLauncher.ArchParamKey.ENTORNO.toString())); bp.setJobappmvs(jobParams.getString(BatchLauncher.ArchParamKey.APPMVS.toString())); bc.setBatchParameters(bp); bc.setxmlContext(xmlcontext); }
  • 25. Results Main areas with Batch processes: • Markets • IT • Risk Management • Digital Contents • Banking services • ATMs • Online Banking • Extranet 0 50000 100000 150000 200000 250000 ADCAEX AGERIE AMPAMP ARTBKD AUWATC BCKARM BCKPBC BCKSDD BKDAIR BKDGBR BKDPRP CALBCK COMCNF ECCVAL EPQEPQ GESINS IMPIMP LVACUA MUROGE PERCAI PUNBKD SELCLI SPCSPC TRACEA BSMTST IDECLD SISSEG # executions per process # executions per month
  • 26. SPRING BATCH AT AN ENERGY COMPANY
  • 27. ENERGY COMPANY • Software factory composed by 4 different providers. • More than 300 developers. • Migration from custom developed framework to a Spring based architecture.
  • 29. Challenges 1. How to migrate current custom batch processes on new Spring operational architecture? 1. How to ensure quality and correct Spring Batch usage with a community of 300 developers 2. How to monitor and report batch activity formed by more than 400 processes with 160 processes per day executions?
  • 31. Migration PoC Objectives: • Evaluate the effort required by the development teams to migrate. • Evaluate the performance. • Evaluate the total execution time. • Identify improvements over migrated process.
  • 32. Migration • Obtained results:  30% Reduction of the Execution time  15% Reduction of the Memory consumption  10% Reduction of the CPU consumption  Process migration, including tests, has been performed in 8 Working Days without previous Spring Batch experience.  Reduction of the proprietary code.  Maintainability on batch processes (Query + DAO + Processor + Config writer). • Where do we obtain performance benefits? – Using JDBCPagingItemReader, we eliminate a reading lock at the beginning of the original process. – Using ApacheCommonsDBCP as a Datasource implementation for Reader, we optimize the process as the old architecture component had performance issues. – Using FlatFileItemWriter to generate CSV output file, the results are improved compared to the ones previously obtained
  • 35. Quality LOCAL TEST ACCEPTANCE TRAINING PRODUCTION PRE PRODUCTION PERFORMANCE Productive environmentsTactic environments Development environments Monitoring QA environments Dynamic Code AnalysisReporting & Bugtracking Static code analysis Performance testing & profiling Continuous Integration Static Data Model Analysis OLTP
  • 36. 3. MONITOR AND CONTROL
  • 37. Monitor and control 01:00 AM 02:00 AM 03:00 AM Planed 04:00 AM 05:00 AM 06:00 AM 01:00 AM 02:00 AM 03:00 AM Happens 04:00 AM 05:00 AM 06:00 AM
  • 43. Needs Monitor and Control Batch Executions • No global and complete reporting tool around Batch processes. • Difficulties on schedule modifications because huge number of processes (432) and high number of executions (160 per day). • No alert mechanism if planned Batch doesn’t start (Planned vs Executed). Batch Plannifications
  • 44. Monitor and Control 44 Batch Executions Logs Planificación Batch • Daily global information. • Visual control of executions vs planification • Historical Data..
  • 45. Conclusions • Structure Batch following standards and best practices. • Well tested and optimized components. • Possibilities to exploit horizontal scalability framework offer. • Integration with the rest of the Spring framework (Spring Integration / Spring XD). • Reusability of business logic developed in online applications. • Consider the complexity of integrating Spring Batch with existing enterprise tools. • Migration process from current batches must be normalized to SpringBatch characteristics. • Ensure invariability of the process after migration using appropriate testing tools. • Ensure correctness of framework usage using checkstyle tools. • Design batch having in mind advanced framework capacities (chunking, parallelism). • Measure processes execution ensuring correctness during all process life Benefits Advises
  • 48. Spring Batch for large Enterprises operations Ignasi Gonzalez @ignasi15g