Spring Batch란 무엇인지 알아보자

노승철 ·2022년 8월 11일
1

Spring

목록 보기
3/3

💁🏻‍♂️ Spring Batch란?

batch는 일괄 처리라는 뜻을 가지고 있습니다.

일괄처리라는 것은 어떠한 내용들을 묶어서 한 번에 처리하는 것을 말합니다. 어떠한 내용들은 데이터가 될 것입니다.
즉, 대용량 데이터를 처리하는 경우에 Spring Batch를 사용합니다.
ex) 정산, 거래명세서, 회원 정리, 알림톡

또 다른 이유는 효과적인 로깅, 통계 처리, 트랜잭션 관리 등 재사용에 가능한 필수 기능을 지원합니다.
예외가 발생할 경우에도 방어할 기능이 존재합니다.


💁🏻‍♂️ Spring Batch 구조

  • Batch 구조 (Batch Application Style)

  • 실행 구조 (Run Tier)
    Application의 상호 의존적 스케줄링을 허용하고 병렬 처리 기능을 합니다.

  • 작업 구조 (Job Tier)
    전체적인 Job의 수행을 책임지고 Job내의 각 Step을 정책에 따라 순차적으로 수행합니다.

  • 응용프로그램 구조 (Application Tier)
    Job을 수행하는데 필요한 Component

  • 데이터 구조 (Data Tier)
    DB, 파일 또는 대기열을 포함할 수 있는 물리적 데이터 원본과의 통합을 제공합니다.


💁🏻‍♂️ Spring Batch 메타데이터 테이블 구조

Spring Batch 에서 제공하는 메타 데이터 스키마는 총 6개의 테이블로 이루어져 있습니다. 순서는 다음과 같습니다.

  • BATCH_JOB_INSTANCE - JOB의 생성 정보를 담는 테이블

    • JOB_INSTANCE_ID : JOB 고유 ID
    • VERSION : 버전정보
    • JOB_NAME : JOB 빌드 시 생성하는 이름
    • JOB_KEY : JOB 고유 키
  • BATCH_JOB_EXECUTION - JOB의 실행정보를 담는 테이블

    • JOB_EXECUTION_ID : JOB 실행 고유 ID
    • VERSION : 버전정보
    • JOB_INSTANCE_ID : JOB 고유 ID
    • CREATE_TIME : 생성 시간
    • START_TIME : 시작 시간
    • END_TIME : 종료 시간
    • STATUS : 실행 상태
    • EXIT_CODE : 종료 코드
    • EXIT_MESSAGE : JOB 수행 실패시 메세지
    • LAST_UPDATED : 최종 업데이트 시간
    • JOB_CONFIGURATION_LOCATION : JOB Config 설정 위치
  • BATCH_JOB_EXECUTION_PARAM - JOB에서 사용되는 파라미터 값 들을 담는 테이블

    • JOB_EXECUTION_ID : JOB 실행 고유 ID
    • TYPE_CD : 저장된 값의 Type (string, date, long, double)
    • KEY_NAME : 키
    • STRING_VAL : String 값
    • DATE_VAL : date 값
    • LONG_VAL : long 값
    • DOUBLE_VAL : double 값
    • IDENTIFYING : job instance 생성 시 관여 여부 플래그
  • BATCH_JOB_EXECUTION_CONTEXT - 작업 중 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블

    • JOB_EXECUTION_ID : JOB 실행 고유 ID
    • SHORT_CONTEXT : String 형태의 Conext
    • SERIALIZED_CONTEXT : serialized 된 context
  • BATCH_STEP_EXECUTION - Step의 실행 정보를 담는 테이블

    • STEP_EXECUTION_ID : Step 실행 고유 ID
    • VERSION : 버전정보
    • STEP_NAME : Step 이름
    • JOB_EXECUTION_ID : Job 실행 고유 ID
    • START_TIME : 시작시간
    • END_TIME : 종료시간
    • STATUS : 실행 상태
    • COMMIT_COUNT : 트랜잭션당 커밋 수
    • READ_COUNT : 조회한 아이템 수
    • FILTER_COUNT : 필터링 된 아이템 수
    • WRITE_COUNT : 저장된 아이템 수
    • READ_SKIP_COUNT : 조회 스킵한 아이템 수
    • WRITE_SKIP_COUNT : 저장 스킵한 아이템 수
    • PROCESS_SKIP_COUNT : 스킵 된 아이템 수
    • ROLLBACK_COUNT : 롤백 발생 횟 수
    • EXIT_CODE : 종료 코드
    • EXIT_MESSAGE : Step 수행 실패시 메세지
    • LAST_UPDATED : 최종 업데이트 시간
  • BATCH_STEP_EXECUTION_CONTEXT - Step에서 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블

    • STEP_EXECUTION_ID : Step 실행 고유 ID
    • SHORT_CONTEXT : String 형태의 Context
    • SERIALIZED_CONTEXT : Serializied된 전체 Context
profile
👨🏻‍💻 #developer#일상#공부#기록

1개의 댓글

comment-user-thumbnail
2023년 3월 8일

좋은 글 감사합니다 :D

답글 달기

관련 채용 정보