Spring Batch의 기본

모두·2025년 3월 24일

오늘은 Spring Batch에 대해서 이해해보는 글을 작성해보려 한다.

배치 프로세싱의 개념

  • 배치 처리(Batch Processing)란

    • 대량의 데이터를 일괄 처리하는 방식

    • 주기적 또는 조건에 따라 한 번에 여러 작업을 처리

    • 사용 시점: 실시간 처리가 필요하지 않은 작업에 사용. 대개 많은 양의 데이터를 처리해야 할 때 적합함

    • 전통적인 용도: 금융 시스템의 일괄 결산, 통계 데이터 생성, 대규모 파일 처리, 대량 데이터 마이그레이션 등에 주로 사용

    • 실시간 처리와의 차이점: 실시간 처리는 빠른 응답성을 요구하는 반면, 배치 처리는 미리 정의된 시간에 주기적으로 작업이 실행되며, 즉각적인 응답성보다는 안정성과 대량 처리가 중요

Spring Batch 소개

  • 스프링 프레임워크의 일부로, 배치 처리에 필요한 다양한 기능을 제공하는 오픈소스 프레임워크
  • 재사용 가능한 컴포넌트를 통해 복잡한 배치 작업을 간단하게 구성하고 관리
  • 사용 목적
    • 대규모 데이터 처리 및 스케줄링, 데이터베이스 읽기/쓰기, 트랜잭션 관리 등을 쉽게 구현할 수 있도록 지원
    • 트랜잭션 관리, 체크포인트 설정, 에러 Retry 등 다양한 확장 가능성 제공

Spring Batch의 아키텍처

  • Job
  • Step
  • Job Repository
  • Job Launcher
  • Job Configuratio

Spring Batch의 아키텍처 : Job Launcher

• Job을 실행하는 데 사용되는 클래스
• 외부 이벤트 또는 스케줄러에 의해 실행될 수 있음

Spring Batch의 아키텍처 : Job

• 배치 처리의 기본 단위로, 여러 Step을 묶어서 하나의 작업 흐름을 정의
• 실행되는 Job은 JobRepository에 저장되어 상태를 관리

Spring Batch의 아키텍처 : Step

• Job 내부의 세부 작업 단위
• Step은 작업을 구성하는 하나의 모듈로서, 각 Step은 별도로 설정 가능

• Chunk 기반 처리: 대량의 데이터를 작은 단위(Chunk)로 나누어 일괄 처리
• Tasklet 기반 처리: 하나의 단일 작업을 처리하는 간단한 방식\

Spring Batch의 아키텍처 : Job Repository

• Job과 Step의 실행 상태와 메타데이터를 관리하는 저장소
• 각 Job의 성공/실패 여부, Step의 실행 상태, 오류 발생 시점 등을 기록
• Job이 재시작되거나 중단된 이후에 다시 실행해야 하는 경우, JobRepository를 참조하여 해당 Job을 이전 상태로 복구

Spring Batch의 아키텍처 : Job Configuration

• XML 또는 Java 기반 설정을 통해 Job과 Step의 구성 요소를 정의
• 스프링의 DI(Dependency Injection)를 활용하여 설정 가능

Spring Batch 작업의 일반적인 흐름

• 데이터 소스에서 읽기(Read)
• 데이터 처리(Process)
• 데이터 저장소에 쓰기(Write)
• Chunk 기반 트랜잭션 처리

• READ -> PROCESS -> WRITE -> COMMIT

0개의 댓글