[Spring Batch] 배치처리란 무엇인가? :: 잡다한 프로그래밍
반응형

배치 처리란 무엇인가?

대부분의 애플리케이션 로직은 웹 요청을 받고 즉시 응답하는 형태(Online Transaction Processing)로 구성되어 있다.
하지만 서비스가 일정 규모를 넘어서면 대량의 데이터를 한 번에 처리해야 하는 작업이 필연적으로 등장한다.

예를 들어:

  • 매일 0시에 실행되는 일일 정산
  • 월간 리포트 생성
  • 로그 분석 및 통계 집계
  • 데이터 마이그레이션
  • DB 백업 및 정제 작업

이처럼 지정된 시점에 대량의 데이터를 자동으로 처리하는 방식이 바로 배치 처리(batch processing)다.


왜 배치 처리가 필요한가?

웹 애플리케이션(REST API) 방식만으로는 대응하기 어려운 경우가 있다.
몇 가지 대표적인 문제를 보면 배치의 필요성이 명확해진다.

1) 대량 데이터 처리의 비효율성

웹 요청은 일반적으로 한 번에 소량의 데이터를 처리한다.
하지만 수백만 건 이상의 데이터를 연속적이고 안정적으로 처리하려면 별도의 처리 구조가 필요하다.

2) 정기적/반복적 작업 자동화

매일 반복되는 데이터 집계나 백업을 사람이 직접 실행할 수는 없다.
배치가 이런 작업을 스케줄링 기반으로 자동화한다.

3) 시스템 부하 관리

실시간 API에서 대량 데이터를 처리하면 서버 자원이 급격히 소모될 수 있다.
배치는 보통 **비사용 시간대(야간)**에 실행되어 서비스 운영과 분리된다.

4) 높은 신뢰성과 복구 가능성

장시간 실행되는 작업은 도중에 실패할 가능성이 높다.
배치는 체크포인트, 재시작, 재시도 등 복구 기능이 내장되어 있어 안정적이다.


웹 애플리케이션과 배치의 차이

구분웹 애플리케이션배치 애플리케이션

 

구분 웹 애플리케이션 배치 애플리케이션
실행 방식 요청 시 즉시 실행 스케줄 기반 자동 실행
처리량 소량 데이터 대량 데이터
응답 시간 짧아야 함 길어도 됨
에러 처리 바로 반환 재시도·체크포인트·재시작
리소스 항상 켜져 있음 작업 시에만 동작
목적 사용자 중심 기능 제공 시스템 데이터 처리 및 관리

웹과 배치는 서로 대체 관계가 아니라 서로를 보완하는 구조다.
서비스 사용자에게 필요한 기능은 웹에서 제공하고,
서비스 운영을 위해 필요한 대량 처리 작업은 배치가 담당한다.


스프링 배치(Spring Batch)를 사용하는 이유

스프링 배치는 배치 작업을 표준화하고 안정적으로 실행하기 위한 프레임워크이다.
일반적으로 배치 처리를 직접 구현하면 다음 요소들을 모두 직접 만들어야 한다:

  • Reader / Writer / Processor 구성
  • 스케줄링
  • 재시도 및 예외 처리
  • 트랜잭션 관리
  • 상태 관리 및 체크포인트
  • 실패 시 재시작 로직
  • 모니터링

스프링 배치는 이러한 기능을 이미 잘 정립된 설계 패턴과 구조로 제공한다.

핵심 구성 요소

  • Job: 배치 작업 전체 단위
  • Step: Job 내부의 실행 단위
  • ItemReader: 데이터 읽기
  • ItemProcessor: 처리/변환
  • ItemWriter: 저장
  • JobRepository: 실행 정보 저장
  • JobLauncher: Job 실행

덕분에 개발자는 비즈니스 로직에만 집중할 수 있다.


스프링 배치의 주요 특징

1) 대용량 처리에 최적화된 구조

Chunk 단위로 데이터를 잘라서 처리함으로써
메모리 사용량을 제어하고 일정한 처리 속도를 유지한다.

2) 강력한 트랜잭션 및 복구 기능

  • 체크포인트
  • Step 재시작
  • 실패 이력 관리
  • 재시도/Skip 정책

대량 처리 중간에 장애가 나도, 처음부터 다시 하지 않고 중단된 지점부터 재개할 수 있다.

3) 다양한 데이터 소스 지원

CSV, XML, JSON, JDBC, JPA, MongoDB, Redis 등
거의 모든 데이터 저장소와 연동할 수 있다.

4) 확장성

  • 멀티스레드 Step
  • 병렬 Step
  • 여러 서버에서 배치처리를 동시에 분산 처리(Partitioning)

 

정리

배치 처리는 서비스가 커질수록 반드시 필요해지는 영역이다.
그리고 스프링 배치는 이 배치 작업을 안정적이고 일관된 방식으로 구현할 수 있도록 도와준다.

핵심은 다음과 같다:

  • 배치는 대량 데이터 자동 처리를 위한 구조
  • 웹과 배치는 목적이 다르며 서로를 보완한다
  • 스프링 배치는 배치 처리의 모든 패턴을 표준화된 방식으로 제공한다
  • 재시작/실패 복구/트랜잭션 등 복잡한 로직을 프레임워크가 책임진다
  • 개발자는 비즈니스 로직에만 집중할 수 있다

배치를 처음 접하더라도, 위 개념들을 이해하면
스프링 배치로 안정적인 데이터 처리 시스템을 만들 수 있다.

반응형

+ Recent posts