Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (87)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (2)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • String StringBuilder 차이
  • MySQL
  • 개발일기
  • 알고리즘 예제
  • 알고리즘 블로그
  • 코딩테스트
  • 코딩테스트 준비
  • 크레인 인형뽑기 정답
  • 프로그래머스
  • 카카오 블라인드
  • 알고리즘 문제
  • 초보자 알고리즘
  • 알고리즘 연습문제
  • 프로그래머스 문제풀이
  • 프로그래머스 코딩연습
  • 카카오 블라인드 테스트
  • 자바 알고리즘 연습문제
  • 알고리즘 쉬운문제
  • 프로그래머스 연습문제
  • 크레인 인형뽑기
  • 코딩테스트 문제
  • 크레인 인형뽑기 풀이
  • level1
  • programmers level 1
  • programmers
  • 코딩테스트 문제 풀이
  • 자바 쉬운 알고리즘
  • 알고리즘 풀이
  • 카카오공채
  • 프로그래머스 레벨1

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

Spring Batch 기본 구조
BACK-END/Spring

Spring Batch 기본 구조

2023. 4. 10. 10:44
728x90

구조설명

앞서 Spring Batch 시작하기에서 설명했던 대로 실행을 해보면 Bean만 생성했을 뿐인데, 자동으로 실행이 된다.

그 이유를 아래 내부 구조 그림으로 이해해보자

Spring Batch 공식 가이드 문서의 구조 이미지

Spring Batch는 Bean이 생성되면 JobLauncher 객체에 의해서 Job을 수행한다.

1. JobLauncher

2. Job

3. Step

 

JobRepository는 데이터베이스나 메모리에 스프링 배치가 실행될 수 있도록 메타데이터를 관리하는 클래스이다.

전반적인 데이터를 관리하기 위한 용도로 사용되는 클래스라고 이해하면 될 것 같다.

 

Job

  • Job은 JobLauncher에 의해 실행
  • Job은 배치의 실행 단위를 의미
  • Job은 N개의 Step을 실행할 수 있으며, 흐름(Flow)을 관리할 수 있음.
    • ex. A Step을 실행 후, 조건에 따라 B Step 또는 C Step을 실행하도록 설정할 수 있다.

Step

  • Job의 세부 실행 단위이며, Job은 최소 1개 이상의 Step으로 구성
  • Step의 실행 단위는 크게 2가지로 나뉨
    • Task 기반: 하나의 작업 기반으로 실행
      • 처리 대상이 한 번에 실행해도 컴퓨터 자원에 문제가 없을 때 사용.
    • Chunk 기반: 하나의 큰 덩어리를 n개씩 나눠서 실행 (chunk = 덩어리 라는 뜻을 가짐)
      • 10,000건의 데이터를 을 1,000건 씩 나눠서 처리한다면 Chunk
      • 일반적으로 Task방식 보다 Chunk방식을 선호한다. 그 이유는 데이터를 묶어서 처리하기 때문에 대용량 데이터 처리에 적합하기 때문이다.
  • ItemReader : 배치 처리 대상 객체를 읽어 ItemProcessor 또는 ItemWriter에게 전달
  • ItemProcessor: input 객체를 output 객체로 filtering 또는 processing해 ItemWriter에게 전달
    • ex) ItemReader에서 읽은 데이터를 수정 또는 ItemWriter 대상인지 filtering 한다.
    • ItemProcessor는 optional하다. (있을 수도 있고 없을 수도 있다는 의미)
    • ItemProcessor가 하는 일은 ItemReader 또는 ItemWriter가 대신할 수 있다.
  • ItemWriter: 배치 처리 대상 객체를 최종 처리
    • 예를 들면, DB Update를 하거나, 처리 대상 사용자에게 알림을 보낸다.
728x90
저작자표시 (새창열림)

'BACK-END > Spring' 카테고리의 다른 글

Spring Batch 시작하기  (0) 2023.02.19
REST API 디자인 가이드  (1) 2022.10.27
[Spring Batch] Scheduled cron Expression 크론 표현식  (3) 2022.03.16
[Spring Boot] Failed to determine a suitable driver class 에러  (0) 2021.12.14
    'BACK-END/Spring' 카테고리의 다른 글
    • Spring Batch 시작하기
    • REST API 디자인 가이드
    • [Spring Batch] Scheduled cron Expression 크론 표현식
    • [Spring Boot] Failed to determine a suitable driver class 에러
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바