공부/소소한 개발
스프링 배치
무는빼주세요
2022. 4. 23. 16:38
배치 == 일괄 처리 (많은 양의 데이터를 정해진 시간에 한꺼번에 처리하는 것.)
-
실시간성의 보장 X
-
데이터를 한꺼번에 처리할 수 있을 때
-
무거운 처리를 할 때
-
한정된 데이터를 다룰 때 사용
-
모든 데이터셋을 읽은 후 처리
-
주기적으로 실행되는 작업
-
처리속도보다는 처리량에 포커스
스프링 배치 : 배치와 관련된 어플리케이션 제작 편의를 위한 스프링 프레임워크
스프링 배치 구조

- Run Tier: 어플리케이션의 예약 및 시작과 관련. 배치 작업의 시간 및 상호 의존적인 스케줄링, 병렬 처리 기능 제공
- Job Tier: 배치 작업의 전체 실행을 담당. 배치 단계를 순차적으로 실행하여 모든 단계가 올바른 상태에 있고 모든 적절한 정책이 시행.
- Application Tier: 프로그램을 실행하는 데 필요한 구성. 요구된 배치의 기능을 처리하고 Tasklet 실행에 대한 정책을 시행하는 특별한 Tasklet이 포함.
- Data Tier: 데이터베이스, 파일 또는 대기열을 포함 할 수있는 물리적 데이터 소스와의 연결을 제공.
JOB Tier

- Job: 배치 처리 과정을 하나의 단위로 만들어 표현한 객체이고 여러 Step 인스턴스를 포함하는 컨테이너
- Step: 실직적인 배치 처리를 정의하고 제어 하는데 필요한 모든 정보가 있는 도메인 객체
- Tasklet: Step안에서 수행될 비즈니스 로직 전략의 인터페이스
- JobRepository : 배치 처리 정보를 담고있는 매커니즘입니다. Job이 실행되게 되면 JobRepository에 JobExecution과 StepExecution을 생성하게 되며 JobRepository에서 Execution 정보들을 저장하고 조회하며 사용.
- JobLauncher : Job과 JobParameters를 사용하여 Job을 실행하는 객체입니다.
Application Tier
- ItemReader : Step에서 Item을 읽어오는 인터페이스입니다. ItemReader에 대한 다양한 인터페이스가 존재하며 다양한 방법으로 Item을 읽어 올 수 있다.
- Item Processor : Reader에서 읽어온 Item을 데이터를 처리하는 역할을 하고 있다. Processor는 배치를 처리하는데 필수 요소는 아니며 Reader, Writer, Processor 를 분리하여 처리.
- ItemWriter : 처리 된 Data를 Writer 할 때 사용. Writer는 처리 결과물에 따라 Insert가 될 수도 Update가 될 수도 Queue를 사용한다면 Send가 될 수도 있다. Writer 또한 Read와 동일하게 다양한 인터페이스가 존재한다. Writer는 기본적으로 Item을 Chunk로 묶어 처리.
- ItemReader -> Item Processor -> ItemWriter
Chunk
Spring Batch에서의 Chunk란 처리 되는 커밋 row 수를 의미.
Batch 처리에서 커밋 되는 row 수라는건 chunk 단위로 Transaction을 수행하기 때문에 실패시 Chunk 단위 만큼 rollback이 되게 됩니다. 데이터 읽기, 가공, 저장의 프로세스를 가짐.
참조:
https://deeplify.dev/back-end/spring/batch-tutorial