Batch란?!
특정 작업이나 데이터를 한 번에 묶어서 처리하는 방식이나 단위를 의미한다.
Spring Batch란?
Spring Batch는 스프링에서 제공해주는 라이브러리로, 대량의 데이터 처리를 위한 프레임 워크이다.
Spring Batch는 Batch작업을 쉽게 개발 및 관리 할 수 있도록 다양한 기능과 유틸리티를 제공한다.
주된 기능으로는
- 재사용 가능성: 작업을 구성하는 컴포넌트(예: 읽기, 처리, 쓰기)를 모듈화하여 재사용할 수 있습니다.
- 트랜잭션 관리: 배치 작업 중 데이터 무결성을 유지하기 위해 트랜잭션 관리를 지원합니다.
- 작업 모니터링: 배치 작업의 실행 상태 및 결과를 모니터링할 수 있는 기능을 제공합니다.
- 일정 관리: 배치 작업을 특정 시간에 자동으로 실행할 수 있도록 스케줄링을 지원합니다.
- 성능 최적화: 대량의 데이터를 효율적으로 처리할 수 있는 다양한 기능(청크 처리, 병렬 처리 등)을 제공합니다
주요 구성 요소
- Job: 배치 작업의 단위로, 여러 단계(Step)로 구성될 수 있습니다.
- JobInstance: Job의 실행의 단위를 나타냅니다. Job을 실행시키게 되면 하나의 JobInstance가 생성되게 됩니다. 예를들어 1월 1일 실행, 1월 2일 실행을 하게 되면 각각의 JobInstance가 생성되며 1월 1일 실행한 JobInstance가 실패하여 다시 실행을 시키더라도 이 JobInstance는 1월 1일에 대한 데이터만 처리하게 됩니다.
- Step: Job을 구성하는 단계로, 각 단계는 데이터 읽기, 처리, 쓰기 작업을 포함할 수 있습니다.
- ItemReader: 데이터를 읽어오는 컴포넌트.
- ItemProcessor: 읽어온 데이터를 처리하는 컴포넌트.
- ItemWriter: 처리된 데이터를 저장하는 컴포넌트.
스프링배치
- 대량의 데이터를 작업하기 위한 스프링 내부 프레임워크
- 스프링배치를 사용하지 않고 대량의 데이터를 처리할 수 있지만 스프링배치를 사용하는 것이 용의하기에 사용
- 데이터 처리 과정을 메타 데이터로 저장하여 진행 과정과 중복 처리등을 방지할 수 있다는 것이 장점
스프링 부트 및 스프링 배치는 1개의 배치 작업에 대해 프로젝트를 실행하면 자동으로 배치 작업이 가동되기 때문에 해당 과정을 막아야 한다.
application.properties
spring.batch.job.enabled=false
한개의 jop에 여러가지의 step을 넣어서 만들수 있다.
하나의 step에는 repository에서 정보를 읽어오는 reader, 읽어온 정보를 처리해줄 proccessor, 처리한 정보를 repository에 적용해주는 writer로 구성되어있다.
StepExecutionListener를 통해 step전후에 작업을 넣어 줄 수 있다.
executionContext를 사용하면 특정 키값에 truee값을 저장하여 정보가 중복되서 처리되지 않게 할 수 있다.
'Spring' 카테고리의 다른 글
Spring Batch (2) | 2024.11.20 |
---|---|
SET의 위험성! (0) | 2024.09.13 |
TestCode (0) | 2024.09.12 |
웹개발 필수지식 정리 (1) | 2024.08.28 |
JWT (0) | 2024.08.21 |