Spring Batch의 기본 정의

LeeYulhee·2023년 7월 21일
0

👉 Spring Batch란?


  • 일괄 처리 작업을 위한 프레임워크로, 일괄 처리 작업을 쉽게 구현할 수 있도록 도와주는 도구
    • 일괄 처리란, 사용자의 개입 없이 대량의 데이터를 자동으로 처리하는 것
    • 예를 들면, 매일 밤 자동으로 수천 개의 은행 거래를 처리하거나, 웹사이트의 로그 데이터를 분석하여 통계를 생성하는 것
  • 작업을 여러 단계로 나누고, 각 단계를 순서대로 실행하며, 필요한 경우 데이터를 읽고 쓰는 기능을 제공
  • 대량의 데이터를 처리하는 데 사용되는 Spring 프레임워크의 확장 모듈
  • 대용량 데이터 처리, 통계 정보 수집, 데이터 마이그레이션 등의 작업에 주로 사용


👉 Spring Batch가 필요한 이유


  • 일괄 처리 작업은 대량의 데이터를 처리해야 하고, 오랜 시간이 걸릴 수 있으며, 중간에 오류가 발생하면 처음부터 다시 시작해야 할 수도 있음
    • 이러한 작업을 수동으로 처리하는 것은 매우 비효율적이고 오류가 발생하기 쉬움
  • 이러한 문제를 해결하기 위해 만들어진 Spring Batch는 대량의 데이터를 효율적으로 처리할 수 있으며, 오류가 발생하면 해당 단계부터 다시 시작할 수 있음
  • 작업을 정기적으로 자동으로 실행할 수 있도록 스케줄링 기능도 제공


👉 Spring Batch는 어떤 식으로 사용할까?


  • 먼저, Job을 정의해서 사용
    • Job은 일괄 처리 작업을 나타내며, 하나 이상의 Step으로 구성
    • Step은 작업의 개별 단계를 나타내며, 데이터를 읽고, 처리하고, 쓰는 작업을 수행
  • 사용 예시
    • CSV 파일에서 데이터를 읽어서 데이터베이스에 저장하는 Job을 만들 수 있음
    • 이 Job은 두 개의 Step으로 구성될 수 있음
    • 첫 번째 Step에서는 CSV 파일에서 데이터를 읽고, 두 번째 Step에서는 읽은 데이터를 데이터베이스에 저장
      • Spring Batch는 이러한 Job을 실행하고 관리하는 기능을 제공
      • 예를 들어, Job을 정기적으로 실행하거나, 오류가 발생하면 해당 Step부터 다시 시작하는 등의 기능을 제공


👉 Spring Batch 기능


  • Chunk 기반 처리
    • Spring Batch는 데이터를 작은 덩어리, 즉 'chunk'로 분할하여 처리
    • 이는 메모리 효율성을 높이고, 실패한 작업을 다시 시작할 때 유용
  • 트랜잭션 관리
    • 각 chunk의 처리를 하나의 트랜잭션으로 관리
    • 이는 데이터 일관성을 보장하며, 실패한 작업을 쉽게 다시 시작할 수 있게 함
  • Job 처리와 관리
    • Job이라는 개념을 사용하여 일괄 처리 작업을 정의하고 관리
    • Job은 여러 Step으로 구성되며, 각 Step은 독립적인 작업 단위
  • 스케줄링
    • Quartz, Tivoli, Control-M 등의 스케줄러와 통합하여 작업을 정기적으로 실행할 수 있음
  • 오류 처리와 로깅
    • 오류 처리와 로깅 기능을 제공하여, 작업 중 발생하는 문제를 쉽게 추적하고 해결할 수 있음
  • 재시작과 재시도
    • 실패한 작업을 자동으로 재시작하거나 재시도하는 기능을 제공
  • 병렬 처리
    • 멀티 쓰레드 환경에서 작업을 병렬로 처리하는 기능을 제공
    • 이는 대량의 데이터를 빠르게 처리하는 데 유용


👉 알게된 점 및 느낀 점


✔️ batch size 설정에 대해 알아보다가 Spring Batch를 알게 되었는데, 둘은 전혀 다르다는 것을 뒤늦게 깨달았다.
✔️ 그래도 Spring Batch라는 것이 있다는 것을 알게 되어 필요할 때 찾아볼 수 있게 되었다.

profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글