1️⃣ Crontab (리눅스/유닉스 스케줄러)
정의:
- 리눅스/유닉스에서 정해진 시간, 주기마다 명령어나 스크립트를 자동 실행하는 기능.
- 백그라운드에서 주기적 작업을 수행할 때 사용.
기본 명령어:
crontab -e # 크론탭 편집 crontab -l # 크론탭 목록 확인 crontab -r # 크론탭 삭제
크론탭 문법:
* * * * * command_to_run
- - - - -
| | | | |
| | | | +---- 요일 (0-7, 0=일요일, 7=일요일)
| | | +------ 월 (1-12)
| | +-------- 일 (1-31)
| +---------- 시간 (0-23)
+------------ 분 (0-59)
예시:
# 매일 새벽 3시 실행
0 3 * * * /home/user/backup.sh
# 매 5분마다 실행
*/5 * * * * /home/user/check.sh
# 매주 월요일 오전 9시 실행
0 9 * * 1 /home/user/report.sh
2️⃣ 일반 배치(Batch) 처리
정의:
- 대량 데이터 또는 반복 작업을 일괄 처리하는 방식.
- 사용 예: 파일 처리, DB 데이터 갱신, 보고서 생성 등.
구성:
- 입력 데이터(Read)
- 처리 로직(Process)
- 출력 데이터(Write)
예시 (Java로 간단한 배치):
public class SimpleBatch {
public static void main(String[] args) {
List<String> data = Arrays.asList("A", "B", "C");
for (String item : data) {
String processed = item.toLowerCase();
System.out.println("Processed: " + processed);
}
}
}
- 스크립트 배치: shell, python 등으로도 가능.
- 정기 실행: 위에서 설명한 crontab으로 실행 가능.
3️⃣ Spring Batch
정의:
- Spring에서 제공하는 배치 처리 프레임워크.
- 대용량 데이터 처리, 트랜잭션 관리, 잡 재시도, 로그 관리, 스케줄링까지 지원.
- Job → Step → Chunk 단위 처리 구조를 가짐.
Spring Batch 구조:
Job
└─ Step
└─ Chunk (읽기 → 처리 → 쓰기)
주요 컴포넌트:
- Job: 배치 작업 전체
- Step: Job 내 실행 단위
- ItemReader: 데이터 읽기
- ItemProcessor: 처리 로직
- ItemWriter: 데이터 쓰기
예시 (Spring Batch 간단 설정):
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job sampleJob() {
return jobBuilderFactory.get("sampleJob")
.start(sampleStep())
.build();
}
@Bean
public Step sampleStep() {
return stepBuilderFactory.get("sampleStep")
.<String, String>chunk(3)
.reader(() -> "data")
.processor(item -> item.toUpperCase())
.writer(items -> items.forEach(System.out::println))
.build();
}
}
실행 방법:
- Spring Boot 앱 실행 시 Job 자동 실행 가능.
- 스케줄링 추가: @EnableScheduling + @Scheduled 사용.
💡 정리 비교
| 구분 | 특징 | 장점 | 단점 |
| Crontab | OS 레벨, 정기 실행 | 단순, OS 기본 | 로직 관리 어려움 |
| 일반 배치 | 수동/스크립트 기반 | 유연, 간단 | 트랜잭션/재시도 기능 없음 |
| Spring Batch | 프레임워크 기반 | 트랜잭션, Chunk, Job 관리 가능, 재시도, 병렬처리 | 러닝커 |