반응형
spring batch란?
batch는 일괄처리를 뜻한다. Spring Batch는 Spring의 특성을 그대로 가져왔다. DI, AOP, 서비스 추상화 등 Spring FrameWork의 3대 요소 모두 사용할 수 있다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공한다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공한다.
배치 어플리케이션 조건
- 대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 있어야한다.
- 자동화 : 심각한 문제 해결을 제외하고는 사용자 개입없이 실행되어야 한다.
- 견고성 : 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 한다.
- 신뢰성 : 무엇이 잘못되었는지 추적할 수 있어야한다.(로깅, 알림)
- 성능 : 지정한 시간안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방행하지 않도록 수행되어야한다.
spring batch용어
job
- 배치처리 과정을 하나의 단위로 만들어 놓은 객체. 배치처리 과정에 있어 전체 계층 최상단에 위치하고 있다.
jobInstance
- Job의 실행 단위를 나타낸다. Job을 실행시키게 되면 하나의 JobInstance가 생성된다.
JobParameters
- JobInstance 구별 외에도 JobInstance에 전달되는 매개 변수 역할을 한다.
JobExecution
- JobExecution은 JobInstance의 실행 시도에 대한 객체이다. JobExcution는 JobInstance실행에 대한 상태, 시작시간, 종료시간, 생성시간 등의 정보를 담고 있다.
Step
- Step은 Job의 배치처리를 정의하고 순차적인 단계를 캡슐화한다. Job은 최소한 1개 이상의 Step을 가져야 하며 Job의 실제 일괄 처리를 제어하는 모든 정보가 들어있다.
ExecutionContext
- ExecutionContext란 job에서 데이터를 공유 할 수 있는 데이터 저장소이다. Spring Batch에서 제공하는 ExecutionContext는 JobExecutionContext, StepExecutionContext 2가지 종류가 있으나 이 2가지는 지정되는 범위가 다르다. JobExecutionContext의 경우 Commit 시점에서 저장되는 반면 StepExecutionContext는 실행 사이에 저장이 된다. ExecutionContext를 통해 Step간 Data공유가 가능하며 Job 실패시 ExecutionContext를 통한 마지막 실행 값을 재구성할 수 있다.
JobRepository
- JobRepository는 위에서 말한 모든 배치 처리 정보를 담고 있는 매커니즘이다. Job이 실행되게 되면 JobRepository에 JobExecution과 StepExecution을 생성하게 되며 JobRepository에서 Execution정보들을 저장하고 조회하며 사용하게 된다.
JobLauncher
- JobLauncher는 Job과 JobParameters를 사용하여 Job을 실행하는 객체이다.
ItemReader
- ItemReader는 Step에서 Item을 읽어오는 인터페이스다.
IterWriter
- ItemWriter는 처리된 Data를 Writer할 때 사용되는 인터페이스다. Writer는 기본적으로 Item을 Chunk 단위로 묶어 처리한다.
ItemProcessor
- ItemProcessor는 Reader에서 읽어온 Item을 처리하는 역할을 담당한다. Processor는 배치를 처리하는데 필수 요소는 아니다.
Batch vs Quartz
- Quartz는 스케줄러의 역할, Batch 와 같이 대용향 데이터 배치 처리에 대한 기능을 지원하지 않는다.
참고
반응형
'프레임워크 > Spring Boot' 카테고리의 다른 글
[SpringBoot] Error. Field 'id' doesn't have a default value (0) | 2023.02.07 |
---|---|
[Spring Batch] spring batch 기본 구성요소 (0) | 2022.12.30 |
[Spring Batch] ItemReader, Jsoup을 이용하여 네이버 증권 데이터 크롤링 (1) (0) | 2022.12.28 |
[Spring Batch] itemReader, processor, Write 사용방법 (0) | 2022.11.07 |
[Spring boot] Test H2 DB설정 에러 (2) | 2022.10.08 |
댓글