스프링 배치란?
배치작업이란?
- 스프링 배치에 대해 알아보기 전에 우선 배치가 무엇이고, 배치를 왜 사용하는 지 알아보도록 하겠습니다.
배치작업은 일괄 처리라고도 하는데, 데이터를 일괄적으로 모아서 한번에 처리하는 일련이 작업을 의미힌다. 보통 배치 작업에 대해 검색해보면, 사용자와의 상호작용없이 실행되는 일련의 자동화된 작업들을 뜻한다고 한다.
위의 배치의 간략한 의미에서 유추할 수 있는 배치작업의 특징은 다음과 같다.
- (대량의) 데이터를 처리한다.
- 일괄적(정해진 시간)으로 처리한다.
- 일련의 작업들을 자동화한다.
배치작업의 예
- 주기적으로 실행되는 크롤링 작업
- 은행 정산업무 (은행마다 점검 시간이 있는데 해당 시간에 배치작업으로 정산작업을 하지 않을까 추측해봅니다.)
- etc..
스프링 배치란?
위에서 배치작업에 대해 간략하게 알아봤는데, 그럼 스프링 배치는 배치작업을 위한 여러 편리한 기능들을 제공할거라 예상할 수 있습니다.
스프링 배치에 대한 정의는 공식문서와 강의자료를 토대로 작성했습니다.
- 공식문서에 따르면 Spring Batch는 운영 환경에서 배치 애플리케이션을 개발할 수 있는 가벼운 프레임워크라고 소개하고 있습니다.
- 스프링 배치는 기존의 스케줄러를 대체하는 게 아니라 스케줄러와 함께 사용할 수 있도록 개발됐다고 합니다.
스프링 배치의 패턴
- Read: 데이터베이스, 파일, 큐에서 다량의 데이터 조회한다.
- Process: 특정 방법으로 데이터를 가공한다.
- Write: 데이터를 수정된 양식으로 다시 저장한다.
스프링 배치의 시나리오
- 배치 프로세스를 주기적으로 커밋
- 동시다발적인Job의배치처리,대용량병렬처리
- 실패후수동또는스케줄링에의한재시작
- 의존관계가 있는 step 여러 개를 순차적으로 처리
- 조건적 Flow 구성을 통한 체계적이고 유연한 배치 모델 구성
- 반복, 재시도, Skip 처리
스프링 배치 아키텍처
위의 그림대로 크게 세 가지의 주요 컴포넌트로 구성된다.
- Application
- Application은 jobs와 개발자가 스프링 배치를 이용해 작성한 코드들이 포함된다.
- Core
- Core는 배치 작업(job)을 실행하고 관리하기 위한 런타임 클래스들로 구성된다.
- JobLauncher, Job, Step, Flow 등이 속한다
- Batch Infeastructure
- Application, Core 모두 공통 Infrastructure 위에서 빌드한다.
- Job 실행의 흐름과 처리를 위한 틀을 제공함
- Reader, Processor Writer, Skip, Retry 등이 속한다
다음 시간에는 스프링 배치 의존성을 추가하고 스프링 배치의 기본 초기화 설정에 대한 글을 포스팅하겠습니다.