[Java Spring] 배치 처리와 Spring Batch

khj·2025년 5월 7일

Java

목록 보기
10/10
post-thumbnail

🧩 배치 처리란?

배치 처리(Batch Processing)는 일정한 시간 간격 또는 조건에 따라 여러 건의 데이터를 일괄 처리하는 방식입니다.


주로 다음과 같은 작업에 사용됩니다

  • 야간에 사용자 결제 내역 정산
  • 정기적인 로그 분석
  • 회원 등급 업데이트

⏱ 특징

  • 지연 허용: 처리 시간이 다소 걸려도 괜찮음
  • 대량 데이터 처리에 적합
  • 예약 기반 실행 (예: cron, 스케줄러)

⚡ 실시간 처리란?

실시간 처리(Real-Time Processing)는 이벤트 발생과 동시에 데이터를 처리하는 방식입니다.


예시

  • 사용자가 상품을 구매 → 즉시 재고 감소
  • 결제 요청 → 바로 승인 및 실패 처리
  • 센서 데이터 수신 → 곧바로 알림 전송

⚙ 특징

  • 즉각적 응답 필요
  • 낮은 지연시간이 핵심
  • 단건 처리 위주

🆚 배치 처리 vs 실시간 처리

항목 배치 처리 실시간 처리
처리 시점 예약/지정된 시간 이벤트 발생 즉시
처리 방식 대량 일괄 처리 단건 혹은 소량 처리
속도 요구 상대적으로 느려도 OK 빠른 응답 필수
사용 사례 정산, 리포트, 백업 등 결제, 알림, 트랜잭션 등
기술 예시 Spring Batch, Cron Kafka, Webhook, Socket

🧰 Spring Batch란?

Spring Batch는 스프링 생태계에서 제공하는 대규모 데이터 처리용 프레임워크입니다.


다음과 같은 기능을 제공합니다

  • 트랜잭션 기반 대량 데이터 처리
  • 병렬 처리 및 청크(chunk) 기반 반복 처리
  • 재시도, 스킵, 롤백 처리 전략
  • Job, Step 구조의 명확한 구성

🔧 Spring Batch 기본 구성 요소

  • Job: 하나의 배치 작업 단위. 여러 Step으로 구성됨
  • Step: 실제 처리 로직이 실행되는 단계. 하나의 Step은 아래의 구성으로 처리됨:
  • Reader: 데이터를 읽어옴 (DB, CSV 등)
  • Processor: 데이터 가공/변환
  • Writer: 데이터를 저장 (DB, 파일 등)
  • JobLauncher: Job을 실행하는 역할
  • JobRepository: Job 실행 상태, 이력 등을 저장

🧪 예시 코드

@Bean
public Job sampleJob(JobBuilderFactory jobBuilders, Step step1) {
    return jobBuilders.get("sampleJob")
            .start(step1)
            .build();
}

@Bean
public Step step1(StepBuilderFactory stepBuilders, ItemReader<MyData> reader,
                  ItemProcessor<MyData, MyData> processor, ItemWriter<MyData> writer) {
    return stepBuilders.get("step1")
            .<MyData, MyData>chunk(10)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .build();
}

📦 배치 처리 적용 예시

  • 매일 00시에 주문 데이터 취합 후 일간 매출 리포트 생성
  • 한 달 간 활동 내역 기반 회원 등급 갱신
  • 주기적으로 외부 API 데이터 수집 및 DB 저장
profile
Spring, Django 개발 블로그

0개의 댓글