SlideShare a Scribd company logo
2014 © Trivadis
BASEL BERN BRUGG LAUSANNE ZUERICH DUESSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MUNICH STUTTGART VIENNA
2014 © Trivadis
Spring Batch
Lessons Learned out of a real life banking system.
Michael Beer
Senior Consultant
Raffael Schmid
Consultant
June 24th, 2014
Lessons Learned out of a real life banking system
1
2014 © Trivadis
About us
Michael Beer
Senior Consultant
June 24th, 2014
Lessons Learned out of a real life banking system
2
!  Trivadis since 2001
!  design and development of
web based applications
!  part of the Trivadis APM
team
!  Trivadis since 2010
!  design and development of
web based applications
!  interested in performance
related things on the JVM
Raffael Schmid
Consultant
2014 © Trivadis
AGENDA
June 24th, 2014
Lessons Learned out of a real life banking system
3
Initial
position
Requirements
and Topics
Lessons
learned
Conclusion
2014 © Trivadis
Initial position
June 24th, 2014
Lessons Learned out of a real life banking system
4
Initial
position
Requirements
and Topics
Lessons
learned
Conclusion
2014 © Trivadis
common usage
Initial and target system context
!  Automatic load out of thirdparty
systems
!  multiple times per day
!  export / import as CSV file
!  Manual load by user
!  at irregular time intervals
!  Migration load due to thirdparty
system decommissioning
!  run once
!  different volumes
June 24th, 2014
Lessons Learned out of a real life banking system
5
Web Interface
Rule Engine
Spring Batch
Thirdparty system
Thirdparty system
2014 © Trivadis
Why we used Spring Batch?
!  It was already part of the technology stack within the customers
environment - online application already based on Spring Framework
!  Exceptional permit was needed for Spring Integration because it was
shipped with Spring Batch Admin
!  There were no real (free) alternatives at that time (or at least we didn‘t
know any)
June 24th, 2014
Lessons Learned out of a real life banking system
6
2014 © Trivadis
Terminology of Spring Batch jobs
June 24th, 2014
Lessons Learned out of a real life banking system
7
Job
Job Instance
Job Execution
Step
Step Execution
*
*
*
*
*
Job Execution
Context
Step Execution
Context
*
Job Parameter
Tasklet
2014 © Trivadis
Requirements and Topics
June 24th, 2014
Lessons Learned out of a real life banking system
8
Initial
position
Requirements
and Topics
Lessons
learned
Conclusion
2014 © Trivadis
Requirement: Performance
!  parallelized on multiple threads
!  order of execution matters (in case of partitioning)
!  number of threads can be changed before or after job execution
June 24th, 2014
Lessons Learned out of a real life banking system
9
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Reprocess failed items
!  we do not stop job in case of an error
!  rerunning a job processes failed items (only)
!  process state of item therefore needs to be maintained
June 24th, 2014
Lessons Learned out of a real life banking system
10
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Summary mail
!  write a detailed execution log that contains
!  Exceptions
!  messages out of the Rule Engine
!  aggregate to summary
!  Number of errors, warnings, etc.
!  worst status level
!  send summary to submitter and operator
June 24th, 2014
Lessons Learned out of a real life banking system
11
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Gather detailed job information
!  rerun failed single item in trace mode
!  collect diagnostic information out of the Rule Engine
June 24th, 2014
Lessons Learned out of a real life banking system
12
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Trigger jobs
!  periodically
!  either fixed delay or fixed rate
!  on event
!  e.g. new data arrived in database
June 24th, 2014
Lessons Learned out of a real life banking system
13
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Control load
!  prevent too many jobs in parallel
!  conditions might prevent job execution
!  requests should survive system shutdown
June 24th, 2014
Lessons Learned out of a real life banking system
14
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Deactivate jobs
!  deactivate job execution
!  set job execution on hold
June 24th, 2014
Lessons Learned out of a real life banking system
15
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirement: Inter-job dependencies
!  finished jobs might trigger dependencies
June 24th, 2014
Lessons Learned out of a real life banking system
16
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
2014 © Trivadis
Requirements grouped into five different topics
June 24th, 2014
Lessons Learned out of a real life banking system
17
Control load Deactivate jobs
Inter-job
dependencies
Trigger jobs
Reprocess
failed items
Gather detailed
job information
Summary mailPerformance
Sourcing
Job Control
Error
Handling
Monitoring & TracingPartitioning
2014 © Trivadis
Lessons learned
June 24th, 2014
Lessons Learned out of a real life banking system
18
Initial
position
Requirements
and Topics
Lessons
learned
Conclusion
2014 © Trivadis
Topics we will cover
June 24th, 2014
Lessons Learned out of a real life banking system
19
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Sourcing
June 24th, 2014
Lessons Learned out of a real life banking system
20
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Load data into staging table
June 24th, 2014
Lessons Learned out of a real life banking system
21
CAT_ID | PERSON_ID | AMOUNT | CURRENCY | VALID_FORM | LAST_CHANGE|
310 | 2908 | 200000 | USD | 03.12.2013 | 02.02.2013 |
310 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
311 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
PARTITION LINE TYPE STATE FIELD01 FIELD02 FIELD03 FIELD04
PT_000122 171 D 02 441 1804 400000 EUR
PT_000122 172 D 02 441 1002 221000 EUR
PT_000123 1 H 01 CAT_ID PERSON_ID AMOUNT CURRENCY
PT_000123 2 D 01 310 2908 200000 USD
PT_000123 3 D 01 310 1608 100000 CHF
PT_000123 4 D 01 311 1608 100000 CHF
Sourcing
2014 © Trivadis
Allows partitioning, single record execution
!  Partitioning out of the box
June 24th, 2014
Lessons Learned out of a real life banking system
22
PARTITION LINE TYPE STATE FIELD01 FIELD02 FIELD03 FIELD04
PT_000123 1 H 01 CAT_ID PERSON_ID AMOUNT CURRENCY
PT_000123 2 D 01 310 2908 200000 USD
PT_000123 3 D 01 310 1410 100000 CHF
SELECT * FROM LOAD
WHERE PARTITION =‘PT_000123’
AND LINE BETWEEN 0 AND 99;
SELECT * FROM LOAD
WHERE PARTITION =‘PT_000123’
AND STATE = ‘01’
!  Reexcution of failed records
!  Execution of single record
SELECT * FROM LOAD
WHERE PARTITION =‘PT_000123’
AND LINE = 8
Sourcing
2014 © Trivadis
Job Control
June 24th, 2014
Lessons Learned out of a real life banking system
23
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Trigger
Simplest way of triggering a job
June 24th, 2014
Lessons Learned out of a real life banking system
24
0 0/5 * * * ? Spring Batch
(SimpleJobLauncher)
job-requests
Job Control
<int:inbound-channel-adapter method="create" channel="job-requests"
ref="requestFactory">
<int:poller cron="0 0/5 * * * ?" />
</int:inbound-channel-adapter>
Request Factory
<int:inbound-channel-adapter method="create" channel="job-requests"
ref="requestFactory">
<int:poller fixed-rate="300000"/>
</int:inbound-channel-adapter>
!  Or even simpler (PeriodicTrigger)
!  Define polling channel adapter (CronTrigger)
2014 © Trivadis
Persist job launch requests into database
June 24th, 2014
Lessons Learned out of a real life banking system
25
job launch
request
job-
requests
Data import job
(database)
Periodic jobs 0 0/5 * * * ?
*JobQueueMessageHandlerjob queue
*JobLaunchingMessageHandler
update status
save job dependencies
Guard
verification *JobLauncher
Job Control
2014 © Trivadis
Partitioning
June 24th, 2014
Lessons Learned out of a real life banking system
26
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Performance
June 24th, 2014
Lessons Learned out of a real life banking system
27
Type Local/Remote Description
Multi-threaded Step Local A step is multithreaded (TaskExecutor)
Parallel Steps Local Executes steps in parallel using multithreading
Partitioning Step
Local
Remote
Partitions data and splits up processing
Remote Chunking Remote Distributed chunk processing to remote nodes
Partitioning
2014 © Trivadis
Partitioning overview
June 24th, 2014
Lessons Learned out of a real life banking system
28
Job
Master
Step
Step
Slave
Slave
Slave
Slave
Slave
Partitioning
2014 © Trivadis
Partitioning detail
June 24th, 2014
Lessons Learned out of a real life banking system
29
StepScopes
Master
Slave [1]
Slave [2]
Slave [3]
Slave [4]
Slave [0]
Execution
Context [1]
Execution
Context [2]
Execution
Context [3]
Execution
Context [4]
Execution
Context [0]
rowId % 5
Partitioning
PartnerId
HASH %5
2014 © Trivadis
Characteristics of data
There might be dependencies between records. The order of execution
matters at some point.
June 24th, 2014
Lessons Learned out of a real life banking system
30
CAT_ID | PERSON_ID | AMOUNT | CURRENCY | VALID_FORM | LAST_CHANGE|
310 | 2908 | 200000 | USD | 03.12.2013 | 02.02.2013 |
310 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
311 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
312 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
313 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
310 | 1410 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
390 | 1108 | 100000 | CHF | 03.12.2013 | 02.01.2013 |
310 | 2908 | 500000 | USD | 04.12.2013 | 03.02.2013 |
Partitioning
Insert
Update
Read
Write
Process / Write
2014 © Trivadis
Partitioning detail – Spring Batch Admin
June 24th, 2014
Lessons Learned out of a real life banking system
31
Partitioning
2014 © Trivadis
Performance – Reader / Processor / Writer
June 24th, 2014
Lessons Learned out of a real life banking system
32
Open
Transaction
Begin Step
Commit
Transaction
ItemReader
Item read()
ItemProcessor
Process(Item)
ItemWriter
Write(List<Item>)
Finish Step
Rollback
Transaction
RuntimeException RuntimeExceptionRuntimeException
Partitioning
For each item For each item
2014 © Trivadis
Performance
June 24th, 2014
Lessons Learned out of a real life banking system
33
No error Error on each item
•  ~ 22 sec
•  0 Rollbacks
•  ~ 50 sec
•  1‘100 Rollbacks
•  5‘500 Filter
•  1‘000 Write Skips
Partitioning
2014 © Trivadis
Error Handling
June 24th, 2014
Lessons Learned out of a real life banking system
34
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Restartability
June 24th, 2014
Lessons Learned out of a real life banking system
35
Job 1
Instance 1
Execution 1
Job 1
Instance 1
Execution 2
read
new/error
read
new/error
Error
Handling
regular start restart
2014 © Trivadis
Restartability configuration
June 24th, 2014
Lessons Learned out of a real life banking system
36
Error
Handling
Job
Step
initialization
Step
process
Step
finalize
initial (failed) execution
Job
Step
initialization
Step
process
Step
finalize
restarted execution
Execution
Context
cleanup
serialized
context
2014 © Trivadis
Item based error handling
June 24th, 2014
Lessons Learned out of a real life banking system
37
Feature When? What? Where?
Skip
For nonfatal
exceptions
Keeps processing for an
incorrect item
Chunk-oriented step
Retry
For transient
exceptions
Makes new attemps on an
operation
Chunk-oriented step,
application code
Error
Handling
2014 © Trivadis
Monitoring
June 24th, 2014
Lessons Learned out of a real life banking system
38
Error
Handling
Monitoring &
Tracing
Job ControlSourcingPartitioning
depends on
depends on
depends on
firing trigger
supervising
2014 © Trivadis
Monitoring – Spring Batch Admin
June 24th, 2014
Lessons Learned out of a real life banking system
39
Monitoring &
Tracing
2014 © Trivadis
Monitoring – logging to a database
June 24th, 2014
Lessons Learned out of a real life banking system
40
Step
Read
Process
Write
LoggerService
@Transactional(propagation =
Propagation.REQUIRES_NEW)
2 calls on error
Listener
Before
OnSkip
[WARN]
OnError
[ERROR]
After
[INFO]
Monitoring &
Tracing
2014 © Trivadis
Monitoring - Mail
June 24th, 2014
Lessons Learned out of a real life banking system
41
Step
ReadProcessWrite
Job
FAILED
Error MailOK Mail
Monitoring &
Tracing
2014 © Trivadis
Tracing – Explain plan
June 24th, 2014
Lessons Learned out of a real life banking system
42
Step
ReadProcessWrite
Partitioner
1 Record
Reader
1 Record
Processor
Debug mode
Step
…
Writer
does nothing
Operator
explicit job start
Monitoring &
Tracing
2014 © Trivadis
Monitoring / Tracing summary
June 24th, 2014
Lessons Learned out of a real life banking system
43
Mail
OK/ERROR
Mail
ERROR
UI
Log
Spring Batch
Admin
UI
Explain plan
User Operator
Monitoring &
Tracing
2014 © Trivadis
Conclusion
June 24th, 2014
Lessons Learned out of a real life banking system
44
Initial
position
Requirements
and Topics
Lessons
learned
Conclusion
2014 © Trivadis
Things to think about – Framework evaluation
!  Testability
!  Spring Batch provides lots of helpers to write JUnit tests
!  Monitoring
!  Spring Batch Admin
!  Scalability
!  Extensibility
!  Easy to write extentions (Job Launch, Guards)
!  Out of the box components
!  All 155 SE tests in the JSR-352 TCK passed (Spring Batch 3.0)
June 24th, 2014
Lessons Learned out of a real life banking system
45
2014 © Trivadis
Things to think about – Monolitic vs. Modular
Modular (1 process per job)Monolithic (single process)
June 24th, 2014
Lessons Learned out of a real life banking system
46
Spring Batch Admin,
Custom Management UI
Job A Job B Job C
Spring Batch Admin,
Custom Management UI
Job A Job B Job C
!  Integrate batch jobs into web
application (use Spring Batch
Admin)
!  Start Jobs individually on
command line (use external
scheduler)
!  Use Spring XD
2014 © Trivadis
Things to think about – Caching
June 24th, 2014
Lessons Learned out of a real life banking system
47
Job
Step
read/write
Online
Read
Write
Step
read/write
Cache Cache
2014 © Trivadis
Questions and answers ...
2013 © Trivadis
BASEL BERN BRUGG LAUSANNE ZUERICH DUESSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MUNICH STUTTGART VIENNA
Michael Beer
michael.beer@trivadis.com
+41 58 459 51 90
Raffael Schmid
raffael.schmid@trivadis.com
+41 58 459 52 34
June 24th, 2014
Lessons Learned out of a real life banking system
48

