[Spring Batch] 01. Spring Batch 기본 개념

2024. 11. 13. 15:02·공부/Spring Boot

Batch 작업이란?

정해진 시간이나 조건에 따라 대량의 데이터를 한꺼번에 처리하는 작업을 의미한다.

실시간 요청과는 다르게, 독립적으로 백그라운드에서 수행되며 대규모의 데이터 처리나 반복적인 작업을 효율적으로 수행하기 위해 사용된다. 배치 작업은 다음과 같은 특징을 가진다.

  1. 주기적인 실행 : 특정 시간마다(하루에 한번, 주마다 등) 주기적으로 실행된다.
  2. 대량 데이터 처리 : 대규모의 데이터를 처리하는데 사용된다.
  3. 비동기적 처리 : 사용자의 즉각적인 응답이 필요하지 않아, 백그라운드에서 비동기적으로 처리된다.
  4. 에러 관리 및 복구 : 배치 작업 중에 발생하는 에러를 관리하고, 필요 시 작업을 재시도하거나 복구할 수 있는 매커니즘을 가진다.
  5. 스케쥴링 : 스케쥴러에 의해 실행된다.

배치 작업은 금융, 제조, 통신, 전자상거래 등 많은 산업 분야에서 대량의 데이터를 효율적이고 정기적으로 처리하는 상황에서 사용된다.


Spring Batch

Spring Batch란?

Spring Batch는 이러한 Batch 작업을 효율적으로 수행하기 위해 설계된 프레임워크로 DB, 파일, 메세징 시스템 등 다양한 데이터 소스와 연동할 수 있으며, 대량 데이터 처리와 트랜잭션 관리를 쉽게 할 수 있도록 구성되어 있다.

Spring Batch 주요 개념

1. Job

하나의 배치 작업 단위를 의미한다. Job은 전체 배치 작업의 최상위 개념이며, 여러 단계로 구성된다.

2. Step

Job의 세부 단위로, 실제로 배치 작업이 수행되는 단위이다. 각 Step은 독립적인 트랜잭션으로 실행된다.

Step은 Tasklet 또는 Chunk 처리방식을 지원한다.

  • Tasklet : 하나의 큰 덩어리로 해당 스텝을 처리하는 방법. 해당 스텝이 단일 트랜잭션으로 처리되며 구현이 간단하여 단순 작업이나 반복이 필요없는 작업에서 사용한다.
  • Chunk : 데이터를 청크 단위로 나누어, 각 청크를 하나의 트랜잭션으로 처리하는 방법. 실행 중 오류가 나도 해당 청크만 롤백되며, 대용량의 데이터 처리를 안정적으로 수행할 수 있다. ItemReader, ItemProcessor, ItemWriter로 이루어져 있으며 읽기 → 처리 → 저장 단계로 데이터를 처리한다.

3. JobLauncher

Job을 실행하는 역할을 하며, 보통 스케쥴러를 통해 정해진 주기로 실행하거나, 특정 이벤트가 발생될 때 실행되도록 설정할 수 있다.

4. JobRepository

Job의 상태를 저장하고 관리하는 역할을 하며, Job의 실행 이력과 실패, 성공 여부 등의 실행 상태를 관리하여 Job의 재시작, 중단 등을 지원한다.


Spring Batch 구조

Spring Batch 구조도

 

위 그림은 spring batch 의 기본적인 구조를 작성한 것이다.

JobLauncher를 통해 Job이 실행되고, Job이 실행되면 Chunk 또는 Tasklet 으로 구성된 Step들이 실행되게 되고, 해당 Job과 Step 들의 실행 정보를 JobRepository 를 통해 DB에 저장하고 조회한다.

JobRepository에 저장된 실행 정보등을 통해 어플리케이션이 재시작되거나, 장애가 발생하여 Job이 중단되더라도 재실행 또는 이어서 실행이 가능하게 된다.

저작자표시 비영리 변경금지 (새창열림)

'공부 > Spring Boot' 카테고리의 다른 글

[Database] 02. JPA  (0) 2024.11.14
[Database] 01. JDBC  (0) 2024.11.13
[스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (2)  (0) 2022.12.22
[스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (1)  (0) 2022.12.21
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (3)  (0) 2022.12.17
'공부/Spring Boot' 카테고리의 다른 글
  • [Database] 02. JPA
  • [Database] 01. JDBC
  • [스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (2)
  • [스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (1)
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    Entity
    mapstruct
    스프링 부트
    예외
    클러스터
    스프링부트
    Java
    클론코딩
    REST API
    리액트
    OpenAI API
    react
    쿠버네티스
    백준
    chat GPT
    인스타그램
    spring boot
    티스토리챌린지
    MSA
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Spring Batch] 01. Spring Batch 기본 개념
상단으로

티스토리툴바