📌Spring Batch란?
배치(Batch)는 일괄처리란 뜻
단발성으로 대용량의 데이터를 처리하는 어플리케이션을 배치 어플리케이션이라고 한다.
Spring Batch는 Spring의 특성을 그대로 가져왔기 때문에
DI, AOP, 서비스 추상화 등 Spring 프레임워크의 3대 요소를 모두 사용할 수 있다.
🔥 장점
- 대용량 데이터 처리에 최적화되어 고성능을 발휘한다.
- 효과적인 로깅, 통계 처리, 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다.
- 수동으로 처리하지 않도록 자동화돼있다.
- 예외사항과 비정상 동작에 대한 방어 기능이 있다.
- 스프링 부트 배치는 반복적인 작업 프로세스를 이해하면 비니지스로직에 집중할 수 있다.
🔧 구조
검정색: 외부 어플리케이션(스케쥴러, DB 등)
파란색: 어플리케이션 서비스
연두색: 개발자가 구성해야 하는 것
Run Tier
- 어플리케이션의 예약 및 시작과 관련이 있는 계층.
- 배치 작업의 시간 기반 및 상호 의존적인 스케줄링을 제공할뿐만 아니라 병렬 처리 기능을 제공.
Job Tier
- 배치 작업의 전체 실행을 담당.
- 배치 단계를 순차적으로 실행하여 모든 단계가 올바른 상태에 있고 모든 적절한 정책이 시행 되도록하는 역할.
Application Tier
- 프로그램을 실행하는 데 필요한 구성 요소가 포함됨.
- 이 계층에는 요구된 배치의 기능을 처리하고 Tasklet 실행에 대한 정책을 시행하는 특별한 Tasklet이 포함됨.
Data Tier
- 데이터베이스, 파일 또는 대기열을 포함 할 수있는 물리적 데이터 소스와의 연결을 제공.
🔧 spring batch 모듈
스프링 배치는 layer 구조로 조립된 세 개의 tier로 이뤄져 있다.
Core 모듈
- batch job을 실행, 모니터링, 관리하는 API로 구성됨.
- Job,Step, JobLaucher 등의 클래스가 여기에 소속된다.
Infrastructure 모듈
- 스프링배치 프레임웍의 실행 흐름의 틀이 되는 코드를 제공.
- ItemReader, ItemWriter 등의 클래스가 이에 속한다.
Application
- 최종개발자가 설정으로 Core 모듈의 클래스를 사용하고, Infrastructure 모듈의 인터페이스를 구현해서 개발하게 된다.
- Core와 Infrastructure 모듈은 Spring framework core에 의존적이고, Core는 Infrastructure에 의존적이다.
이런 구조는 어플리케이션 개발자는 업무로직의 구현에만 집중하고 공통적인 기반기술은 프레임웍이 담당하게 한다.