More Related Content

What's hot

OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1
vdlinh08
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tậpLuc Cao
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
Nguyen Thi Lan Phuong
 
Subnet mask vs wildcard mask
Subnet mask vs wildcard maskSubnet mask vs wildcard mask
Subnet mask vs wildcard mask
Edgardo Scrimaglia
 
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
ducmanhkthd
 
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập  và quản lý ...[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập  và quản lý ...
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
Ý Như Lê
 
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis SystemScalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Tamas K Lengyel
 
an toàn mạng
an toàn mạngan toàn mạng
an toàn mạng
cKinHong
 
Báo cáo SQL injecttion
Báo cáo SQL injecttionBáo cáo SQL injecttion
Báo cáo SQL injecttion
Duy Nguyenduc
 
Sync, async and multithreading
Sync, async and multithreadingSync, async and multithreading
Sync, async and multithreading
Tuan Chau
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Viết thuê trọn gói ZALO 0934573149
 
Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongVu Trung Kien
 
Báo cáo cuối kỳ ISA Server 2006.
Báo cáo cuối kỳ ISA Server 2006.Báo cáo cuối kỳ ISA Server 2006.
Báo cáo cuối kỳ ISA Server 2006.
Vũ Vương
 
4. listas de control de acceso
4. listas de control de acceso4. listas de control de acceso
4. listas de control de acceso
Eduardo Lange
 
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
joaomatosf_
 
Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5
SemanticWebBuilder
 
Snort it-slideshares.blogspot.com
Snort it-slideshares.blogspot.comSnort it-slideshares.blogspot.com
Snort it-slideshares.blogspot.com
phanleson
 
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
Sam Bowne
 

What's hot (20)

OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tập
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
 
Subnet mask vs wildcard mask
Subnet mask vs wildcard maskSubnet mask vs wildcard mask
Subnet mask vs wildcard mask
 
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
 
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập  và quản lý ...[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập  và quản lý ...
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
 
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis SystemScalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
 
an toàn mạng
an toàn mạngan toàn mạng
an toàn mạng
 
Báo cáo SQL injecttion
Báo cáo SQL injecttionBáo cáo SQL injecttion
Báo cáo SQL injecttion
 
Sync, async and multithreading
Sync, async and multithreadingSync, async and multithreading
Sync, async and multithreading
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
 
Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chong
 
Báo cáo cuối kỳ ISA Server 2006.
Báo cáo cuối kỳ ISA Server 2006.Báo cáo cuối kỳ ISA Server 2006.
Báo cáo cuối kỳ ISA Server 2006.
 
4. listas de control de acceso
4. listas de control de acceso4. listas de control de acceso
4. listas de control de acceso
 
Hadoop
HadoopHadoop
Hadoop
 
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
 
Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5
 
Snort it-slideshares.blogspot.com
Snort it-slideshares.blogspot.comSnort it-slideshares.blogspot.com
Snort it-slideshares.blogspot.com
 
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
CNIT 128: 7. Attacking Android Applications (Part 1 of 3)
 
firewall
firewallfirewall
firewall
 

Viewers also liked

Spring batch for large enterprises operations
Spring batch for large enterprises operations Spring batch for large enterprises operations
Spring batch for large enterprises operations
Ignasi González
 
Spark For Faster Batch Processing
Spark For Faster Batch ProcessingSpark For Faster Batch Processing
Spark For Faster Batch Processing
Edureka!
 
Comparison of spring and other frameworks.!
Comparison of spring and other frameworks.!Comparison of spring and other frameworks.!
Comparison of spring and other frameworks.!
Sibu Stephen
 
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
MongoDB
 
Building large scale, job processing systems with Scala Akka Actor framework
Building large scale, job processing systems with Scala Akka Actor frameworkBuilding large scale, job processing systems with Scala Akka Actor framework
Building large scale, job processing systems with Scala Akka Actor framework
Vignesh Sukumar
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
Raffael Schmid
 
Developing real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and KafkaDeveloping real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and Kafka
marius_bogoevici
 

Viewers also liked (7)

Spring batch for large enterprises operations
Spring batch for large enterprises operations Spring batch for large enterprises operations
Spring batch for large enterprises operations
 
Spark For Faster Batch Processing
Spark For Faster Batch ProcessingSpark For Faster Batch Processing
Spark For Faster Batch Processing
 
Comparison of spring and other frameworks.!
Comparison of spring and other frameworks.!Comparison of spring and other frameworks.!
Comparison of spring and other frameworks.!
 
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
 
Building large scale, job processing systems with Scala Akka Actor framework
Building large scale, job processing systems with Scala Akka Actor frameworkBuilding large scale, job processing systems with Scala Akka Actor framework
Building large scale, job processing systems with Scala Akka Actor framework
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
 
Developing real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and KafkaDeveloping real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and Kafka
 

Similar to Spring Batch - Lessons Learned out of a real life banking system.

Elevate Your Reports Dashboards to New Heights
Elevate Your Reports Dashboards to New HeightsElevate Your Reports Dashboards to New Heights
Elevate Your Reports Dashboards to New Heights
Adaptive Insights
 
Predictive Intelligence
Predictive IntelligencePredictive Intelligence
Predictive Intelligence
CharlesSayers.com
 
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
COSMIC - Common Software Measurement International Consortium
 
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
CA Technologies
 
8 steps to requirements success
8 steps to requirements success8 steps to requirements success
8 steps to requirements success
Steve Orr
 
Spur Infrastructure Performance With Proactive IT Monitoring
Spur Infrastructure Performance With Proactive IT MonitoringSpur Infrastructure Performance With Proactive IT Monitoring
Spur Infrastructure Performance With Proactive IT Monitoring
CA Technologies
 
Simplify BPM with Decision Management
Simplify BPM with Decision ManagementSimplify BPM with Decision Management
Simplify BPM with Decision Management
Decision Management Solutions
 
Automating your Microsoft® World - Part 2: Cloud and Application Management B...
Automating your Microsoft® World - Part 2: Cloud and Application Management B...Automating your Microsoft® World - Part 2: Cloud and Application Management B...
Automating your Microsoft® World - Part 2: Cloud and Application Management B...
Solarwinds N-able
 
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
Nesma
 
Measuring the functional size of mobile apps with COSMIC FP
Measuring the functional size of mobile apps with COSMIC FPMeasuring the functional size of mobile apps with COSMIC FP
Measuring the functional size of mobile apps with COSMIC FP
Harold van Heeringen
 
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
EDB
 
From Rules to Decisions, Harvesting and Governance
From Rules to Decisions, Harvesting and Governance From Rules to Decisions, Harvesting and Governance
From Rules to Decisions, Harvesting and Governance
Prolifics
 
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/AprisoPLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
CADWARE-TECHNOLOGY
 
Case Study: Worry Free Application Deployments...Really!
Case Study: Worry Free Application Deployments...Really!Case Study: Worry Free Application Deployments...Really!
Case Study: Worry Free Application Deployments...Really!
CA Technologies
 
CIMA Dublin MIAGEN on FP&A Best Practices June '15
CIMA Dublin MIAGEN on FP&A Best Practices June '15CIMA Dublin MIAGEN on FP&A Best Practices June '15
CIMA Dublin MIAGEN on FP&A Best Practices June '15
MIAGEN
 
CARES: Computer-Aided Requirements Engineering Software
CARES: Computer-Aided Requirements Engineering SoftwareCARES: Computer-Aided Requirements Engineering Software
CARES: Computer-Aided Requirements Engineering Software
Institute of Information Systems (HES-SO)
 
Managing the Flexible Workforce of the Future [San Mateo]
Managing the Flexible Workforce of the Future [San Mateo]Managing the Flexible Workforce of the Future [San Mateo]
Managing the Flexible Workforce of the Future [San Mateo]
SAP Ariba
 
1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib
MartineMccracken314
 
1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib
AbbyWhyte974
 
How to Build a Recruiting System You Can LOVE
How to Build a Recruiting System You Can LOVEHow to Build a Recruiting System You Can LOVE
How to Build a Recruiting System You Can LOVE
3DResultsLLC
 

Similar to Spring Batch - Lessons Learned out of a real life banking system. (20)

Elevate Your Reports Dashboards to New Heights
Elevate Your Reports Dashboards to New HeightsElevate Your Reports Dashboards to New Heights
Elevate Your Reports Dashboards to New Heights
 
Predictive Intelligence
Predictive IntelligencePredictive Intelligence
Predictive Intelligence
 
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
 
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
Mobility, Self Service and Knowledge Management: A Modern Approach to End-Use...
 
8 steps to requirements success
8 steps to requirements success8 steps to requirements success
8 steps to requirements success
 
Spur Infrastructure Performance With Proactive IT Monitoring
Spur Infrastructure Performance With Proactive IT MonitoringSpur Infrastructure Performance With Proactive IT Monitoring
Spur Infrastructure Performance With Proactive IT Monitoring
 
Simplify BPM with Decision Management
Simplify BPM with Decision ManagementSimplify BPM with Decision Management
Simplify BPM with Decision Management
 
Automating your Microsoft® World - Part 2: Cloud and Application Management B...
Automating your Microsoft® World - Part 2: Cloud and Application Management B...Automating your Microsoft® World - Part 2: Cloud and Application Management B...
Automating your Microsoft® World - Part 2: Cloud and Application Management B...
 
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...Iwsm2014   measuring the functional size of mobile apps with cosmic (harold v...
Iwsm2014 measuring the functional size of mobile apps with cosmic (harold v...
 
Measuring the functional size of mobile apps with COSMIC FP
Measuring the functional size of mobile apps with COSMIC FPMeasuring the functional size of mobile apps with COSMIC FP
Measuring the functional size of mobile apps with COSMIC FP
 
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
Migrations, Health Checks, and Support Experiences - Postgres from the Servic...
 
From Rules to Decisions, Harvesting and Governance
From Rules to Decisions, Harvesting and Governance From Rules to Decisions, Harvesting and Governance
From Rules to Decisions, Harvesting and Governance
 
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/AprisoPLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
PLM-Summit 2014 | 8-9 abril | Apresentação 13/14 | Luiz Egreja | DS/Apriso
 
Case Study: Worry Free Application Deployments...Really!
Case Study: Worry Free Application Deployments...Really!Case Study: Worry Free Application Deployments...Really!
Case Study: Worry Free Application Deployments...Really!
 
CIMA Dublin MIAGEN on FP&A Best Practices June '15
CIMA Dublin MIAGEN on FP&A Best Practices June '15CIMA Dublin MIAGEN on FP&A Best Practices June '15
CIMA Dublin MIAGEN on FP&A Best Practices June '15
 
CARES: Computer-Aided Requirements Engineering Software
CARES: Computer-Aided Requirements Engineering SoftwareCARES: Computer-Aided Requirements Engineering Software
CARES: Computer-Aided Requirements Engineering Software
 
Managing the Flexible Workforce of the Future [San Mateo]
Managing the Flexible Workforce of the Future [San Mateo]Managing the Flexible Workforce of the Future [San Mateo]
Managing the Flexible Workforce of the Future [San Mateo]
 
1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib
 
1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib1) Advantage of roll-back could be accurate audit will be possib
1) Advantage of roll-back could be accurate audit will be possib
 
How to Build a Recruiting System You Can LOVE
How to Build a Recruiting System You Can LOVEHow to Build a Recruiting System You Can LOVE
How to Build a Recruiting System You Can LOVE
 

Recently uploaded

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 

Spring Batch - Lessons Learned out of a real life banking system.

  • 1. 2014 © Trivadis BASEL BERN BRUGG LAUSANNE ZUERICH DUESSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MUNICH STUTTGART VIENNA 2014 © Trivadis Spring Batch Lessons Learned out of a real life banking system. Michael Beer Senior Consultant Raffael Schmid Consultant June 24th, 2014 Lessons Learned out of a real life banking system 1
  • 2. 2014 © Trivadis About us Michael Beer Senior Consultant June 24th, 2014 Lessons Learned out of a real life banking system 2 !  Trivadis since 2001 !  design and development of web based applications !  part of the Trivadis APM team !  Trivadis since 2010 !  design and development of web based applications !  interested in performance related things on the JVM Raffael Schmid Consultant
  • 3. 2014 © Trivadis AGENDA June 24th, 2014 Lessons Learned out of a real life banking system 3 Initial position Requirements and Topics Lessons learned Conclusion
  • 4. 2014 © Trivadis Initial position June 24th, 2014 Lessons Learned out of a real life banking system 4 Initial position Requirements and Topics Lessons learned Conclusion
  • 5. 2014 © Trivadis common usage Initial and target system context !  Automatic load out of thirdparty systems !  multiple times per day !  export / import as CSV file !  Manual load by user !  at irregular time intervals !  Migration load due to thirdparty system decommissioning !  run once !  different volumes June 24th, 2014 Lessons Learned out of a real life banking system 5 Web Interface Rule Engine Spring Batch Thirdparty system Thirdparty system
  • 6. 2014 © Trivadis Why we used Spring Batch? !  It was already part of the technology stack within the customers environment - online application already based on Spring Framework !  Exceptional permit was needed for Spring Integration because it was shipped with Spring Batch Admin !  There were no real (free) alternatives at that time (or at least we didn‘t know any) June 24th, 2014 Lessons Learned out of a real life banking system 6
  • 7. 2014 © Trivadis Terminology of Spring Batch jobs June 24th, 2014 Lessons Learned out of a real life banking system 7 Job Job Instance Job Execution Step Step Execution * * * * * Job Execution Context Step Execution Context * Job Parameter Tasklet
  • 8. 2014 © Trivadis Requirements and Topics June 24th, 2014 Lessons Learned out of a real life banking system 8 Initial position Requirements and Topics Lessons learned Conclusion
  • 9. 2014 © Trivadis Requirement: Performance !  parallelized on multiple threads !  order of execution matters (in case of partitioning) !  number of threads can be changed before or after job execution June 24th, 2014 Lessons Learned out of a real life banking system 9 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 10. 2014 © Trivadis Requirement: Reprocess failed items !  we do not stop job in case of an error !  rerunning a job processes failed items (only) !  process state of item therefore needs to be maintained June 24th, 2014 Lessons Learned out of a real life banking system 10 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 11. 2014 © Trivadis Requirement: Summary mail !  write a detailed execution log that contains !  Exceptions !  messages out of the Rule Engine !  aggregate to summary !  Number of errors, warnings, etc. !  worst status level !  send summary to submitter and operator June 24th, 2014 Lessons Learned out of a real life banking system 11 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 12. 2014 © Trivadis Requirement: Gather detailed job information !  rerun failed single item in trace mode !  collect diagnostic information out of the Rule Engine June 24th, 2014 Lessons Learned out of a real life banking system 12 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 13. 2014 © Trivadis Requirement: Trigger jobs !  periodically !  either fixed delay or fixed rate !  on event !  e.g. new data arrived in database June 24th, 2014 Lessons Learned out of a real life banking system 13 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 14. 2014 © Trivadis Requirement: Control load !  prevent too many jobs in parallel !  conditions might prevent job execution !  requests should survive system shutdown June 24th, 2014 Lessons Learned out of a real life banking system 14 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 15. 2014 © Trivadis Requirement: Deactivate jobs !  deactivate job execution !  set job execution on hold June 24th, 2014 Lessons Learned out of a real life banking system 15 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 16. 2014 © Trivadis Requirement: Inter-job dependencies !  finished jobs might trigger dependencies June 24th, 2014 Lessons Learned out of a real life banking system 16 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance
  • 17. 2014 © Trivadis Requirements grouped into five different topics June 24th, 2014 Lessons Learned out of a real life banking system 17 Control load Deactivate jobs Inter-job dependencies Trigger jobs Reprocess failed items Gather detailed job information Summary mailPerformance Sourcing Job Control Error Handling Monitoring & TracingPartitioning
  • 18. 2014 © Trivadis Lessons learned June 24th, 2014 Lessons Learned out of a real life banking system 18 Initial position Requirements and Topics Lessons learned Conclusion
  • 19. 2014 © Trivadis Topics we will cover June 24th, 2014 Lessons Learned out of a real life banking system 19 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 20. 2014 © Trivadis Sourcing June 24th, 2014 Lessons Learned out of a real life banking system 20 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 21. 2014 © Trivadis Load data into staging table June 24th, 2014 Lessons Learned out of a real life banking system 21 CAT_ID | PERSON_ID | AMOUNT | CURRENCY | VALID_FORM | LAST_CHANGE| 310 | 2908 | 200000 | USD | 03.12.2013 | 02.02.2013 | 310 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 311 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | PARTITION LINE TYPE STATE FIELD01 FIELD02 FIELD03 FIELD04 PT_000122 171 D 02 441 1804 400000 EUR PT_000122 172 D 02 441 1002 221000 EUR PT_000123 1 H 01 CAT_ID PERSON_ID AMOUNT CURRENCY PT_000123 2 D 01 310 2908 200000 USD PT_000123 3 D 01 310 1608 100000 CHF PT_000123 4 D 01 311 1608 100000 CHF Sourcing
  • 22. 2014 © Trivadis Allows partitioning, single record execution !  Partitioning out of the box June 24th, 2014 Lessons Learned out of a real life banking system 22 PARTITION LINE TYPE STATE FIELD01 FIELD02 FIELD03 FIELD04 PT_000123 1 H 01 CAT_ID PERSON_ID AMOUNT CURRENCY PT_000123 2 D 01 310 2908 200000 USD PT_000123 3 D 01 310 1410 100000 CHF SELECT * FROM LOAD WHERE PARTITION =‘PT_000123’ AND LINE BETWEEN 0 AND 99; SELECT * FROM LOAD WHERE PARTITION =‘PT_000123’ AND STATE = ‘01’ !  Reexcution of failed records !  Execution of single record SELECT * FROM LOAD WHERE PARTITION =‘PT_000123’ AND LINE = 8 Sourcing
  • 23. 2014 © Trivadis Job Control June 24th, 2014 Lessons Learned out of a real life banking system 23 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 24. 2014 © Trivadis Trigger Simplest way of triggering a job June 24th, 2014 Lessons Learned out of a real life banking system 24 0 0/5 * * * ? Spring Batch (SimpleJobLauncher) job-requests Job Control <int:inbound-channel-adapter method="create" channel="job-requests" ref="requestFactory"> <int:poller cron="0 0/5 * * * ?" /> </int:inbound-channel-adapter> Request Factory <int:inbound-channel-adapter method="create" channel="job-requests" ref="requestFactory"> <int:poller fixed-rate="300000"/> </int:inbound-channel-adapter> !  Or even simpler (PeriodicTrigger) !  Define polling channel adapter (CronTrigger)
  • 25. 2014 © Trivadis Persist job launch requests into database June 24th, 2014 Lessons Learned out of a real life banking system 25 job launch request job- requests Data import job (database) Periodic jobs 0 0/5 * * * ? *JobQueueMessageHandlerjob queue *JobLaunchingMessageHandler update status save job dependencies Guard verification *JobLauncher Job Control
  • 26. 2014 © Trivadis Partitioning June 24th, 2014 Lessons Learned out of a real life banking system 26 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 27. 2014 © Trivadis Performance June 24th, 2014 Lessons Learned out of a real life banking system 27 Type Local/Remote Description Multi-threaded Step Local A step is multithreaded (TaskExecutor) Parallel Steps Local Executes steps in parallel using multithreading Partitioning Step Local Remote Partitions data and splits up processing Remote Chunking Remote Distributed chunk processing to remote nodes Partitioning
  • 28. 2014 © Trivadis Partitioning overview June 24th, 2014 Lessons Learned out of a real life banking system 28 Job Master Step Step Slave Slave Slave Slave Slave Partitioning
  • 29. 2014 © Trivadis Partitioning detail June 24th, 2014 Lessons Learned out of a real life banking system 29 StepScopes Master Slave [1] Slave [2] Slave [3] Slave [4] Slave [0] Execution Context [1] Execution Context [2] Execution Context [3] Execution Context [4] Execution Context [0] rowId % 5 Partitioning PartnerId HASH %5
  • 30. 2014 © Trivadis Characteristics of data There might be dependencies between records. The order of execution matters at some point. June 24th, 2014 Lessons Learned out of a real life banking system 30 CAT_ID | PERSON_ID | AMOUNT | CURRENCY | VALID_FORM | LAST_CHANGE| 310 | 2908 | 200000 | USD | 03.12.2013 | 02.02.2013 | 310 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 311 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 312 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 313 | 1608 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 310 | 1410 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 390 | 1108 | 100000 | CHF | 03.12.2013 | 02.01.2013 | 310 | 2908 | 500000 | USD | 04.12.2013 | 03.02.2013 | Partitioning Insert Update Read Write Process / Write
  • 31. 2014 © Trivadis Partitioning detail – Spring Batch Admin June 24th, 2014 Lessons Learned out of a real life banking system 31 Partitioning
  • 32. 2014 © Trivadis Performance – Reader / Processor / Writer June 24th, 2014 Lessons Learned out of a real life banking system 32 Open Transaction Begin Step Commit Transaction ItemReader Item read() ItemProcessor Process(Item) ItemWriter Write(List<Item>) Finish Step Rollback Transaction RuntimeException RuntimeExceptionRuntimeException Partitioning For each item For each item
  • 33. 2014 © Trivadis Performance June 24th, 2014 Lessons Learned out of a real life banking system 33 No error Error on each item •  ~ 22 sec •  0 Rollbacks •  ~ 50 sec •  1‘100 Rollbacks •  5‘500 Filter •  1‘000 Write Skips Partitioning
  • 34. 2014 © Trivadis Error Handling June 24th, 2014 Lessons Learned out of a real life banking system 34 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 35. 2014 © Trivadis Restartability June 24th, 2014 Lessons Learned out of a real life banking system 35 Job 1 Instance 1 Execution 1 Job 1 Instance 1 Execution 2 read new/error read new/error Error Handling regular start restart
  • 36. 2014 © Trivadis Restartability configuration June 24th, 2014 Lessons Learned out of a real life banking system 36 Error Handling Job Step initialization Step process Step finalize initial (failed) execution Job Step initialization Step process Step finalize restarted execution Execution Context cleanup serialized context
  • 37. 2014 © Trivadis Item based error handling June 24th, 2014 Lessons Learned out of a real life banking system 37 Feature When? What? Where? Skip For nonfatal exceptions Keeps processing for an incorrect item Chunk-oriented step Retry For transient exceptions Makes new attemps on an operation Chunk-oriented step, application code Error Handling
  • 38. 2014 © Trivadis Monitoring June 24th, 2014 Lessons Learned out of a real life banking system 38 Error Handling Monitoring & Tracing Job ControlSourcingPartitioning depends on depends on depends on firing trigger supervising
  • 39. 2014 © Trivadis Monitoring – Spring Batch Admin June 24th, 2014 Lessons Learned out of a real life banking system 39 Monitoring & Tracing
  • 40. 2014 © Trivadis Monitoring – logging to a database June 24th, 2014 Lessons Learned out of a real life banking system 40 Step Read Process Write LoggerService @Transactional(propagation = Propagation.REQUIRES_NEW) 2 calls on error Listener Before OnSkip [WARN] OnError [ERROR] After [INFO] Monitoring & Tracing
  • 41. 2014 © Trivadis Monitoring - Mail June 24th, 2014 Lessons Learned out of a real life banking system 41 Step ReadProcessWrite Job FAILED Error MailOK Mail Monitoring & Tracing
  • 42. 2014 © Trivadis Tracing – Explain plan June 24th, 2014 Lessons Learned out of a real life banking system 42 Step ReadProcessWrite Partitioner 1 Record Reader 1 Record Processor Debug mode Step … Writer does nothing Operator explicit job start Monitoring & Tracing
  • 43. 2014 © Trivadis Monitoring / Tracing summary June 24th, 2014 Lessons Learned out of a real life banking system 43 Mail OK/ERROR Mail ERROR UI Log Spring Batch Admin UI Explain plan User Operator Monitoring & Tracing
  • 44. 2014 © Trivadis Conclusion June 24th, 2014 Lessons Learned out of a real life banking system 44 Initial position Requirements and Topics Lessons learned Conclusion
  • 45. 2014 © Trivadis Things to think about – Framework evaluation !  Testability !  Spring Batch provides lots of helpers to write JUnit tests !  Monitoring !  Spring Batch Admin !  Scalability !  Extensibility !  Easy to write extentions (Job Launch, Guards) !  Out of the box components !  All 155 SE tests in the JSR-352 TCK passed (Spring Batch 3.0) June 24th, 2014 Lessons Learned out of a real life banking system 45
  • 46. 2014 © Trivadis Things to think about – Monolitic vs. Modular Modular (1 process per job)Monolithic (single process) June 24th, 2014 Lessons Learned out of a real life banking system 46 Spring Batch Admin, Custom Management UI Job A Job B Job C Spring Batch Admin, Custom Management UI Job A Job B Job C !  Integrate batch jobs into web application (use Spring Batch Admin) !  Start Jobs individually on command line (use external scheduler) !  Use Spring XD
  • 47. 2014 © Trivadis Things to think about – Caching June 24th, 2014 Lessons Learned out of a real life banking system 47 Job Step read/write Online Read Write Step read/write Cache Cache
  • 48. 2014 © Trivadis Questions and answers ... 2013 © Trivadis BASEL BERN BRUGG LAUSANNE ZUERICH DUESSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MUNICH STUTTGART VIENNA Michael Beer michael.beer@trivadis.com +41 58 459 51 90 Raffael Schmid raffael.schmid@trivadis.com +41 58 459 52 34 June 24th, 2014 Lessons Learned out of a real life banking system 48