본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
스프링 배치
Spring Boot Batch 란?
- 대량의 데이터를 처리하는 작업을 의미하며 이를 ‘자동화’하여 ‘시스템의 부하를 줄이고 효율적인 데이터 처리’를 가능하게 하는 프레임워크를 의미합니다.
- Spring Boot Batch 라이브러리로 설치를 하면 ‘스프링 스케줄러’도 함께 사용이 가능합니다.
배치 프로그램(Batch Program)이란?
- ‘대량의 데이터를 처리하는 작업을 자동화’하는 프로그램을 의미합니다.
이러한 작업들은 보통 ‘스케줄러’를 이용하여 특정시간에 수행하도록 구성합니다.
- 예를 들어 매일 밤 12시에 일괄적으로 데이터를 업데이트하는 작업이 배치 프로그램의 예시입니다.
스케줄러(Scheduler)란?
- 일정한 시간 간격으로 반복적으로 수행되거나 특정 시간에 수행되도록 예약해 놓은 작업을 자동으로 실행해 주는 시스템입니다.
- 스케줄러를 이용하면 주기적으로 반복되는 일일 업무나 특정 시간에 실행해야 하는 작업 등을 자동으로 처리할 수 있습니다
배치 프로그램과 스케줄러는 동일한 것이 아닌가?
- 비슷한 기능을 가지고 있지만 동일한 것은 아닙니다. 실행방법과 목적에 큰 차이가 있습니다.
- 배치 프로그램은 일괄 처리를 위한 프로그램이며 ‘정해진 시간에 실행되지 않고 사용자의 명령이 있을 때 실행’합니다.
- 스케줄러는 ‘정해진 시간에 자동으로 실행’되는 프로그램이며 ‘주기적으로 실행되는 작업’을 설정할 수 있습니다.
Spring Boot Batch 라이브러리를 종속성으로 추가하고 스케줄러를 이용하려면 또 추가를 해야 하는가?
- 아닙니다. Spring Boot Batch 라이브러리로 설치를 하면 ‘스프링 스케줄러’도 함께 사용이 가능합니다.
배치 사용 목적
- 대량 데이터 처리: 대규모 데이터베이스, 로그 파일, CSV 파일 등에서 ‘데이터 추출 및 처리’를 위해 사용됩니다.
- 자동화된 작업 처리: 스케줄러를 이용하여 주기적으로 ‘반복되는 작업’ 자동 처리를 위해 사용됩니다.
- 분산 처리: 여러 서버에서 대량의 ‘데이터 처리 가능’을 위해 사용됩니다.
- 재시도 및 로깅: 데이터 처리 중 오류 발생 시 ‘자동 재시도 및 로깅 기능’ 지원을 위해 사용됩니다.
- 데이터 분석: 데이터 마이그레이션, 백업 및 복원, 데이터 분석 등 다양한 용도로 사용됩니다.
배치 주요 기능
- Job과 Step을 이용한 배치 프로세스 구현: 배치 처리의 단위 작업(Job)과 작은 단위 작업(Step)을 이용하여 배치 프로세스를 구현하는 기능을 제공합니다.
- Chunk 지향 처리 방식을 통한 대용량 데이터 처리: Chunk 단위로 데이터를 처리하여 대용량 데이터 처리 기능을 제공합니다.
- Quartz, Cron 등의 스케줄러를 이용한 배치 작업 스케줄링: 스케줄러를 이용하여 배치 작업을 주기적으로 실행하도록 스케줄링을 제공합니다.
- Batch 작업에 대한 로깅과 예외 처리 기능 제공: Batch 작업 수행 중 로깅과 예외 처리를 지원하여 안정적인 배치 작업 제공합니다.
Chunk 지향 처리 방식
대용량 데이터를 처리하는 데 있어서 ‘메모리 사용량을 최소화’하고 ‘대용량 데이터를 작은 Chunk 단위로 나누어 처리’하는 방식입니다.
Quartz
Java 기반의 오픈 소스 ‘스케줄링 라이브러리’이며 특정 시간에 작업을 자동으로 실행하도록 예약을 할 수 있도록 기능을 제공합니다.
Cron
Cron은 리눅스와 유닉스 계열 운영체제에서 사용되는 예약 작업 ‘스케줄링 시스템’입니다. 특정 시간에 실행되어야 하는 작업을 정의하는 데 사용됩니다.
Spring Boot Batch 프로세스 및 용어
1. 전체 프로세스
- Job Launcher로 Job을 실행합니다. (Job Launcher -> Job)
- Job은 Step을 통해 실제 배치처리를 수행합니다. (Job → Step)
- Step에서는 읽어오고(Item Reader) → 처리하고(Item Processor) → 저장(Item Writer)을 수행합니다. (Step → Item Reader, Processor, Writer)
2. Job
- 하나 이상의 Step으로 구성이 되며 ‘배치 처리의 최상위 단위’를 의미합니다.
- 실행 시점에 파라미터를 전달받을 수 있으며 실행 결과를 반환할 수 있습니다.
- 1개의 Job은 1개 이상의 Step으로 구성되어 있습니다.
3. Step
- 실제로 배치 처리를 ‘수행’하는 단위를 의미합니다. Spring Batch Job안에는 한 개 이상의 Step으로 구성되어 있습니다.
- Step에서는 하나의 작업만 처리를 수행하는 ‘Tasklet’ 방식 또는 Reader-Processor-Writer 묶음으로 여러 작업을 처리를 하는 ‘Chunk’ 방식이 있습니다
Spring Boot Batch의 종류
Tasklet 방식
- Batch의 Step 단계에서 ‘단일한 레코드(row)’나 ‘파일’을 하나의 작업만 처리하는 방식을 의미합니다. 해당 모델에서는 처리는 각각의 처리를 하나의 트랜잭션에서 처리합니다.
- 일반적으로 파일을 읽고 처리한 다음 결과를 데이터베이스에 쓰는 등의 작업을 수행합니다.
- 단일 작업을 처리하기 때문에 작업이 끝날 때까지 대기해야 합니다. 그렇기에 대용량 데이터 처리에는 적합하지 않습니다.
'패스트캠퍼스 강의' 카테고리의 다른 글
[25일차] 50일 포트폴리오 챌린지 (0) | 2023.09.01 |
---|---|
[24일차] 50일 포트폴리오 챌린지 (1) | 2023.08.31 |
[22일차] 50일 포트폴리오 챌린지 (0) | 2023.08.29 |
[21일차] 50일 포트폴리오 챌린지 (0) | 2023.08.28 |
[20일차] 50일 포트폴리오 챌린지 (1) | 2023.08.27 |