회사에서 asm,cms등을 맡아서 관리하게 되었느데 로직을 둘어보며 spring batch에 자연스럽게 궁금증이 생겨나 이번 기회를 통해 공부해볼려한다.

spring batch란?

주기적인 대규모 데이터 처리 작업을 보다 안정적으로 처리 작업하기위한 프레임워크이다.

여기사 batch란 한 무리를 의미하며, 대부분 규모가 큰것들을 말합니다. 즉 대용량의 데이터를 사용자의 인터렉션 없이 반복적이고 주기적으로 받아야 할때 예를 들어 회원들의 날마다의 신용카드이용내역을 받아 와야할때, 오늘 하루 생산량을 알아야할때 등 많은 양의 데이터를 우리가 원하는 프로세스를 거처 반복적이고 주기적으로 받을 수 있게끔 도와주는 프레임워크이다.

spring batch architecture

image.png

aplication

aplication에는 적성한 모든 배치작업과 사용자 정의 코드가 포함되어있습니다.

core

core에는 배치작업을 시작하고 제어하는 데 필요한 핵심 클래스인 job,step,joblancher,jobparameter의 구현체들이 포함되어있습니다.

infrastructure

aplication,batch core 모두 infrastructure layer에서 빌드됩고, job의 흐름과 처리를 위한 reader,procceser,writer등이 속해 있습니다.

spring batch의 핵심 도메인 언어

image.png

위 다이어그램은 스프링배치의 핵심개념을 도메인 언어로 나타낸것입니다. 보이는것처럼 job은 여러개의 setp을 가질 수 있고 step은 각각 itemReader,itemProcessor,itenWriter을 한개씩 보유하고있는걸 확인 할 수 있으며, 필요한 메타데이터는 jobRepository에 저장해서 보관을 하게 됩니다.

spring batch 등록과정